使用 Cohere North 和 Wiz 创建安全 Agent | Cohere
Creating a Security Agent with Cohere North and Wiz | Cohere
Cohere 通过自定义 Model Context Protocol (MCP) 服务器将企业 AI 智能体平台 North 与云安全平台 Wiz 集成,构建了一个自动化事件响应安全智能体。该智能体暴露八个原子工具,可处理毒性组合爆炸半径分析、端到端事件响应(包括分类、起草 IR 报告、创建 Linear 工单、更新 Wiz 状态)以及自主每周态势简报。此前每个关键发现的手动分类需 30 分钟至 2 小时,该集成将首轮分类循环完全消除,安全工程师从预填充报告和已跟踪工单开始工作。完整实现已在 Cohere 公共仓库开源。
在 Cohere,我们为受监管行业和政府的关键任务环境构建安全、自主的 AI。我们的安全态势必须能够跟上快速迭代的代码库、不断增长的云足迹以及持续演变的威胁格局。
利用我们的企业 AI 智能体平台 Cohere North,我们找到了一种自动化事件响应工作流的方法。本文将详细介绍我们如何通过一个自定义的 Model Context Protocol (MCP) 服务器,将云安全平台 Wiz 连接到 North。
结果如何?一个安全智能体,能够处理整个事件响应工作流,从对关键发现进行分类,到起草 IR 报告、创建工单以及更新 Wiz 状态——所有这些都只需一个 prompt。

挑战:以云的速度将洞察转化为行动
Wiz 会揭示风险因素的毒性组合,这些组合会形成关键的攻击路径,例如一个面向互联网、存在严重漏洞且拥有高权限 IAM 访问权限的虚拟机。信号是高保真的。但更棘手的问题是接下来该怎么做。
将发现转化为协调行动仍然需要人工介入——而且这个工作流对每个团队来说都不同。对于我们的团队来说,一个关键发现意味着:
- 手动调查受影响的资产及其上下文
- 搜索现有的跟踪工单
- 起草事件响应报告
- 在通知利益相关者之前更新 Wiz
这个过程每个发现可能需要 30 分钟到 2 小时。不是因为信号不清晰,而是因为从洞察到行动的路径尚未针对我们确切的环境、工具和团队节奏构建好。而且,随着我们的云足迹扩大,需要同样仔细处理的发现数量也在增加。我们需要一种在不增加人手的情况下缩小这一差距的方法。
解决方案:North 成为安全智能体
我们通过一个自定义的 MCP 服务器将 North 连接到 Wiz,从而将其转变为一个安全智能体。这种集成使 North 成为一个事件响应智能体,能够处理从分类到解决的工作流,帮助安全工程师更快地响应。
North-Wiz-MCP 架构
North 原生支持 MCP,从而实现了简洁、可扩展的架构:
North (智能体平台) → 自定义 MCP 服务器 → Wiz GraphQL API
这个轻量级的 Python MCP 服务器将 Wiz 的能力暴露为八个原子工具:
- wiz_list_issues:打开问题过滤和列表
- wiz_get_issue_details:完整发现上下文检索
- wiz_list_toxic_combinations:多因素攻击路径识别
- wiz_search_vulnerabilities:带利用过滤器的 CVE 查询
- wiz_get_security_posture:聚合指标快照
- wiz_query_assets:云资产清单查询
- wiz_get_compliance_status:框架合规性评分
- wiz_update_issue:状态更改和备注更新
North 通过共享密钥头向 MCP 服务器进行身份验证,而服务器则使用 OAuth2 客户端凭证访问 Wiz,从而确保服务账户令牌在服务器端安全。

我们构建的内容:自动化工作流
用例 1:毒性组合爆炸半径分析
“毒性组合”是 Wiz 对多因素攻击路径的术语:即那些单独可控的风险串联起来形成关键暴露的发现。一个面向互联网的虚拟机是个问题。一个存在严重 CVE 的虚拟机是个问题。一个面向互联网、存在严重 CVE,_并且_拥有可访问敏感数据的 IAM 角色的虚拟机,则完全是另一类问题。
North 分析关键的 Wiz 发现,评估攻击链,并根据实际的爆炸半径对其进行排序,同时考虑互联网暴露、权限级别和数据敏感性。这个 20 秒的分析取代了过去需要占用安全工程师半个上午的工作。
这是我们团队设计的 prompt:
"分析 Wiz 中所有关键的毒性组合发现。对于每个发现,推理完整的攻击链,并根据实际爆炸半径进行排序。权衡互联网暴露、权限级别以及攻击者利用后可能实现的目标。以优先级风险表的形式呈现,并为每个排序提供简短的理由。"
在幕后,North 调用
wiz_list_toxic_combinations(severity="CRITICAL"),读取每个发现上的 attackChain.description 字段(其中包含 Wiz 对多跳攻击路径的描述),然后使用推理能力进行排序。输出是一个风险表,根据智能体对实际风险的评估进行排序,同时权衡互联网暴露、权限级别和数据敏感性。

