Gateway:體系結構與安全
TL;DR
API網關是唯一的政策點(authz, rate, transformation, audition)和外部世界和服務之間的信任邊界。成功得出:零信任(mTLS/JWT),策略即代碼,SLO驅動的交通管理和正交可觀察性。建造:edge gateway → BFF → service mesh;保持旋轉和遠攝標誌;自動化webhook和密鑰保護;測試金絲雀版本。
1)住宿角色和模式
Edge/API Gateway(南北):外部邊界。終端TLS,WAF,DDoS,authN/Z,rate/quotas,CORS,轉換,緩存,webhooks。
BFF (Backend-for-Frontend):針對特定客戶端的適應層(web/mobile/partners)。電路,聚合,限制,積壓響應。
Internal Gateway (east-west)/Service Mesh Ingress:服務到服務、mTLS、路由策略的內部授權。
gRPC/REST/GraphQL網關:協議轉換器和驗證器方案的單個點。
反模式:「通過單個整體網關而無需隔離環境」,「插件中的隱藏業務邏輯」,「手動規則控制」。
2)信任模型與認證
TLS 1.2+/1.3在周邊,HSTS在公共領域;內部-網關和服務之間的mTLS。
OAuth2/OIDC:客戶授權代碼(PKCE);client-credentials用於服務器集成;具有短TTL和密鑰旋轉(JWKS)的JWT。
用於合作夥伴集成和webhook的HMAC簽名(客戶端密鑰,SHA-256/512,時間戳檢查和反重播)。
API密鑰僅作為多波因子/用於跟蹤;限制範圍、IP、期限。
- 將authN(誰)和authZ(什麼可以)分開。使用屬性(scopes, roles, tenant, risk flags)。
- 所有令牌均帶有aud/iss/exp/nbf;clock-skew ≤ 60s;強制性的kid和JWKS緩存≤ 5分鐘。
3)授權和政策(零信托)
網關上的ABAC/RBAC:claims+查詢上下文之上的規則(IP/ASN/geo/tenant)。
Policy-as-Code(例如OPA/Rego):將規則存儲在Git,CI驗證,金絲雀布局中。
多租金:在「X-Tenant-Id」,Tenant邊界上的SSO上隔離;租戶配額/限額。
4)交通管理和可靠性
Rate limiting: leaky/token bucket,粒度:key/tenant/route/BIN/country(用於支付API)。
Quotas:白天/月份,重型手術(例如報告)。
基於負載和SLO的爆破控制和動態推力。
電路斷路器:在錯誤/潛伏時打開;在apstrims上對outlier進行檢測。
Retry with backoff+jitter;「Idempotency-Key」+窗口TTL+存儲結果。
Timeouts: 客戶端<網關 Failover/Canary:%路由(重量)、會話關聯可選,藍色/綠色。 5)轉型和驗證者 電路:用於REST的OpenAPI/JSON電路;gRPC的Protobuf;SDL for GraphQL。請求驗證/響應在網關上。 Compression и response caching (ETag/Cache-Control) для safe-GET. 6)外圍安全 WAF:OWASP Top-10規則,關鍵路由的積極模型,虛擬補丁。 7) Webhooks: 安全和交付 每個收件人都有自己的秘密。標題「HMAC(簽名,timestamp'path'body)」;允許的時間窗口(例如5分鐘)。 8)可觀察性和審計 Logi: 不寫秘密/PAN/PII;通過「trace_id」/「span_id」加密;偽裝。 9)秘密和密碼學 密鑰存儲:KMS/Vault,每90天(或更頻繁)輪換,每個讀取角色。 10)合規和數據 PCI DSS:PAN安全流,令牌化;切勿通過插件滾動raw-PAN。 11)拓撲和多區域性 自我管理vs托管(Envoy/Kong/NGINX vs基於雲的API網關)。嚴格控制/PCl-更常見的是自我管理。 12)API的轉換和演變 策略:URI vN, header-version, content-negotation.對於公眾來說-明確的分配政策(≥6 -12個月)。 13)性能和緩存 Edge上的緩存用於GET/等效請求;條件:正確的ETag/Cache-Control。 Payload budgets: 限制身體尺寸;gzip/br. 用於高頻面板/目錄的BFF預計算響應。 14)配置管理 GitOps:聲明路線清單/政策;review/CI (lint, security scan);CD帶有金絲雀派對。 15) Mini-Snippets(偽) Rate/Quota: JWT/OIDC: 16)用於網關的NFT(NFR)和SLO Uptime(月): ≥ 99。95% (edge), ≥ 99.9% (internal). Latency p95: ≤ 50-100 ms添加劑至apstrim。 17)實施支票 18)常見錯誤 在Gateway/Logs配置中存儲秘密。 Gateway API不僅僅是反向代理,而且是一個政策和安全平臺,它支持性能,合規性和貨幣化。構建零信任,通過電路捕獲合同,通過SLO管理流量,通過GitOps和策略即代碼自動化配置。然後,網關將成為您建築的穩定「邊緣」,而不是狹窄的喉嚨。
gRPC↔REST轉化,GraphQL federation(用於BFF)。
頭部歸一化(trace-ids,安全頭部),響應過濾器(PII修訂版)。
CORS:whitelists,「Vary」正確,禁止「授權」查詢。
Bot保護:基於程序的簽名,設備指紋,用於公共尾礦的保護帽。
DDoS盾牌:上遊(雲)+局部限制;地理/ASN流程表。
CSP/Referrer-Policy/X-Frame-Options-如果網關服務於靜態/小部件。
WebSockets/SSE/WebTransport:單獨的限制和超時配置文件;通過令牌自動延長。
接待處的相等性:「event_id」的去世。
Retrai:指數,最大N;hand-shake的狀態終止。
mTLS/Allow-list IP;具有限制的按需回復功能。
度量標準:RPS,類別錯誤率,latency p50/p95/p99, open circuits, retry rate, 4xx vs 5xx, saturation。
Traces: W3C Trace Context;將「traceparent」/「tracestate」推入apstrims。
審計:單獨的「誰和什麼造成了/改變」流,不變的存儲;策略事件(access-denied, quota-hit)。
證書:自動頒發/更新(ACME),移動微調(小心TOFU/HPKP-like)。
JWKS輪換:兩個活動鍵(舊/新),清晰的偏轉窗口。
TLS密碼化:偏好ECDHE,禁止易受攻擊的密碼/協議。
GDPR/DSAR:跨區域/tenant路由,數據駐留,刪除/匿名。
PII曝光限制:過濾網關上的字段,加密敏感頭。
Multi-AZ/Multi-Region Active-Active:全球DNS/GSLB,基於健康的,基於地理的漫遊,基於區域的秘密商店。
DR計劃:RPO/RTO,帶有藍色策略的冷/溫暖站立網關。
Backward-copat:通過添加可選字段來擴展電路;Git合同,OpenAPI linters。
金絲雀/影子:在新版本的「陰影」中運行流量,比較響應。
連接到apstrims;HTTP/2保持打開狀態;gRPC的最大好處。
網關上的Ficha-Flags:快速路由斷路器/規則斷路器。
重復策略的Template(OIDC,rate,CORS)。yaml plugins:
- name: idempotency config:
header: Idempotency-Key ttl: 24h storage: redisyaml
- name: rate-limiting config: {policy: local, minute: 600, key: consumer_id}
- name: response-ratelimiting config: {limits: {"heavy": {minute: 60}}, key: route_id}
WAF(配置文件):
yaml
- name: oauth2-introspection config:
jwks_uri: https://idp/.well-known/jwks. json required_scopes: ["payments:write","payments:read"]
Webhook簽名:
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
Error budget: ≤ 0.來自網關的05% 5xx(不包括apstrim)。
安全策略:100%的TLS查詢;0起機密泄露事件;WAF規則漏洞的MTTR ≤ 24 h。
[] OAuth2/OIDC, scopes/claims, ABAC/OPA.
[] GitOps/policy-as-code;金絲雀布局;DR計劃。
全球"在CORS/信任所有'起源'。
缺乏相容性和誠實的超時→雙倍和雪崩。
在網關插件中混合authN和業務邏輯。
沒有JWKS輪換,小子→「卡住」鑰匙。
沒有跟蹤相關性的可觀察性→盲人RCA。總結