Gateway API Arhitectură și Securitate
TL; DR
Gateway-ul API este singurul punct de politică (autentic, rată, transformare, audit) și limita de încredere între lumea exterioară și servicii. Succesul este dat de: Zero-Trust (mTLS/JWT), policy-as-code, managementul traficului orientat spre SLO și observabilitatea ortogonală. Build: margine gateway → BFF → plasă de serviciu; păstrați versioning și steaguri caracteristică; Automatizați protecția cârligelor web și a cheilor de testare a canarelor.
1) Roluri și modele de plasare
Edge/API Gateway (nord-sud): frontieră exterioară. Terminarea TLS, WAF, DDoS, authN/Z, rata/cote, CORS, transformări, memorie cache, carti web.
BFF (Backend-for-Frontend): strat de personalizare pentru anumiți clienți (web/mobil/parteneri). Scheme, agregări, limite, cache de răspuns.
Internal Gateway (est-vest )/Service Mesh Ingress: autorizare internă service-to-service, mTLS, rutare politică.
Gateway-ul gRPC/REST/GraphQL: un singur punct de traducător de protocol și circuite validatoare.
Anti-modele: „toate printr-un singur gateway monolitic, fără izolarea mediilor”, „logica ascunsă de afaceri în plugin-uri”, „gestionarea manuală a regulilor”.
2) Modelul de încredere și autentificarea
TLS 1. 2+/1. 3 pe perimetru, HSTS pe domenii publice; interior - mTLS între gateway și servicii.
OAuth2/OIDC: Codul de autorizare (PKCE) pentru clienți; client-acreditări pentru integrarea serverului; JWT cu TTL scurt și rotație cheie (JWKS).
Semnături HMAC pentru integrarea partenerilor și a webhookurilor (cheie client, SHA-256/512, verificare timestamp și anti-reluare).
chei API - numai ca un factor suplimentar/pentru urmărire; limita domeniul de aplicare, IP, termen.
- Separați authN (cine) și authZ (ce puteți). Utilizați atribute (scopuri, roluri, chiriaș, steaguri de risc).
- Toate jetoanele sunt cu aud/iss/exp/nbf; ceas-înclinare ≤ 60 de ani; copil obligatoriu și memorie cache JWKS ≤ 5 min.
3) Autorizare și politici (Zero-Trust)
ABAC/RBAC pe gateway: reguli peste revendicări + context cerere (IP/ASN/geo/chiriaș).
Policy-as-Code (de exemplu, OPA/Rego): stocarea regulilor în Git, validarea CI, calcule canare.
Multi-leasing: izolare prin "X-Tenant-Id', SSO la hotarul chiriașilor; cote/limite pentru fiecare chiriaș.
4) Managementul traficului și fiabilitate
Limitarea ratei: găleată de scurgere/token, granularitate: cheie/chiriaș/rută/BIN/țară (pentru API-urile de plată).
Cote: zi/lună, separate pentru operațiuni grele (de exemplu, rapoarte).
Controlul exploziei și accelerarea dinamică bazată pe sarcină și SLO.
Întrerupător de circuit: deschidere pe erori/latență; detectarea outlier de amonte.
Încercați din nou cu backoff + jitter; idempotență: cheie 'Idempotency-Key' + fereastră TTL + stocare rezultat.
Timeouts: client <gateway <în amonte; puncte de referință p95 rezonabile (de ex. 1. 5s/3s/5s).
Failover/Canare:% -routing (ponderat), session-affinity opțional, albastru/verde.
5) Transformări și validatoare
Scheme: Schema OpenAPI/JSON pentru REST; Protobuf pentru gRPC; SDL pentru GraphQL. Validarea cererii/răspunsului pe gateway.
gRPC↔REST transpunere, federația GraphQL (pentru BFF).
Normalizarea antetului (urme, anteturi de securitate), filtrarea răspunsului (ediția PI).
CORS: whitelists, 'Vary' correct, ban 'on' Autorization 'requests.
Compresie и răspuns cache (ETag/Cache-Control) для safe-GET.
6) Securitatea perimetrului
WAF: OWASP Top-10 reguli, model pozitiv pentru rutele critice, patch-uri virtuale.
Protecție bot: semnături bazate pe rate, amprentă digitală a dispozitivului, captchas protejate pentru punctele finale publice.
Scut DDoS: în amonte (cloud) + limite locale; liste de blocuri geo/ASN.
CSP/Referrer-Policy/X-Frame-Options - în cazul în care gateway-ul servește static/widget-uri.
WebSockets/SSE/WebTransport: profile separate de limită și timeout; auth-reînnoire prin token.
7) Webhooks: Securitate și livrare
Fiecare destinatar are propriul secret; semnătura „HMAC (semnătură, marcaj temporal” cale „corp)”; fereastra de timp valabilă (de exemplu, 5 minute).
Idempotența la recepție: dedup prin 'event _ id'.
Retrai: exponential, maxim N; status-endpoint pentru mână-shake.
mTLS/Allow-list IP; Abilitatea de a relua la cerere cu restricții
8) Observabilitate și audit
Jurnale: nu înregistrați secrete/PAN/PII; corelați prin 'trace _ id'/' span _ id'; mascare.
Metrica: RPS, rata de eroare pe clase, latenta p50/p95/p99, circuite deschise, rata de reincarcare, 4xx vs 5xx, saturatie.
Trasee: W3C Trace Context; arunca „traceparent ”/„ tracestat” în amonte.
Audit: flux separat „cine și ce numit/schimbat”, stocare neschimbabilă; evenimente de politică (interzis accesul, lovit de cotă).
9) Secretele și criptografia
Stocare cheie: KMS/Vault, rotire la fiecare 90 de zile (sau mai des), roluri separate de citire.
Certificate: emitere/actualizare automată (ACME), fixare pentru mobil (prudență TOFU/HPKP).
Rotație JWKS: două chei active (vechi/nou), ferestre clare roll.
Cryptoprofiles TLS: preferința ECDHE, interzicerea cifrurilor/protocoalelor vulnerabile.
10) Conformitatea și datele
PCI DSS: fluxuri PAN-safe, tokenization; niciodată proxy raw-PAN prin plugin-uri.
GDPR/DSAR: rutare regiune/chiriaș, rezidență de date, ștergere/anonimizare.
Limita de expunere PII: câmpurile de filtrare de pe gateway, criptarea anteturilor sensibile.
11) Topologii și multi-regionalitate
Auto-gestionat vs gestionat (Envoy/Kong/NGINX vs Cloud API Gateway). Pentru control strict/PCl - mai des auto-gestionate.
Multi-AZ/Multi-Region Active-Active: global DNS/GSLB, bazate pe sănătate și geo-rutare, per-regiune secret-magazine.
Planul DR: RPO/RTO, rece/cald gateway standby cu un albastru politica.
12) Versionarea și evoluția API
Strategii: URI vN, antet-versioning, conținut-negociere. Pentru public - o politică clară de depreciere (≥6-12 luni).
Backward-compat: extindeți schemele prin adăugarea de câmpuri opționale; contracte în Git, lintere OpenAPI.
Canary/Shadow: traficul se desfășoară în „umbra” noii versiuni, compararea răspunsurilor.
13) Performanță și memorie cache
Cache pe margine pentru cereri GET/idempotent; condiții: corectă ETag/Cache-Control.
Punerea în comun a conexiunii în amonte; HTTP/2 continui; pentru gRPC - beneficiu maxim.
Bugete de sarcină utilă-Constrânge dimensiunea organismelor gzip/br.
Pre-calcul răspunsuri BFF pentru panouri de înaltă frecvență/directoare.
14) Managementul configurării
GitOps: manifestări declarative ale rutelor/politicilor; recenzie/CI (scame, scanare de securitate); CD cu petreceri canare.
Caracteristică steaguri pe poarta de acces: un comutator de rută/regulă rapidă, fără a implementa.
Șabloane pentru repetarea politicilor (OIDC, rate, CORS).
15) Mini fragmente (pseudo)
Idempotența (stil Kong/Envoy):yaml plugins:
- name: idempotency config:
header: Idempotency-Key ttl: 24h storage: redis
Tarif/cotă:
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 (profil):
yaml
- name: waf config:
mode: block ruleset: owasp_crs exclusions: ["/health", "/metrics"]
Semnătura broşurii web:
pseudo sig = HMAC_SHA256(secret, timestamp + "\n" + method + "\n" + path + "\n" + sha256(body))
assert now - timestamp < 300s
16) NFR și SLO pentru gateway
Uptime (lună): ≥ 99. 95% (margine), ≥ 99. 9% (intern).
Latență p95: ≤ 50-100 ms aditivi în amonte.
Bugetul de eroare: ≤ 0. 05% 5xx de la poarta de acces (exclusiv în amonte).
Politici de securitate: 100% din cererile cu TLS; 0 incidente secrete de scurgere; MTTR vulnerabilitate norme WAF ≤ 24h.
17) Lista de verificare a implementării
- Hartă arhitecturală: margine → BFF → plasă, listă de domenii/ruturi.
- TLS/mTLS, rotație JWKS, secrete în KMS/Vault.
- OAuth2/OIDC, scopes/revendicări, ABAC/OPA.
- Rata/cote, circuit-breaker, retry/backoff, idempotency.
- Validatoare OpenAPI/JSON Schema, transformări gRPC/REST/GraphQL.
- WAF/DDoS/bot profil, CORS/CSP.
- Webhook de securitate: HMAC, anti-reluare, permite-lista.
- Jurnale/metrici/trasee; audit de acces/schimbare.
- GitOps/policy-as-code; calcule canare; Planul DR.
- Controlul PCI/GDPR: mascare, retenții, proceduri DSAR.
18) Erori frecvente
Stocarea secretelor în configurația/jurnalele gateway-ului.
Global "în CORS/încredere toate" Origine ".
Lipsa idempotenței și a timpilor corecți → dubluri și avalanșe.
Amestecarea authN și logica de afaceri în plugin-uri gateway.
Nu există nici o rotație JWKS și copil → „blocat” chei.
Observabilitate fără corelarea urmelor → RCA orbit.
Rezumat
API-ul Gateway nu este doar un proxy invers, ci o platformă de politică și securitate care susține performanța, conformitatea și monetizarea. Construiți Zero-Trust, fixați contracte cu scheme, gestionați traficul prin SLO, automatizați configurațiile prin GitOps și policy-as-code. Apoi poarta va deveni o „margine” stabilă a arhitecturii tale, și nu un gât îngust.