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。总结