Sigstore供应链签名安全监控与告警 - 第3节
告警在 Sigstore 安全生态中的角色
Sigstore 的核心使命是构建“默认安全”的软件供应链签名基础设施。然而,任何安全系统都无法保证 100% 无故障运行。告警机制在 Sigstore 生态中扮演着“安全哨兵”的角色,它连接了底层安全事件与上层运维响应,是保障签名链可信度的关键防线。
核心观点: 没有告警的 Sigstore 部署,相当于在黑暗中运行一座没有仪表盘的核反应堆。告警不是可选项,而是安全运营的强制组件。
告警的三大核心角色
| 角色 | 说明 | 典型场景 |
|---|---|---|
| 检测器 | 实时发现签名、验证、证书生命周期中的异常行为 | 检测到使用已吊销证书的签名、验证失败率突增 |
| 溯源器 | 记录告警上下文,为事后审计和根因分析提供证据链 | 记录告警触发时的 Rekor 条目、OIDC 令牌信息 |
| 响应触发器 | 触发自动化或人工干预流程,阻断攻击链或修复配置 | 自动吊销泄露的密钥、隔离异常构建节点 |
告警在 Sigstore 架构中的位置
下图展示了告警系统如何嵌入 Sigstore 的核心组件(Fulcio CA、Rekor 透明日志、Cosign 客户端)之间,形成闭环监控。
实践要点: 告警层应独立于 Sigstore 核心组件部署,避免因核心组件故障导致告警系统失效。推荐使用 Prometheus + Alertmanager 作为告警引擎。
告警类型概览
Sigstore 告警体系按触发源和影响范围可分为五大类。理解这些类型是制定告警策略的基础。
五大告警类型
| 类型 | 触发条件 | 严重级别 | 典型告警示例 |
|---|---|---|---|
| 证书生命周期告警 | 证书即将过期、已过期、被吊销、签发异常 | Critical / Warning | Fulcio 签发的证书有效期不足 24 小时 |
| 签名验证告警 | 验证失败率超过阈值、签名算法不匹配、签名者身份异常 | Critical | 某镜像的 Cosign 验证失败率突增至 30% |
| 透明日志一致性告警 | Rekor 日志条目校验失败、树哈希不一致、日志追加延迟过高 | Critical | Rekor 树根哈希与公共见证人记录不匹配 |
| OIDC 身份告警 | OIDC 令牌签发异常、身份提供者不可达、令牌声明异常 | Warning / Critical | OIDC 提供者返回 401 错误超过 5 分钟 |
| 基础设施与性能告警 | 组件宕机、API 延迟过高、资源使用率超限 | Warning / Info | Fulcio API 响应时间超过 5 秒 |
告警严重级别定义
- Critical(严重): 直接影响签名链可信度或可用性,需要立即响应。例如:证书吊销、验证失败率超过 20%。
- Warning(警告): 可能发展为严重问题,需要计划性处理。例如:证书剩余有效期不足 7 天、OIDC 提供者间歇性不可达。
- Info(信息): 常规状态变更或低风险事件,用于审计和趋势分析。例如:新证书签发成功、Rekor 日志条目追加完成。
常见误区: 不要将所有告警都设置为 Critical 级别。过度告警会导致“告警疲劳”,使运维人员忽略真正重要的告警。建议 Critical 告警占比不超过总告警量的 10%。
告警类型与 Sigstore 组件的映射关系
下表展示了每种告警类型主要关联的 Sigstore 组件,帮助你在配置监控时快速定位目标。
| 告警类型 | 主要关联组件 | 次要关联组件 |
|---|---|---|
| 证书生命周期告警 | Fulcio CA | Cosign(验证时检查证书状态) |
| 签名验证告警 | Cosign | Rekor(验证时查询日志) |
| 透明日志一致性告警 | Rekor | 公共见证人(Witness) |
| OIDC 身份告警 | Fulcio / Cosign | 外部 OIDC 提供者(GitHub、Google 等) |
| 基础设施与性能告警 | 所有组件 | Kubernetes / 容器运行时 |
告警生命周期
一个完整的告警从产生到关闭通常经历以下阶段,理解这个流程有助于设计告警处理策略。
关键指标: 告警响应时间(MTTR)是衡量告警体系有效性的核心指标。对于 Critical 级别的 Sigstore 告警,建议 MTTR 目标设定在 15 分钟以内。
告警配置示例(Prometheus 规则)
以下是一个针对证书过期告警的 Prometheus 告警规则示例,展示了如何将告警类型映射为可执行的监控配置。
groups:
- name: sigstore_certificate_alerts
rules:
- alert: FulcioCertificateExpiringSoon
expr: |
fulcio_certificate_expiry_seconds < 604800
for: 5m
labels:
severity: warning
team: security
annotations:
summary: "Fulcio 证书将在 7 天内过期"
description: "证书 {{ $labels.certificate_id }} 剩余有效期 {{ $value | humanizeDuration }}"
- alert: CosignVerificationFailureRateHigh
expr: |
rate(cosign_verification_failures_total[5m]) / rate(cosign_verification_total[5m]) > 0.2
for: 2m
labels:
severity: critical
team: security
annotations:
summary: "Cosign 验证失败率超过 20%"
description: "当前失败率 {{ $value | humanizePercentage }}"
最佳实践: 为每个告警规则添加
team 和 runbook 标签,便于自动路由到正确的响应团队,并快速获取处理指南。