第1章 课程全景:传递与模块隔离的全局架构蓝图

1.1 架构蓝图总览:从“孤岛防御”到“链路信任”

现代分布式系统面临的核心矛盾是:模块必须在隔离中运行,但业务又要求在模块间安全传递身份与权限。本章全景图描绘了由API网关、授权服务、业务模块群(A/B/C)构成的典型拓扑。不再是简单的密钥,而是承载了模块边界定义、信任锚点和授权策略的可信凭证。

架构设计意图:本蓝图采用“网关前置验证 + 模块内部隔离授权”的双层模型。外层网关负责完整性校验和内省( Introspection),内层各模块通过本地策略引擎完成细粒度授权,实现“一次验证,多层授权”的安全模型。
章节关联矩阵(本课程核心知识点在第1章中的位置)
课程核心要素第1章映射落地关注点
模块边界定义服务群(A/B/C)之间的物理与逻辑边界边界由统一身份域名和受众(aud)声明界定
信任链路设计网关→授权服务→模块集群的链式信任传递信任锚点锚定在授权服务公钥;模块间不互信
传递机制Bearer 在HTTP Header中的端到端传递需携带模块标识(sub)和授权上下文(ctx)
授权策略分层网关级(粗粒度) + 模块级(细粒度)网关仅校验是否有效;模块判断权限粒度
数据流与控制流分离在控制流路径传递,数据流直连不参与数据负载加密,仅作为授权凭证
方案权衡集中式验证 vs 分布式验证集中式降低模块复杂度;分布式提升性能和可用性
风险识别伪造、重放、泄漏引入CWT/JWT格式标准 + 短期有效 + HTTPS传输

1.2 核心角色定义与交互关系

架构中的五个核心角色及其职责如下表所示。每个角色在传递和授权流程中承担不可替代的职责。

角色名称符号职责与交互
颁发者P签发、续签、撤销生成并绑定用户身份与模块权限集
承载者C持有并请求资源在Authorization头携带Bearer
网关验证者G内省、签名验证、缓存元数据校验签名、过期时间(exp)和颁发者(iss)
模块授权者Mi基于载荷做本地授权决策解析中的权限声明(perm)和上下文(ctx)
审计日志L记录传递和授权事件接收授权成功/失败的回调;存储摘要
传递与模块隔离架构蓝图(第1章全景) 客户端 (C) 承载者 API网关 (G) 验证者 / 内省 授权服务 (P) 颁发者 / 撤销 模块隔离域 模块A M₁ 模块B M₂ 模块C M₃ 审计日志 (L) 摘要存证 关键说明: 1. 实线为传递路径;虚线为内省响应与审计回调 2. 模块A/B/C不直接颁发,仅依赖网关传递的凭证 模块边界:每个模块拥有独立身份空间 信任链路:网关 → 授权服务 → 模块集群 授权策略分层:网关级 + 模块级

1.3 典型场景拆解:微服务间调用与事件驱动

  1. 场景一:微服务间同步调用(请求-响应)
    客户端C携带向网关G请求模块A的资源。G做内省后,将原始透传到模块A。模块A解析获取用户ID和权限集,执行授权决策。关键约束:在模块间传递时,受众(aud)声明必须包含目标模块标识,防止被跨域滥用。
  2. 场景二:API网关向下游模块传递
    网关G将作为Bearer凭证注入到HTTP Authorization头中,下游模块直接提取。网关还需传递追踪ID(trace_id)协助审计日志关联。典型请求范例如下:
    GET /v1/resource HTTP/1.1
    Host: module-a.internal
    Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...
    X-Trace-Id: a1b2c3d4e5f6
  3. 场景三:事件驱动架构中的传递
    在消息队列(如Kafka)场景下,不能直接嵌入消息体。替代方案是:生产者将摘要(SHA-256)写入消息Header,消费者依靠网关或缓存服务补全完整。此设计确保消息持久化时不泄漏明文,满足数据流与控制流分离原则。
⚠ 常见风险与防范
  • 泄漏风险:在日志或消息队列中明文暴露。防范:日志中脱敏的前8位和后4位,消息队列中仅传递摘要。
  • 信任链断裂:模块自行签发或忽略验证。防范:强制所有模块依赖网关传递的,且验证的iss和aud字段。
  • 授权策略遗漏:网关级放行后模块级未执行细粒度检查。防范:实施“双重验证”策略,模块级必须对每个API端点执行权限检查。

1.4 方案权衡:集中式 vs 分布式授权

维度集中式授权(网关决策)分布式授权(各模块决策)
性能较高:网关需批量缓存元数据低:每个模块独立缓存元数据
安全较低:网关成为单点信任锚较高:即使网关被攻破,模块仍可独立防御
运维简单:授权规则统一管理复杂:各模块需部署独立策略引擎
可扩展性受限:网关可能成为瓶颈良好:授权决策横向扩展
适用场景小型集群(模块数<10)大型集群(模块数≥10)或跨信任域场景

1.5 落地步骤要点

课程后续章节将逐一展开,但在此画出关键里程碑:

  1. 定义模块边界:为每个模块分配全局唯一的身份标识(如URN:module:XXX)。
  2. 设计结构:包含iss、sub、aud、exp、perm(权限列表)、ctx(上下文)六个核心声明。
  3. 配置网关内省端点:集成授权服务的内省API,设置缓存过期时间与无效拒绝策略。
  4. 部署模块级策略引擎:在每个模块入口植入轻量级授权过滤器,解析中的perm字段。
  5. 实施审计对接:网关和模块共同向审计日志发送摘要、用户ID、决策结果和时间戳。

1.6 验收标准(第1章对应部分)

  • 蓝图覆盖:架构图囊括客户端、网关、授权服务、模块群、审计日志五个核心角色。
  • 交互规范:传递路径明确(客户端→网关→模块),控制流与数据流分离。
  • 策略分层:文档清晰定义网关级粗粒度授权和模块级细粒度授权的区别。
  • 风险清单:列出泄漏、信任链断裂、策略遗漏三条主要风险及其防范措施。
本课程设计说明:第1章建立了全局架构蓝图与核心角色定义。第2章将深入“模块边界定义”子章节,讲解如何通过统一身份空间和受众声明实现严格的边界隔离。请基于本蓝图继续后续学习。