用例 2:辅助事件响应
这是需要最多工程投入的工作流。以下是我们编写的 prompt:
"端到端调查我们最关键的未处理 Wiz 问题。获取完整详情,使用 Wiz 中的确切资产名称和日期编写 IR 报告,创建一个 Linear [注:我们的内部项目管理工具] 工单,并在 Wiz 中将问题标记为 IN_PROGRESS,同时添加一个调查备注,总结你的发现。"
具体流程:
- wiz_list_issues(severity="CRITICAL", status="OPEN", limit=10) 获取当前的关键发现。
- 智能体根据订阅、资产敏感性标签和最近更新时间选择优先级最高的问题。
- wiz_get_issue_details(issue_id) 拉取完整的发现信息:资产名称、类型、云平台、区域、标签、创建日期和 Wiz 规则描述。
- 智能体在 Linear 中搜索基于相同 Wiz 问题 ID 的现有工单,以避免重复。
- 如果不存在,则在安全队列中创建一个包含 Wiz 门户链接的 Linear 工单。
- wiz_update_issue(issue_id, status="IN_PROGRESS", note="...") 标记问题并添加结构化的调查备注。
- 智能体在文档模式下生成完整的 IR 报告。
报告格式是严格的,编码在系统 prompt 中,以防止我们在早期迭代中遇到的幻觉问题(下文详述)。它包括严重性、状态、报告日期、工单链接、两句话摘要、包含来自 Wiz 的确切字段值的受影响资产表、基于规则描述的根本原因、可利用性和爆炸半径评估,以及优先级修复表。

