资讯动态

ThreatMapper HTTP Endpoint 集成指南:将漏洞与合规告警转发到任意 HTTP 服务

发布时间:2026/10/15 20:44:05 来源:尧图企业网站定制
网络安全应用安全云原生漏洞扫描【免费下载链接】ThreatMapperOpen Source Cloud Native Application Protection Platform (CNAPP)项目地址https://gitcode.com/gh_mirrors/th/ThreatMapper点击查看免费下载ThreatMapper 支持将各类扫描告警漏洞、密钥泄漏、恶意软件、合规检查、云合规以 JSON 负载的形式转发到任意 HTTP 端点适用于自建告警网关、Webhook 聚合器或内部 SIEM 等场景。本文以官方集成文档 docs/docs/integrations/http-endpoint.md 为核心结合 HTTP Endpoint 集成实现源码 与 通知调度逻辑完整讲解配置方法、认证头设置、消息格式与底层工作流读者可据此快速搭建一条可用的 HTTP 告警通道。功能概述与适用场景HTTP Endpoint 是 ThreatMapper 集成体系Integrations中的一种通知渠道。在 ThreatMapper 中任何一次新扫描发现结果例如 CI 扫描 或 自动扫描 产生的漏洞、密钥、恶意软件、合规与云合规告警都会触发通知将被检测到的详细信息提交到已配置的通知服务详见 Integrations 总览。对于 HTTP Endpoint 集成ThreatMapper 会在扫描产生结果后通过 HTTP POST 请求将告警数据推送到你指定的 URL。它适合将告警接入自建的消息网关、告警聚合平台或内部监控系统对接需要自定义协议或自定义鉴权的企业系统用简单 Webhook 方式接收 ThreatMapper 的结构化扫描结果。与其他聊天类通知Slack、Teams、PagerDuty、Email、Jira 等不同HTTP Endpoint 属于**非消息格式non-messaging format**集成在 integration.go 的IsMessagingFormat判断中HTTP Endpoint 不在消息格式列表中因此发送的负载是结构化 JSON 数组而非聊天消息模板接收方可以按字段直接解析。同时SendSummaryLink()返回false见 http-endpoint.go表示该集成不会发送扫描摘要链接而是逐条发送扫描结果明细。在 Management Console 中配置 HTTP Endpoint在 ThreatMapper 控制台的Integrations页面选择 HTTP Endpoint填写以下配置项配置项是否必填说明HTTP Endpoint URL必填接收通知的目标地址例如http://10.3.16.2:8080。该地址需能被 ThreatMapper 服务器deepfence_server访问到Authentication Header可选当目标 API 服务器要求认证时可设置认证 HTTP 头header的值配置完成后每当有新扫描结果产生ThreatMapper 就会向该端点推送通知。配置项的校验规则从源码 types.go 可以看到两个配置项的具体约束URLJSON 字段url带有validate:required,url标签即必填且必须是合法 URLAuthHeaderJSON 字段auth_header可选没有必填约束。type Config struct { URL string json:url validate:required,url required:true AuthHeader string json:auth_header }在新增/更新集成时服务端通过ValidateConfig(validate)调用validate.Struct(h.Config)对配置做校验见 http-endpoint.go校验不通过会直接返回ValidatorError配置不会入库。另外需要注意auth_header被列入 constants.go 的SensitiveFields敏感字段集合。在控制台查询已配置的集成时服务端会对敏感字段做脱敏处理——integration.go 中的RedactSensitiveFieldsInConfig会把auth_header的原值替换为掩码字段形如auth_header_masked因此认证头值在列表接口中不会以明文返回。认证头Authentication Header的使用方式当目标 HTTP API 服务器要求认证时在集成配置中填入认证头的值即可。底层实现中该值会被作为 HTTP 请求的Authorization请求头发送。从 http-endpoint.go 的实现可见if h.Config.AuthHeader ! { req.Header.Set(Authorization, h.Config.AuthHeader) }也就是说只需把完整的认证头值例如Bearer token、Basic base64或自定义的 token 字符串填到 Authentication Header 字段ThreatMapper 就会原样放入Authorization头中。如果留空则发送不带认证的请求。消息发送格式与请求细节请求方式与头部方法HTTPPOSTContent-Typeapplication/jsonBody扫描结果数组的 JSON 序列化结果json.Marshal(message)其中message为[]map[string]interface{}类型即一组告警记录对象。实现见 http-endpoint.go。负载结构示例每个数组元素对应一条扫描结果字段随扫描类型而不同并会注入公共的节点/扫描上下文。从 notification.go 的injectNodeDataMap可以看出每条记录都会附带以下字段字段说明node_id节点 IDscan_id扫描 IDnode_name节点名称node_type节点类型host / image / container 等docker_container_name容器名若为容器扫描docker_image_name镜像名若为镜像扫描host_name主机名若为主机扫描kubernetes_cluster_nameKubernetes 集群名若适用cloud_account_id云账号 ID若适用此外外层还会通过extras携带扫描的公共信息utils.ToMapany包括scan_type、scan_result_link指向控制台扫描结果页的链接以及severity_counts严重性统计等。不同扫描类型的字段差异如漏洞扫描的cve_id、cve_severity、cve_cvss_score密钥扫描的rule_id、matched_content恶意软件扫描的rule_name、file_severity等参见 notification.go 中的fieldsMap定义。注意fieldsMap主要用于消息格式集成聊天应用的字段映射HTTP Endpoint 走非消息格式分支发送的是扫描结果的全字段 JSON见 notification.go 的else分支接收方可按utils.ToMapT输出的完整字段自行解析。连通性验证与错误处理添加集成时的测试消息在新增或更新集成时服务端会先调用IsValidCredential做连通性验证见 http-endpoint.go向配置的 URL 发送一条测试消息{text: Test message from Deepfence}只有当目标端点返回HTTP 200时验证才被认为通过否则控制台会返回ErrInvalidCredential错误见 integration.go集成不会保存。因此配置完成后立刻收到一条Test message from Deepfence是正常现象可用来确认通道是否打通。发送失败与重试正式通知发送通过utils.GetHTTPClient()提供的 HTTP 客户端执行utils.go该客户端超时时间为10 秒并会继承环境代理设置。错误处理逻辑见 errors.go连接被拒绝syscall.ECONNREFUSED→ 返回Connection Refused连接超时net.Error且Timeout()→ 返回Connection Timeout响应状态码非 200 → 返回带状态码的HTTPError。通知发送失败时集成记录会被标记错误信息UpdateIntegrationStatus见 notification.go并在 通知错误退避机制 生效期间跳过该集成默认退避 15 分钟可通过环境变量DEEPFENCE_NOTIFICATION_ERROR_BACKOFF_MINUTES调整。成功恢复后错误标记会被清除告警通道自动恢复。底层工作流告警如何被推送到 HTTP 端点了解整体链路有助于排查问题和设计接收端定时触发调度器每 60 秒入队一次TriggerSendNotificationsTask见 scheduler.go。扫描增量查询TriggerSendNotifications 读取所有已配置的集成为每个集成入队SendNotificationTaskSendNotifications 按集成配置的过滤器查询自上次发送以来新产生的扫描结果默认时间窗口 60000 毫秒见DefaultNotificationInterval。结果过滤与组装按扫描类型Vulnerability / Secret / Malware / Compliance / CloudCompliance分别处理processForResource只取状态为成功的扫描结果并注入节点上下文信息。调用集成发送对于 HTTP Endpoint调用 SendNotification将结果数组以 JSON POST 发送到目标 URL。状态维护发送成功后更新last_event_updated_at与发送指标确保同一批结果不会重复推送。使用建议与注意事项接收端应能快速响应HTTP 客户端超时为 10 秒utils.go接收端建议尽快返回 200避免因超时被判定为发送失败而触发退避。测试消息与真实消息区分通道验证阶段收到的是{text: Test message from Deepfence}测试消息正式扫描结果则是结构化的数组负载接收端可按text字段或scan_type字段区分两者。认证头直接透传Authentication Header 的值会原样写入Authorization头若端点使用 Bearer Token应填入Bearer token完整形式。敏感信息保护auth_header属敏感字段在集成列表接口中会被掩码展示不要在日志或配置导出中明文保存该值。端点需可达目标 URL 必须能被 deepfence_server或执行通知任务的 deepfence_worker所在网络访问内网地址http://10.3.16.2:8080这类示例仅适用于与控制台同网段的接收端。相关参考集成入口与工厂方法integration.goHTTP Endpoint 配置模型types.goHTTP Endpoint 发送实现http-endpoint.go通知调度与字段注入notification.go集成管理 API 路由router.go集成增删改查处理器integration.go赞分享网络安全应用安全云原生漏洞扫描【免费下载链接】ThreatMapperOpen Source Cloud Native Application Protection Platform (CNAPP)项目地址https://gitcode.com/gh_mirrors/th/ThreatMapper点击查看免费下载相关推荐同一台机器跑多个Claude Code会话Agent Substrate多路复用完整指南同一台机器跑多个Claude Code会话Agent Substrate多路复用完整指南 Agent SubstrateATE 是一个专为自主 Agent人工智能AI AgentAgent 沙箱云原生容器运行时零信任RisingWave HTTP Sink 实战指南将流式数据实时投递到任意 HTTP 服务RisingWave HTTP Sink 实战指南将流式数据实时投递到任意 HTTP 服务 导读 本文基于 RisingWave 仓库中的 integrati数据库流处理后端数据工程GoReleaser HTTP Upload 实战指南把制品推送到任意 HTTP 服务器GoReleaser HTTP Upload 实战指南把制品推送到任意 HTTP 服务器 本文基于 GoReleaser 的 uploads 配置管道系统讲开发工具CI/CD构建工具上一篇SymPy 玻色子量子算符模块 boson 完全指南BosonOp、Fock 态与相干态下一篇用 Wasp 与 LangChain 构建个人 Twitter 智能体向量检索、顺序链与定时任务的完整实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