INACTIVE 时告警自动恢复。Google 文档说明会为新增和更新的 Finding 发送通知,但没有明确写出变为 INACTIVE 也会照常发布,请在验证步骤中确认恢复通知确实到达。
在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Google Security Command Center,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Google Security Command Center,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Google Cloud 中配置
需要一个已启用 Security Command Center 的组织,以及一个存放 Pub/Sub 主题的项目。创建通知配置需要组织上的 Security Center Admin(
roles/securitycenter.admin)权限,以及主题所在项目的 Project IAM Admin(roles/resourcemanager.projectIamAdmin)权限。
1
创建 Pub/Sub 主题
2
创建 SCC 通知配置
securitycenter.notificationServiceAgent 角色,由它向主题发布消息。3
创建推送订阅
把 Flashduty 集成的完整推送地址作为推送端点:推送地址必须是公网可访问的 HTTPS 地址,并使用受信任的证书。
4
验证生命周期
Pub/Sub 推送订阅没有测试按钮。让 SCC 产生一个符合过滤条件的 Finding(例如开放一条
0.0.0.0/0 的防火墙规则),确认 Flashduty 收到告警;修复后 Finding 变为 INACTIVE,确认原告警恢复。也可以在 Pub/Sub 控制台向主题手动发布一条 Finding 通知 JSON 用来验证连通性。Alert Key
Flashduty 使用
finding.name 作为 Alert Key,格式为 organizations/{组织 ID}/sources/{来源 ID}/findings/{Finding ID}。SCC 的 Finding 资源定义里,name 是 Finding 的相对资源名称,同一个 Finding 的新增、更新和变为 INACTIVE 的通知都携带相同的值。
标题、等级、状态、类别、事件时间的变化都不会改变 Alert Key。缺少 finding.name 的请求会被拒绝,因为无法可靠关联后续更新和恢复。
状态和告警等级
告警标题为
类别: 资源显示名(例如 OPEN_FIREWALL: allow-all),缺少时依次回退到类别、资源显示名。告警描述取自 finding.description。静音状态(finding.mute)只作为标签 mute 保留,不影响告警状态。
Flashduty 还会把以下字段写入标签:category、resource_name、resource_type、project、location、service、finding_name、finding_state、finding_severity、finding_class、finding_source、notification_config_name、external_uri。不会读取 securityMarks。
排查问题
- Pub/Sub 反复重发同一条消息:Flashduty 对无法解析的请求返回 4xx,Pub/Sub 会按退避策略重发。检查推送端点是否带有
integration_key,以及是否误开了 payload unwrapping;可为订阅配置死信主题,避免无限重试 - Flashduty 返回参数错误:错误信息会指出缺失的字段,例如
finding.name is required表示通知里没有 Finding - 告警没有恢复:检查通知配置的过滤条件是否只包含
state="ACTIVE" - 没有收到任何告警:确认通知配置的过滤条件确实命中了 Finding,SCC 服务账号有权限向主题发布消息,订阅状态为有效