用例 3:自主每周态势简报
我们构建了一个 North 自动化——一个基于图表的定时工作流——每周一凌晨 3:00 运行,无需任何人请求即可生成一份安全态势文档。
该自动化按顺序调用三个工具:wiz_get_security_posture 获取聚合指标,wiz_list_toxic_combinations(severity="CRITICAL") 获取活跃的毒性组合聚焦,以及 wiz_search_vulnerabilities(has_cisa_kev=True) 获取我们环境中被积极利用的 CVE。然后,它生成一份文档模式报告,涵盖:
- 三句话执行摘要: 整体态势、最大风险、首要行动项
- 指标表: 关键、高、中未处理问题数量,毒性组合数量,CISA KEV 数量
- 前 5 个关键问题: 包含资产名称、规则、订阅、存在时间和 Wiz 门户链接
- 毒性组合聚焦: 包含完整路径描述的最高严重性攻击链
- CISA KEV 观察: 我们基础设施中存在的被积极利用的 CVE
- 建议行动: 按优先级排序的当周修复清单
这份简报每周一早上会出现在安全团队的收件箱中。无需分析师记得去拉取,也无需有人决定其格式,并且数据在运行时刻是最新的。
结果与影响
该集成完全消除了首轮分类循环。安全工程师现在从预填充的事件响应报告和已跟踪的工单开始,而不是原始告警。对于关键发现,首次人工接触点从_阅读告警_转变为_评估智能体的评估_——这是对人类专业知识更智能、更具战略性的利用。
以前,每个发现的分类可能需要 30 分钟到 2 小时,而且在不增加人手的情况下无法加速。对于我们的团队来说,考虑到云环境的快速增长,这种速度是不可持续的。
自动化的每周态势简报现在无需人工努力即可提供一致的可见性,确保团队始终基于最新的态势感知进行运作。
关键技术经验
- Prompt 位置 > 长度: 确保关键指令出现在系统 prompt 的顶部。
- 验证 API 假设: 围绕实际的 API 行为(而非文档)构建工具。
- 为部分失败设计: 使写操作具有容错性,以处理单个组件故障。
- 上下文感知的丰富化: 通过区分发现类型(配置 vs. 漏洞)来限制幻觉。
为什么 North 表现出色
North 的 MCP 原生架构提供了我们所需的杠杆作用:一次构建 Wiz 集成,即可在所有工作流中暴露它。该平台的推理能力能够处理复杂的安全分析,同时通过使用 Wiz 的确切字段值(而非推断名称)来保持严格的数据保真度。这种集成灵活性和分析精度的结合,使 North 成为现代安全运营中心神经系统的独特定位。
完整实现可在我们的公共仓库中找到,使您的组织能够复制此模式并转变您的安全响应能力。
使用 North 自行构建
以下是从零开始到拥有一个可用的 North 智能体的路径。完整源代码在我们的公共仓库中。
前提条件: 一个您拥有控制权的服务账户的 Wiz 租户,访问 North 的权限,以及用于托管服务器的 Docker 或 Cloud Run 项目。
步骤 1:创建 Wiz 服务账户
在 Wiz 中,创建一个具有以下作用域的服务账户:
read:issues
read:resources
read:vulnerabilities
read:threats
read:network_exposure
update:issues
write:issue_status
write:issue_comments (可选 — 用于调查备注)
保存客户端 ID 和密钥。您将在下一步中用到它们。
步骤 2:部署 MCP 服务器
克隆仓库并复制 .env 文件:
git clone https://github.com/cohere-ai/cohere-security-toolkit.git
cd cohere-security-toolkit/wiz-security
cp .env.example .env
用您的 Wiz 凭证填写 .env,并为 MCP_SERVER_SECRET 生成一个随机值(这是 North 用于向您的服务器进行身份验证的共享密钥):
WIZ_CLIENT_ID=your-client-id
WIZ_CLIENT_SECRET=your-client-secret
WIZ_API_ENDPOINT=https://api.<your-tenant>.app.wiz.io/graphql
WIZ_AUTH_URL=https://auth.app.wiz.io/oauth/token
MCP_SERVER_SECRET=your-random-secret
本地(用于测试):
uv venv && uv pip install -e .
.venv/bin/python wiz_mcp_server.py
# 运行在 http://localhost:3012
使用 ngrok 暴露它,以便 North 可以访问:
ngrok http 3012
# 复制 https://xxxxx.ngrok-free.app URL
生产环境 (Cloud Run):
docker build --platform linux/amd64 -t wiz-mcp-server .
docker tag wiz-mcp-server REGION-docker.pkg.dev/PROJECT/REPO/wiz-mcp-server:latest
docker push REGION-docker.pkg.dev/PROJECT/REPO/wiz-mcp-server:latest
gcloud run deploy wiz-mcp-server \
--image REGION-docker.pkg.dev/PROJECT/REPO/wiz-mcp-server:latest \
--region REGION \
--set-secrets WIZ_CLIENT_ID=wiz-client-id:latest,WIZ_CLIENT_SECRET=wiz-client-secret:latest,MCP_SERVER_SECRET=mcp-server-secret:latest
步骤 3:连接到 North
在 North 中,创建一个新的智能体,并在“工具”部分添加一个 MCP 服务器:
- URL: https://your-server-url/mcp
- Auth header: X-North-Server-Secret:<您的 MCP_SERVER_SECRET>
North 将自动发现这八个工具。

步骤 4:添加系统 prompt
从仓库中打开 north-system-prompt.md,并将全部内容粘贴到智能体的系统 prompt 字段中。这编码了 IR 报告格式、工具路由规则、按发现类型的丰富策略,以及防止智能体幻觉资产名称的命名规则。

步骤 5:运行您的第一个 prompt
从一些低风险的操作开始,以验证连接:
"从 Wiz 获取安全态势快照,并总结我们当前的状态。"
如果工具连接正确,智能体会调用 wiz_get_security_posture 并返回一个包含指向您 Wiz 仪表板链接的指标摘要。然后,尝试上面描述的毒性组合分析和端到端 IR 工作流。

为什么 North 表现出色
North 的 MCP 原生架构提供了我们所需的杠杆作用:一次构建 Wiz 集成,即可在所有工作流中暴露它。该平台的推理能力能够处理复杂的安全分析,同时通过使用 Wiz 的确切字段值(而非推断名称)来保持严格的数据保真度。这种集成灵活性和分析精度的结合,使 North 成为现代安全运营中心神经系统的独特定位。
完整实现可在我们的公共仓库中找到,使您的组织能够复制此模式并转变您的安全响应能力。