模块 XV —— 输出集成与通知
模块 XV 是 control plane 的通知路由器:当任何模块在事件总线上把告警转化为一条 finding 时, 本模块决定它匹配哪条租户路由、构建一条经过脱敏处理的通知、抑制重复与风暴, 并实时分发到公司已经在运行的通道。它负责决定什么/谁/何时; 输出 connector 负责投递的如何——它消费该传输层,而绝不重新实现它。
产品中的每个模块都会以一条最小数据的 finding 形式在总线上报告告警
(finding.reported),并带有命名空间化的 Kind —— 可靠性
(health_subject_down)、开销(finops_budget)、安全(security_guardrail)、
评估回归(eval_regression)、驻留地(compliance_residency_violation)、
编排节奏、语音等等。模块 XV 只订阅这唯一一条产品级告警通道,并按 Kind、严重程度、
源模块和主体进行路由。它有意不订阅诸如 cost.sampled 或 edge.observed 这样的原始遥测:
一条开销告警是以 finops_budget finding 的形式抵达的,而不是一条成本样本。
这就是把整个产品的 finding 转化为可执行通知的接缝。
本模块在共享数据模型中声明了两个租户级实体:
| 实体 | 模式 | 它持有什么 |
|---|---|---|
| route | 可变、受审计 | 一条路由规则:对事件类型、finding-kind 通配符(如 health_*)、最低严重程度、源模块和主体类型的谓词 → 一个具名目的地,带有按路由的去重与节流窗口以及优先级。不持有任何目的地凭据——只持有一个非机密的目的地名称。 |
| delivery | 仅追加 | 每次投递尝试的证据 ledger:路由、目的地、finding kind、严重程度、主体引用、简短标题、一个关联哈希,以及一个结果类别(delivered、failed、no_dispatcher、unknown_destination)。 |
每收到一条 finding,本模块就按优先级顺序评估租户已启用的路由;
每个留空的谓词维度都表示任意,通配符匹配支持精确或 prefix* 形式。
匹配发生在一个读视图内,网络投递严格地在任何存储事务之外运行,
结果随后被写入仅追加 ledger。创建、更改或删除一条路由,以及发送一条测试通知,都是
特权、自审计的操作,归属于真实主体。route 与 delivery 路由发布在独立的 beta
模块路由参考中,而非稳定核心契约中;它们的字段级形状存在于
产品的类型化接口中。
它消费什么、产出什么
Section titled “它消费什么、产出什么”- 消费
finding.reported—— 那条唯一的产品级告警通道。 它是一个路由器,而非探针或计量器:它从不轮询基础设施,也从不进行测量。 - 产出通过一个分发接缝发出的出站通知,由输出 connector 支撑(Slack/Teams、 PagerDuty/Opsgenie、签名 webhook,以及一个覆盖 Splunk/Elastic 的 SIEM 目的地, 经由 CEF/LEEF/syslog/OTLP)。一条通知只携带 finding 已经安全的展示字段——标题、kind、 严重程度、主体引用和一个关联哈希——绝不携带载荷、prompt、机密或 PII。 最小数据是传输层的一项属性,而非事后过滤。目的地机密只存在于运营方所置备的 connector 配置中,在此仅以一个非机密名称引用。
- 模块目录 —— 模块 XV 所处的位置以及 Govern/Actuate 划分。
- 推送到你的 SIEM —— S2S 推送驱动
(
modules/siemforward),它把 finding 和封存的审计 ledger 重塑为某座塔的原生方言 (OCSF/CEF/LEEF/syslog/OTLP),并搭乘 eventing 平台的持久化投递—— 作为上述目的地的推送补充。 - 事件总线参考 ——
finding.reported事件及其FindingReport载荷。 - 访问与资源 map —— 一份同属 Core/Intelligence 的参考。
- 将审计转发到 Splunk —— 配置一个 SIEM 目的地。
- 治理与审批 —— 对本模块路由的 finding 采取行动。
- 诚实与限制 —— 贯穿产品的默认 deny-closed 立场。