在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Semgrep,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Semgrep,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Semgrep 中配置
需要 Semgrep AppSec Platform 的管理权限。
1
创建 Webhook 集成
- 在 Semgrep AppSec Platform 中点击 Settings → Integrations → Add integration,选择 Webhook
- Name 填写集成名称
- Webhook URL 粘贴 Flashduty 的完整推送地址,地址中需包含
integration_key - Signature Secret 可留空。填写后(至少 15 个字符),Semgrep 会在每次推送中携带
X-Semgrep-Signature-256请求头;Flashduty 不校验该签名,通过地址中的integration_key认证 - 点击 Subscribe
2
在策略中开启通知
编辑或创建 Unified Policies 中的策略,点击 Add action → Call a webhook,选择刚创建的 Webhook 集成。策略的筛选条件(严重程度、置信度、项目等)决定哪些发现会推送到 Flashduty。Semgrep 要求策略至少包含一个条件才能保存,例如 Confidence 为 High、Medium、Low 中任意值。如需接收供应链安全事件,开启 Early notification for Supply Chain incidents 策略并选择同一个 Webhook 集成。
3
保存并验证
- 在 Settings → Integrations 中点击该 Webhook 集成的 Test 按钮,确认 Flashduty 返回成功。测试请求的内容为
[{"text":"Test Notification","username":"Semgrep"}],Flashduty 返回成功,并创建一条标题为 “Semgrep test notification” 的独立 Info 告警,请手动关闭 - 提交一段会命中规则的代码并触发扫描,确认 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 策略中提高严重程度或置信度筛选条件