4. 安全架构资产与依赖关系建模

在安全架构韧性验证中,最容易被忽视却最致命的错误,是直接对系统发起故障注入或攻击模拟,却没有先回答一个基础问题:这个系统里到底有哪些东西值得保护,它们之间靠什么连接,一旦某个环节失效会牵连到谁?资产与依赖关系建模,就是把安全架构从"一堆设备和配置"转化为"可被验证的结构化对象"的过程。没有这张图谱,后续的故障注入只能靠猜,韧性评审也只能停留在主观判断。

一、四类必须识别的对象

建模的第一步是识别对象。安全架构中的对象可以归为四类,它们共同构成依赖图谱的节点与边。

关键资产是韧性验证的最终保护目标,包括数据资产(用户凭证库、密钥材料、审计日志)、服务资产(认证服务、支付网关、配置中心)和信任资产(根证书、CA私钥、签名密钥)。识别资产时要标注其安全等级与可容忍中断时间,例如"认证服务:等级高,可容忍中断 30 秒",这个参数直接决定后续故障注入的判定阈值。

信任边界是不同信任域之间的分界,典型如互联网区与DMZ、DMZ与内网应用区、应用区与数据区、生产环境与运维通道。信任边界上必然存在控制点:防火墙、WAF、API网关、身份代理、跳板机。边界不是画在图上好看的线,而是故障注入时"跨域传播"的必经关卡。

数据流描述数据从产生、传输、处理到存储的路径,需要标注方向、协议、是否加密、经过哪些信任边界。数据流是攻击模拟的主要载体,因为数据泄露、篡改、重放都发生在流上。

控制流描述指令与决策的传递,例如策略下发、令牌签发、配置推送、健康检查与熔断决策。控制流往往比数据流更隐蔽,但它的失效会导致"数据流还在跑,但已经失去管控"。

外部依赖是架构之外的第三方或基础设施,包括云厂商的KMS、短信网关、OIDC身份提供方、DNS、CDN、时间同步服务。外部依赖的特点是不可控但必须可用,是韧性验证中最容易暴露单点的地方。

二、从对象到图谱:节点、边与属性

把上述对象组织成图谱,需要统一的数据结构。推荐用"节点—边—属性"三元组表达:节点是资产、边界、外部依赖;边是数据流、控制流、调用关系、信任关系;属性记录协议、加密状态、SLA、故障影响等级。下面给出一个可直接使用的建模字段示例。

节点示例:
{ id: "auth-svc", type: "service", level: "high",
  mtbf_target: "99.95%", rto: "30s", owner: "IAM团队" }

边示例:
{ from: "api-gw", to: "auth-svc", type: "control",
  protocol: "mTLS", crosses_boundary: true,
  failure_mode: "超时/拒绝", blast_radius: "全站登录" }

外部依赖示例:
{ id: "sms-gw", type: "external", sla: "99.9%",
  fallback: "备用通道", criticality: "中" }

字段中的 blast_radius(爆炸半径)是韧性建模的核心属性,它回答"这条边断了会影响多少资产"。crosses_boundary 标记该边是否跨越信任边界,跨边界的边在攻击模拟中优先级最高。

三、依赖图谱的构建流程

实际建模通常按"资产盘点 → 边界标注 → 流追踪 → 外部依赖登记 → 图谱校验"推进。资产盘点可复用CMDB与配置基线;边界标注要结合网络分区与访问控制策略;流追踪建议从真实流量采样或调用链数据中提取,而不是凭架构图臆测;外部依赖登记要覆盖DNS、NTP、证书吊销等易被忽略的基础服务。

图谱校验的关键动作是反向追溯:对每个高等级资产,反向找出所有能到达它的路径,检查是否存在未标注的信任边界或未登记的外部依赖。这一步经常能发现"文档里没有、但实际存在"的旁路,例如运维直连数据库的跳板通道。

建模不是一次性工作。每次架构变更、新增外部依赖或调整信任边界后,都应更新图谱并重新计算受影响资产的爆炸半径,否则后续故障注入会基于过期结构执行。

四、图谱如何驱动后续验证

资产—依赖图谱的价值在于它是故障注入、攻击模拟和韧性评审的共同输入。故障注入时,选择图谱中"高等级资产 + 跨边界边 + 无冗余路径"的组合作为注入点,例如切断API网关到认证服务的mTLS链路,观察熔断与降级是否在30秒内生效。攻击模拟时,沿数据流路径寻找信任边界上的控制点,验证WAF、身份代理是否能阻断横向移动。韧性评审时,用图谱检查每个高等级资产是否至少有一条不经过单一外部依赖的备用路径。

下面这张图展示了一个典型安全架构的资产—依赖图谱片段,包含信任边界、数据流、控制流与外部依赖的关系,可作为建模时的结构参照。

互联网区 DMZ / 应用区 数据区 / 外部依赖 用户终端 数据流起点 DNS / CDN 外部依赖 短信网关 外部依赖 · SLA 99.9% API 网关 信任边界控制点 认证服务 高等级资产 · RTO 30s 业务应用 数据流处理节点 用户凭证库 高等级资产 KMS 密钥服务 外部依赖 · 云厂商 审计日志库 数据资产 HTTPS 数据流 mTLS 控制流 令牌数据流 跨边界查询 密钥调用 日志写入 OTP 下发 数据流 控制流 跨边界/外部依赖 信任边界 节点属性:等级 / RTO / SLA

图中可以看到,认证服务同时依赖凭证库、KMS和短信网关三个外部或跨边界对象,其中短信网关是OTP下发的唯一通道。如果短信网关不可用且没有备用通道,认证服务的爆炸半径将覆盖全站登录,这正是后续故障注入需要优先验证的场景。建模的意义,就是让这类隐藏的单点依赖在图上显式暴露出来,而不是等到真实故障发生时才被发现。

建模时不要只画"正常路径"。必须把降级路径、备用通道、运维旁路一并标注,否则图谱会给出过于乐观的韧性判断,导致故障注入遗漏关键失效场景。

完成资产—依赖图谱后,后续每一章的故障注入、攻击模拟与韧性评审都可以直接引用图中的节点ID、边ID和爆炸半径属性,使验证过程可追溯、可复现、可量化。这正是把安全架构从"文档描述"推进到"可验证对象"的关键一步。