2. 平台门户架构:门户分层架构、微服务网关、API网关与身份代理

平台门户是镜像供应链信任边界的统一入口,承担着身份认证、路由分发、策略执行与信任传递的核心职责。本章从分层架构出发,逐层拆解微服务网关、API网关与身份代理的设计要点与信任模型。

2.1 门户分层架构总览

平台门户采用四层架构,每一层承载不同的信任职责:

层级 组件 信任职责
接入层 负载均衡 / CDN / WAF TLS终止、DDoS防护、客户端证书校验
网关层 微服务网关 / API网关 身份代理、令牌校验、路由分发、限流熔断
服务层 业务微服务 / 镜像仓库 / 策略引擎 细粒度RBAC、资源级授权、审计日志
数据层 身份存储 / 策略库 / 审计日志 加密存储、访问控制、不可篡改日志
关键设计原则:网关层是信任边界的第一道防线,所有外部请求必须经过网关层的身份代理校验,服务层不再直接暴露于外部网络。

2.2 微服务网关与API网关的职责分离

在平台门户中,微服务网关与API网关承担不同的功能角色,不能混为一谈:

  • 微服务网关:负责南北向流量(外部→内部),处理客户端请求的路由、负载均衡、协议转换(如gRPC→HTTP)、请求/响应改写。
  • API网关:负责东西向流量(服务→服务),处理内部服务间的认证、授权、限流、熔断、服务发现。
维度 微服务网关 API网关
流量方向 南北向(外部→内部) 东西向(内部→内部)
身份代理 必须,负责OIDC/OAuth2令牌交换 可选,通常使用mTLS或JWT
路由粒度 按域名/路径路由到微服务 按服务名/方法路由到具体实例
典型实现 Kong / APISIX / Envoy Istio / Linkerd / Consul Connect
实践建议:在镜像供应链场景中,微服务网关负责外部用户的身份代理,API网关负责内部服务间的信任传递。两者配合使用,形成完整的信任链。

2.3 身份代理:信任传递的核心机制

身份代理(Identity Proxy)是网关层的核心组件,负责将外部身份令牌转换为内部可信上下文。典型流程如下:

  1. 客户端携带OIDC/OAuth2令牌访问微服务网关。
  2. 微服务网关校验令牌有效性(签名、过期时间、issuer)。
  3. 网关将令牌中的身份信息提取,生成内部JWT(包含用户ID、角色、租户、信任等级)。
  4. 内部JWT通过HTTP Header(如X-Auth-Info)传递给下游服务。
  5. 下游服务解析内部JWT,执行RBAC授权。
// 内部JWT载荷示例
{
  "sub": "user-abc-123",
  "roles": ["镜像管理员", "审批人"],
  "tenant": "acme-corp",
  "trust_level": 3,
  "iat": 1700000000,
  "exp": 1700003600
}
安全警告:内部JWT必须使用服务端私钥签名,且密钥仅由网关层持有。下游服务不得信任外部令牌,只能信任网关签发的内部令牌。

2.4 平台门户信任架构图

下图展示了平台门户的完整信任架构,包括外部用户、微服务网关、API网关、身份代理与后端服务之间的信任传递关系:

平台门户信任架构图 平台门户信任架构图 外部用户 微服务网关 身份代理 API网关 后端服务 策略引擎 审计日志 OIDC/OAuth2 令牌校验 内部JWT 路由+内部JWT mTLS+JWT RBAC查询 审计事件 信任传递说明 外部用户通过OIDC/OAuth2认证 → 微服务网关校验令牌 → 身份代理签发内部JWT → API网关通过mTLS传递信任 → 后端服务执行RBAC授权

2.5 网关层信任模型对比

不同网关组件在信任模型中的角色差异显著,下表总结了关键对比维度:

信任维度 微服务网关 API网关 身份代理
身份来源 外部IdP(OIDC/OAuth2) 微服务网关签发的内部JWT 外部IdP + 本地策略
信任等级 低(外部不可信) 中(内部可信) 高(策略校验后)
令牌类型 外部Access 内部JWT / mTLS证书 内部JWT(含信任等级)
授权粒度 粗粒度(路由级) 中粒度(服务级) 细粒度(资源级)
审计能力 请求级日志 服务调用链 身份变更事件

2.6 身份代理的信任等级设计

身份代理在签发内部JWT时,需要根据外部令牌的可信度赋予不同的信任等级(Trust Level),用于下游服务的风险决策:

  • Trust Level 1:仅通过认证,无用户身份,适用于自动化脚本。
  • Trust Level 2:通过OAuth2密码模式认证,有用户身份但无MFA。
  • Trust Level 3:通过OIDC授权码模式认证,包含MFA校验。
  • Trust Level 4:通过硬件安全密钥(如FIDO2)认证,适用于管理员操作。
信任等级应用:后端服务可以根据信任等级决定是否允许高风险操作。例如,镜像删除操作要求Trust Level ≥ 3,镜像推送操作要求Trust Level ≥ 2。

2.7 网关层安全加固要点

在部署平台门户时,网关层需要重点关注以下安全加固措施:

  1. TLS终止与证书管理:使用Let's Encrypt或内部CA自动管理证书,禁止使用自签名证书。
  2. 令牌黑名单:在网关层维护令牌黑名单缓存,支持实时吊销。
  3. 请求大小限制:限制请求体大小(建议≤10MB),防止内存溢出攻击。
  4. 速率限制:按用户、IP、租户维度实施速率限制,防止暴力破解。
  5. 日志脱敏:在网关层对敏感字段(密码、令牌、密钥)进行脱敏后再写入审计日志。
# 网关层速率限制配置示例(基于Envoy)
rate_limits:
  - stage: 1
    actions:
      - request_headers:
          header_name: X-Auth-User
          descriptor_key: user
  - stage: 2
    actions:
      - remote_address: {}
    limit:
      requests_per_unit: 100
      unit: MINUTE
最佳实践:在网关层实施“默认拒绝”策略,所有未明确允许的请求路径一律返回403。同时,网关层应定期轮换内部JWT的签名密钥,降低密钥泄露风险。