跳转到内容

模块 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.samplededge.observed 这样的原始遥测: 一条开销告警是以 finops_budget finding 的形式抵达的,而不是一条成本样本。 这就是把整个产品的 finding 转化为可执行通知的接缝。

本模块在共享数据模型中声明了两个租户级实体:

实体模式它持有什么
route可变、受审计一条路由规则:对事件类型、finding-kind 通配符(如 health_*)、最低严重程度、源模块和主体类型的谓词 → 一个具名目的地,带有按路由的去重与节流窗口以及优先级。不持有任何目的地凭据——只持有一个非机密的目的地名称。
delivery仅追加每次投递尝试的证据 ledger:路由、目的地、finding kind、严重程度、主体引用、简短标题、一个关联哈希,以及一个结果类别(deliveredfailedno_dispatcherunknown_destination)。

每收到一条 finding,本模块就按优先级顺序评估租户已启用的路由; 每个留空的谓词维度都表示任意,通配符匹配支持精确或 prefix* 形式。 匹配发生在一个读视图内,网络投递严格地在任何存储事务之外运行, 结果随后被写入仅追加 ledger。创建、更改或删除一条路由,以及发送一条测试通知,都是 特权、自审计的操作,归属于真实主体。route 与 delivery 路由发布在独立的 beta 模块路由参考中,而非稳定核心契约中;它们的字段级形状存在于 产品的类型化接口中。

  • 消费 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 立场。