跳转到主要内容
通过 Semgrep AppSec Platform 的 Webhook 集成,将新发现的代码问题(SAST、SCA、Secrets)和供应链安全事件同步到 Flashduty On-call。每个发现(finding)对应一条 Flashduty 告警;影响到您项目的供应链事件对应一条 Flashduty 告警。

在 Flashduty On-call

您可通过以下两种方式获取集成推送地址,任选其一即可。

使用专属集成

  1. 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增集成
  3. 选择 Semgrep,点击 保存
  4. 打开生成的集成卡片,复制 推送地址

使用共享集成

  1. 进入 Flashduty 控制台,选择 集成中心 → 告警事件
  2. 选择 Semgrep,填写集成名称
  3. 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
  4. 点击 保存,复制生成的 推送地址

在 Semgrep 中配置

需要 Semgrep AppSec Platform 的管理权限。
1

创建 Webhook 集成

操作路径:Semgrep AppSec Platform › Settings › Integrations › Add › Webhook填写完成后点击 Subscribe。
2

在策略中开启通知

操作路径:Semgrep AppSec Platform › Rules & Policies › Remediation › + Create automation编辑或创建 Unified Policies 中的策略:如需接收供应链安全事件,在同一页面(Rules & Policies › Remediation)找到 Early notification for Supply Chain incidents 策略,开启并选择同一个 Webhook 集成。
3

在 Semgrep 中测试并验证

操作路径:Semgrep AppSec Platform › Settings › Integrations
  1. 点击该 Webhook 集成旁的 Test 按钮,确认 Flashduty 返回成功。测试请求的内容为 [{"text":"Test Notification","username":"Semgrep"}],Flashduty 返回成功,并创建一条标题为 “Semgrep test notification” 的独立 Info 告警,请手动关闭。该测试只证明连通性
  2. 提交一段会命中规则的代码并触发扫描,确认 Flashduty 收到新的告警

推送内容和告警恢复

Semgrep 推送三类对象,一次请求可以包含多个: Semgrep 只在发现首次出现时推送一次,不推送更新或已修复通知,因此 Flashduty 告警不会自动恢复。请在协作空间中开启超时自动关闭,建议 7 天;也可以在问题修复后手动关闭。

Alert Key

Alert Key 由对象类型和上表中的 ID 共同计算,同一发现重复投递会合并,数字相同的发现 ID 和事件 ID 不会互相合并。规则名称、严重程度等字段变化不会改变 Alert Key。缺少对应 ID 的对象会导致整个请求被拒绝。

状态和告警等级

发现的 severity 为数字,由规则严重程度换算: 影响到您项目的供应链事件固定为 Critical。

标签

发现: 供应链事件: 所有告警都带有 source=semgrep 和 event_type(finding 或 supply_chain_incident)。告警描述为规则的 message,不会推送代码片段。

排查问题

  • Flashduty 返回参数错误:确认 Webhook URL 完整且包含 integration_key;发现缺少 numeric_id 或事件缺少 incident_id 时也会返回该错误
  • 没有收到告警:确认策略中已添加 Call a webhook 动作;Semgrep 只在发现首次出现时推送,已有的发现不会重复通知
  • 告警一直未关闭:Semgrep 没有恢复通知,请开启协作空间的超时自动关闭
  • 收到的告警太多:在 Semgrep 策略中提高严重程度或置信度筛选条件
更多信息请参阅 Semgrep Webhooks 文档。