模块边界定义与信任假设
模块粒度的划分决定了权限隔离的粒度,而信任假设则奠定了安全基线。本章定义四个核心设计要素:模块粒度划分原则、信任半径、默认拒绝策略与最小权限原则,为后续的隔离模型提供概念基础。
2.1 模块粒度划分原则
模块边界应遵循三条原则,确保隔离有效且维护成本可控:
- 单一职责边界:每个模块只封装一组高内聚的业务能力,边界模糊会导致权限扩散。
- 变更隔离域:模块间的依赖应保持稳定,允许独立部署、独立升级而不影响其他模块的权限模型。
- 数据主权最小化:模块只能持有与其职责直接相关的数据,避免跨模块的数据引用形成隐式信任链路。
粒度权衡:粒度过细(数千个微模块)会导致信任关系网络过于复杂,审计困难;粒度过粗(巨型单体模块)则无法实现精细权限控制。经验阈值:一个逻辑模块的对外接口数控制在 10 个以内,可显著降低权限策略复杂度。
2.2 信任半径与信任模型
信任半径定义了一个模块在未经验证的情况下所能获得的信任程度。在一个隔离系统中,所有跨半径的调用都必须经过显式授权。
| 信任半径类型 | 描述 | 默认权限范围 |
|---|---|---|
| 零信任半径 | 不对任何模块预设信任,所有调用均由策略引擎裁决 | 无内置权限 |
| 本地信任半径 | 同一进程或同一容器内的模块互信,但对外部模块仍需鉴权 | 只读本地上下文 |
| 受信集群半径 | 同一集群内的服务节点之间互信,边界由集群网关维持 | 允许内部 API 调用 |
推荐实践:在架构设计阶段,应为每个模块标注其信任半径属性,并录入架构决策记录(ADR)。便于后续审计时追溯信任假设的来源。
2.3 默认拒绝策略
默认拒绝是权限隔离的黄金法则——任何未明确授权的操作都应当被禁止。落实该策略需在模块边界上建立两个控制点:
- 入口过滤器:所有入站请求首先经过一个白名单检查,匹配到已注册的操作签名后才允许进入模块内部处理管线。
- 出口管控:模块对外发起的调用也必须登记到出站策略表,未经声明的外部资源访问将被阻塞。
常见陷阱:在初期设计中遗漏内部辅助接口的注册,导致测试环境正常但生产环境被默认拒绝策略拦截。建议在模块契约文档中一并发布“接口白名单清单”,作为验收测试的检查项。
2.4 最小权限原则
每个模块只被授予完成其任务所必需的最小权限集,且权限有效期应尽可能短。该原则与信任半径结合后形成如下决策矩阵:
- 高频调用:授予临时 ,有效期不超过会话时间。
- 低频管理操作:使用审批流程动态签发权限,执行完毕后立即回收。
- 静态数据访问:通过只读视图暴露,避免赋予写入能力。
下面的 SVG 图展示了模块 A 与模块 B 之间的边界定义、信任半径标记以及权限控制点的关系。
2.5 落地步骤与验收标准
将上述原则落地到模块边界定义中,建议按以下步骤执行:
- 识别模块边界:基于业务领域与变更频率,将系统拆分为独立模块,并标注每个模块的信任半径类型。
- 定义接口白名单:为每个模块对外暴露的接口建立清单,区分“公开接口”与“内部接口”。
- 配置策略规则:在策略引擎中写入默认拒绝规则,以及基于最小权限的临时授权规则。
- 验证信任假设:通过安全测试用例模拟跨边界调用,确认未授权请求被正确拒绝。
验收标准示例:
# 信任假设验收检查清单
- 所有模块间调用均通过策略裁决点,无直接绕过路径。
- 未被列入白名单的接口调用返回 403 Forbidden,而非 404 或 500。
- 模块 A 对模块 B 的写权限仅在特定令牌有效期内可用,过期后自动回收。
通过严格遵循上述模块边界定义与信任假设,可以为后续的权限隔离模型奠定可审计、可演化的基础。下一层面的设计将围绕如何在这些边界上构建细粒度的权限策略约束。