معماری و امنیت دروازه API
TL ؛ دکتر متخصص
دروازه API تنها نقطه سیاست (authz، rate، transformation، audit) و مرز اعتماد بین دنیای خارج و خدمات است. موفقیت توسط: Zero-Trust (mTLS/JWT)، سیاست به عنوان کد، مدیریت ترافیک مبتنی بر SLO و قابلیت مشاهده متعامد. ساخت: دروازه لبه → BFF → مش سرویس ؛ حفظ نسخه و ویژگی های پرچم; خودکار حفاظت از webhooks و کلید تست انتشار canary.
1) نقش ها و الگوهای قرار دادن
دروازه لبه/API (شمال-جنوب): مرز بیرونی. TLS ختم، WAF، DDoS، authN/Z، نرخ/سهمیه، CORS، تحولات، کش، webhooks.
BFF (Backend-for-Frontend): لایه سفارشی سازی برای مشتریان خاص (وب/موبایل/شرکا). طرح ها، تجمع ها، محدودیت ها، ذخیره سازی پاسخ.
دروازه داخلی (شرق و غرب )/ورود سرویس مش: مجوز سرویس به سرویس داخلی، mTLS، مسیریابی سیاست.
دروازه gRPC/REST/GraphQL: نقطه تک پروتکل مترجم و مدارهای اعتبار سنج.
Anti-patterns: «all through one monolithic gateway without isolation of environments», «hidden business logic in plugins», «manual rule management».
2) مدل اعتماد و احراز هویت
TLS 1. 2+/1. 3 در محیط، HSTS در حوزه های عمومی ؛ در داخل - mTLS بین دروازه و خدمات.
OAuth2/OIDC: کد مجوز (PKCE) برای مشتریان ؛ اعتبار مشتری برای ادغام سرور ؛ JWT با TTL کوتاه و چرخش کلید (JWKS).
امضای HMAC برای ادغام شرکا و وب سایت ها (کلید مشتری، SHA-256/512، تأیید برچسب زمان و ضد پخش).
کلید های API - فقط به عنوان یک عامل اضافی/برای ردیابی ؛ محدوده محدوده، IP، مدت.
- AuthN (چه کسی) و AuthZ (چه چیزی می توانید) را جدا کنید. استفاده از ویژگی های (حوزه، نقش، مستاجر، پرچم خطر).
- تمام نشانه با AUD/ISS/EXP/NBF هستند; ساعت کج و معوج ≤ 60S; بچه اجباری و کش JWKS ≤ 5 دقیقه.
3) مجوز و سیاست (صفر اعتماد)
ABAC/RBAC در دروازه: قوانین بیش از ادعا + زمینه درخواست (IP/ASN/geo/tenant).
Policy-as-Code (به عنوان مثال OPA/Rego): ذخیره قوانین در Git، اعتبار سنجی CI، محاسبات canary.
چند اجاره نامه: جداسازی توسط «X-Tenant-Id»، SSO در مرز مستاجر ؛ سهمیه/محدودیت در هر مستاجر.
4) مدیریت ترافیک و قابلیت اطمینان
محدود کردن نرخ: سطل نشت/رمز، دانه دانه: کلید/مستاجر/مسیر/BIN/کشور (برای API های پرداخت).
سهمیه: روز/ماه، جداگانه برای عملیات سنگین (به عنوان مثال، گزارش).
کنترل پشت سر هم و کنترل پویا بر اساس بار و SLO.
قطع کننده مدار: باز کردن خطاها/تأخیر ؛ تشخیص بیرونی توسط بالادست.
تلاش مجدد با عقب نشینی + jitter ؛ idempotency: کلید 'Idempotency-Key' + پنجره TTL + ذخیره سازی نتیجه.
زمانبندی: مشتری <دروازه <بالادست ؛ نقاط مرجع منطقی p95 (به عنوان مثال 1. 5S/3S/5S).
Failover/Canary:٪ -routing (وزن)، جلسه وابستگی اختیاری، آبی/سبز.
5) تحولات و اعتبار سنج
طرحوارهها: طرحوارۀ OpenAPI/JSON برای REST ؛ Protobuf برای gRPC ؛ SDL برای GraphQL اعتبار سنجی درخواست/پاسخ در دروازه.
جابجایی gRPC↔REST، فدراسیون GraphQL (برای BFF).
نرمال سازی هدر (ردیابی، هدر های امنیتی)، فیلتر پاسخ (نسخه PII).
CORS: لیست های سفید، «Vary» درست، ممنوعیت «درخواست مجوز».
فشرده سازی и ذخیره سازی پاسخ (ETag/Cache-Control) для safe-GET.
6) امنیت محیط
WAF: قوانین OWASP Top-10، مدل مثبت برای مسیرهای بحرانی، تکه های مجازی.
حفاظت از ربات: امضای مبتنی بر نرخ، اثر انگشت دستگاه، captchas محافظت شده برای نقاط پایانی عمومی.
سپر DDoS: بالادست (ابر) + محدودیت های محلی ؛ لیست بلوک های geo/ASN
CSP/Referrer-Policy/X-Frame-Options - اگر دروازه در خدمت استاتیک/ویدجت باشد.
WebSockets/SSE/WebTransport: پروفایل های محدودیت و زمان جداگانه ؛ تمدید خودکار توسط نشانه.
7) Webhooks: امنیت و تحویل
هر گیرنده راز خود را دارد. امضا 'HMAC (امضا، برچسب زمانی' مسیر 'بدن) ؛ پنجره زمانی معتبر (به عنوان مثال، 5 دقیقه).
Idempotence در پذیرش: dedup توسط «event _ id».
Retrai: نمایی، حداکثر N ؛ status-endpoint برای لرزش دست.
mTLS/اجازه لیست IP ؛ امکان بازپخش در صورت تقاضا با محدودیت
8) قابلیت مشاهده و حسابرسی
سیاهههای مربوط: اسرار/PAN/PII را وارد نکنید ؛ همبستگی با 'trace _ id '/' span _ id'; ماسک زدن
معیارهای: RPS، میزان خطا در کلاس، تاخیر p50/p95/p99، مدارهای باز، میزان تکرار، 4xx در مقابل 5xx، اشباع.
مسیرهای پیاده روی: زمینه ردیابی W3C ؛ «traceparent »/« tracestate» را به بالادست پرتاب کنید.
ممیزی: جدا «چه کسی و چه نامیده می شود/تغییر» جریان، ذخیره سازی غیر قابل تغییر ؛ رویدادهای سیاسی (دسترسی ممنوع، سهمیه ای).
9) اسرار و رمزنگاری
ذخیره سازی کلیدی: KMS/Vault، چرخش هر 90 روز (یا بیشتر)، نقش خواندن جداگانه.
گواهینامه ها: شماره خودکار/به روز رسانی (ACME)، پینینگ برای تلفن همراه (احتیاط TOFU/HPKP مانند).
چرخش JWKS: دو کلید فعال (قدیمی/جدید)، پنجره های رول روشن.
Cryptoprofiles TLS: اولویت ECDHE، ممنوعیت رمزهای/پروتکل های آسیب پذیر.
10) انطباق و داده ها
PCI DSS: PAN امن جریان، نشانه گذاری ؛ هرگز پروکسی خام PAN از طریق پلاگین.
GDPR/DSAR: مسیریابی منطقه/مستاجر، اقامت داده، حذف/ناشناس.
محدودیت قرار گرفتن در معرض PII: فیلتر کردن زمینه ها در دروازه، رمزگذاری هدر های حساس.
11) توپولوژی و چند منطقه ای
مدیریت شده در مقابل مدیریت شده (Envoy/Kong/NGINX در مقابل Cloud API Gateway). برای کنترل دقیق/PCl - اغلب خود مدیریت می شود.
Multi-AZ/Multi-Region Active: DNS/GSLB جهانی، مبتنی بر سلامت و مسیریابی جغرافیایی، فروشگاه های مخفی در هر منطقه.
طرح DR: RPO/RTO، دروازه آماده به کار سرد/گرم با یک سیاست آبی.
12) نسخه API و تکامل
استراتژی: URI vN، header-versioning، مذاکره محتوا. برای عموم - یک سیاست تخفیف واضح (≥6 -12 ماه).
کامپکت عقب: گسترش طرح ها با اضافه کردن زمینه های اختیاری ؛ قراردادها در Git، پیوندهای OpenAPI.
Canary/Shadow: ترافیک در «سایه» نسخه جدید اجرا می شود، مقایسه پاسخ ها.
13) عملکرد و کش
نهانگاه برای درخواستهای GET/idemotent ؛ شرایط: ETag/Cache-Control صحیح.
اتصال به بالادست ؛ HTTP/2 ادامه بده برای gRPC - حداکثر سود.
بودجه Payload-محدود اندازه بدن gzip/br.
پیش محاسبه پاسخ BFF برای پانل های فرکانس بالا/دایرکتوری ها.
14) مدیریت پیکربندی
GitOps: اعلامیه های مسیرها/سیاست ها ؛ بررسی/CI (lint، اسکن امنیتی) ؛ سی دی با احزاب قناری.
پرچم های ویژگی در دروازه: سوئیچ مسیر/قانون سریع بدون استقرار.
الگوهایی برای تکرار سیاستها (OIDC، نرخ، CORS).
15) قطعه های کوچک (شبه)
Idempotency (کنگ/نماینده سبک):yaml plugins:
- name: idempotency config:
header: Idempotency-Key ttl: 24h storage: redis
نرخ/سهمیه بندی:
yaml
- name: rate-limiting config: {policy: local, minute: 600, key: consumer_id}
- name: response-ratelimiting config: {limits: {"heavy": {minute: 60}}, key: route_id}
JWT/OIDC:
yaml
- name: oauth2-introspection config:
jwks_uri: https://idp/.well-known/jwks. json required_scopes: ["payments:write","payments:read"]
WAF (مشخصات):
yaml
- name: waf config:
mode: block ruleset: owasp_crs exclusions: ["/health", "/metrics"]
امضای وب هوک:
pseudo sig = HMAC_SHA256(secret, timestamp + "\n" + method + "\n" + path + "\n" + sha256(body))
assert now - timestamp < 300s
16) NFR و SLO برای دروازه
زمان آماده به کار (ماه): ≥ 99. 95٪ (لبه)، ≥ 99. 9% (داخلی)
تاخیر p95: ≤ 50-100 میلی ثانیه مواد افزودنی بالادست.
بودجه خطا: ≤ 0. 05٪ 5xx از دروازه (به استثنای بالادست).
سیاست های امنیتی: 100٪ از درخواست ها با TLS ؛ 0 حوادث نشت مخفی ؛ MTTR آسیب پذیری قوانین WAF ≤ 24h.
17) چک لیست پیاده سازی
- نقشه معماری: لبه → BFF → مش، لیست دامنه ها/مسیرها.
- TLS/mTLS، چرخش JWKS، اسرار در KMS/Vault.
- OAuth2/OIDC، حوزه/ادعا، ABAC/OPA.
- نرخ/سهمیه، قطع کننده مدار، تلاش مجدد/عقب نشینی، توانایی.
- OpenAPI/JSON اعتبار سنج طرح، تبدیل gRPC/REST/GraphQL.
- WAF/DDoS/ربات مشخصات، CORS/CSP.
- امنیت وب هوک: HMAC، ضد پخش، اجازه لیست.
- سیاهههای مربوط/معیارها/مسیرهای پیاده روی ؛ دسترسی/تغییر حسابرسی
- GitOps/سیاست به عنوان کد ؛ محاسبات قناری ؛ نقشه دکتر
- کنترل PCI/GDPR: پوشش، retentions، روش DSAR.
18) خطاهای مکرر
ذخیره اسرار در پیکربندی دروازه/سیاهههای مربوط.
جهانی "در CORS/اعتماد همه" منبع ".
فقدان idempotence و وقفه عادلانه → دو برابر و بهمن.
مخلوط کردن authN و منطق کسب و کار در پلاگین دروازه.
هیچ چرخش JWKS و بچه → کلید «گیر» وجود دارد.
قابلیت مشاهده بدون ردیابی همبستگی → کور RCA.
خلاصه
Gateway API فقط یک پروکسی معکوس نیست، بلکه یک سیاست و پلت فرم امنیتی است که از عملکرد، انطباق و کسب درآمد پشتیبانی می کند. ایجاد اعتماد صفر، رفع قراردادها با طرح ها، مدیریت ترافیک از طریق SLO، پیکربندی خودکار از طریق GitOps و سیاست به عنوان کد. سپس دروازه تبدیل به یک «لبه» پایدار معماری شما خواهد شد و نه یک گردن باریک.