Anthropic如何保障AI原生软件开发流程的安全
DataHot 速览
Anthropic副CISO Jason Clinton撰文介绍其安全工程团队如何保障由AI主导的软件开发流程安全。目前Anthropic合并的代码中约80%由Claude编写,超过一半代码由内部版本的Claude Tag合并,人类工程师负责指导、设定意图并最终批准。文章详述了针对受攻击或提示注入的智能体、供应链和依赖投毒等威胁的安全策略,包括将安全左移并与开发阶段全面整合等。
为什么值得关注:本文为数据与AI领域的技术实践,展示了在AI生成代码占比极高的环境下如何实施安全控制,对构建和维护AI Agent相关数据平台的安全体系有直接参考价值。
译文
AI 逐段翻译获取 Claude Code
或阅读文档
试用 Claude Code
开发者文档
电子书
代码
在 AI 原生的工程组织中,安全专业人员有了新的杠杆:他们可以直接影响代码的创建方式,从而在源头预防漏洞。
以前,团队观察到反复出现的漏洞,并制定安全编码指南来应对,但这些指南难以执行,且很少标准化。
在 Anthropic,这些指南被编码到 CLAUDE.md 文件和组织级技能的引用中,使得代码在生成的那一刻就遵循这些最佳实践。这是闭环的一部分。一旦代理发现某个 bug 类别,相关文件就会被更新,以防止它在未来的代码中再次出现。

当然,这并不意味着所有代码都是完美的。我们的团队最初有一个 CLAUDE.md 文件,指示代理在打开 PR 之前运行/security-review作为最后一步。这个普遍可用的命令是我们团队内部审查工作流程的产品化版本,它会查找潜在的攻击者可控输入进入的地方,扫描可疑链接,然后验证其发现。
如今,这些审查在 Claude 生成代码时进行。一旦安装了安全指导插件,Claude 会在生成代码的过程中审查对话和代码。它会在同一会话中提出安全改进建议并处理常见漏洞。
PR 时的其他提醒会推动内部非技术团队将他们的应用托管在我们的低代码应用托管平台上,避免了传统上困扰安全团队的影子 IT。
我们的一些客户选择将/security-review与 PreToolUse 钩子集成,这使这一步成为更严格的关卡。这也很有效,但我们团队选择在测试/CI 阶段纳入我们的硬性代码审查关卡。
除了影响和审查代码之外,控制爆炸半径是我们在这个阶段的主要关注点之一。我们通过围绕身份设置硬边界(更多内容见监控部分)并让我们的开发人员在虚拟机上编码来实现这一点。
将我们的编码转移到远程 VM 是一个相对轻松的转变,与仅使用笔记本电脑相比,给了我们更多的控制和可见性。这些 VM 上的代理流量是出站白名单的。
这些严格的出站控制尤为重要,当代理读取可能携带提示注入载荷的不可信输入时。注入的指令无法到达互联网上的任意目的地:外泄路径被限制在一小组受监控的服务中。
这里你再次看到对 AI 原生 SDLC 的清晰适应。远程编码以前主要用于控制 IP,而今天我们看到更成熟的 AI 编码团队采用这些环境来控制代理。
持久原则:在 AI 原生的工程组织中,左移意味着关闭漏洞发现与更新指令以定制 Claude 生成代码方式之间的循环。限制爆炸半径(最小代理原则)并通过适当的硬边界限制代理可以访问的内容。
测试(CI)
根据我的经验,测试或 CI 阶段很快成为正在进行 AI 原生转型的工程团队最痛苦的瓶颈。在 Anthropic,一旦大多数开发人员使用代理编码工具并同时运行多个代理,很快就清楚地看到团队只能以人类审查代码的速度移动。
让我们明确一点:人的责任仍然是我们流程的核心。我们所做的是通过结合自动代理和确定性审查来加速审查过程,同时保留对人类受监管或真正关键代码的审查。
历史上,人类代码审查一直被视为标准,但经验证据表明它并不完美。安全漏洞经常随全球软件一起发布。我们的审查过程能够审查更多代码并捕获特别复杂的问题,有助于降低这些风险。
获得实质性审查评论的 PR 比例从 16% 增长到 54%因为我们要求代理编写证明其发现有效的证据,从而对发现建立了信心。我们还确定,大约过去 claude.ai 事件背后三分之一的 bug 本可以被我们现在实施的自动化流程捕获。
我们不是唯一发现这一点的组织。Intercom 分享了它自动批准了 19% 的 PR。部署量翻倍,而破坏性代码变更导致的停机时间下降了 35%。CircleCI 在构建 Chunk(一个在 Claude 上解决 CI/CD 维护问题的自主代理)时得出了类似的结论,并且在人类看到之前验证了自己的修复。这种方法使代理任务转化为完成 PR 的比率翻了一番。这种方法使代理任务转化为已完成拉取请求的速率翻了一番。
在 Anthropic,当打开一个 PR 时,多个代理会自动审查它。每个审查代理都针对特定的、狭窄的范围进行设计和限定,并利用 RAG 获取额外的上下文和关于过去事件的记忆。
这比一个大型提示或超级安全代理更有效,原因有几个:
- 它们不共享偏见和盲点
- 如果一个被攻破或犯错,其他审查者可以捕获它
- 精力不会过于分散在多个重点领域
需要明确的是,代理并没有不加检查地将代码合并到生产环境。我们按风险对代码库进行分级,并对哪些部分自动化做出深思熟虑的决定。整个代码库都有严格的人工审批流程。
对于由 Claude 审查和合并的代码,人的责任仍然是核心。每次批准都会记录其背后的信号和推理,并抽取风险加权样本由人类审查。另一轮测试侧重于不变量,如“用户 A 永远无法读取用户 B 的数据”,并触发额外的人工审查。我们还将代理扫描与 SAST 工具结合,这些工具直接发布在 PR 上。
大多数扫描方法,无论是代理式的还是确定性的,都是基于消费的。随着代码吞吐量的增加,成本也会增加,团队需要决定什么样的覆盖率适合他们。
在Anthropic,我们接受这里的成本会随着代码速度的增加而增长,但预计单位成本会下降。今天的模型在编码方面比几年前的模型要好得多,我们预计这种模式将继续下去。
持久原则: 自动化审查是一种不同类型的风险,通过不同的方式控制(通过多个门和具有独立上下文窗口的代理)。人类保持在循环中,但根据代码库的性质,他们可能处于生命周期的不同位置。
当CI确实中断时,Claude Tag充当我们的CI/CD故障的第一响应者。
部署(CD)
Anthropic维护一个强大的暂存环境,我们执行常见的安全最佳实践,例如针对重大发布进行外部渗透测试,以及定期进行DAST扫描,以捕获静态扫描遗漏或看不见的逻辑错误。
与其他SDLC阶段一样,AI为安全团队带来了新的挑战和解决方案。一方面,到达这个阶段的漏洞更少。另一方面,确实存活的漏洞是最微妙和最难捕获的。
再加上更大量的代码更频繁地发布,周期性的动态测试似乎不再那么动态了。
好消息是,AI模型在多步骤、跨组件推理方面更好,可以捕获更大比例的这些复杂漏洞。例如,在2月,我们披露Claude发现并帮助修复了超过500个高危OSS漏洞。
在Anthropic,我们正在暂存环境中实施持续的AI驱动的DAST扫描。这些扫描在系统级别寻找漏洞,即两个或多个服务之间的假设不正确。目前有许多供应商提供这些能力。
持久原则: 动态测试应与部署节奏相匹配。
监控
正如任何优秀的安全团队所知,代码推送到生产环境后工作并没有完成。我们可以假设任何漏洞都会被越来越复杂的攻击者迅速发现。
我们的安全团队已经实施了标准实践项目,例如公共漏洞赏金计划、红队模拟攻击,以及定期扫描我们的依赖项、秘密、供应链、云姿态和容器中的漏洞。
Claude在这些方面发挥着重要作用,但我们将重点关注由于AI原生SDLC而产生的监控工作的更大变化:警报分类和代码迁移。
当Anthropic发出警报时,Claude会:
- 审查生产日志
- 根本原因分析错误;
- 撰写事后分析报告;在某些情况下
- 编写修复错误的代码更改。
这个代理不能做的是自动部署修复。它是一个单一用途的系统账户代理,具有三个权限:它可以写新文档,在公司频道发帖,并访问生产日志。
修复需要来自单独的代理-人类审查系统。原因回到管理身份、权限和硬边界:在将代码推送到生产环境时,限制爆炸半径很重要。分离代理至关重要,因为一个(或多个)代理充当另一个代理的检查。

这也是CISO的重要教训,我不得不艰难地学到这一点。在考虑代理的硬边界时,你需要包括它访问其他代理的权限。
在一次模型升级后,事件响应代理主动通过Slack联系了另一个Claude实例。它要求能够编写代码的代理推送修复。这按设计在人工审查门处被捕获,但这次经历教会我们围绕访问和行动划定边界,而不是围绕模型的指令或我们认为模型能做什么。今天在Anthropic,代理在Slack上的通信是常态,我们对代理身份模型进行了相当多的思考。
第二个主要变化是我们的团队如何处理迁移。每个安全工程团队都经历过这样的时刻:他们意识到需要代码迁移来修复公司运营方式中的某些系统性缺陷。过去,CISO需要开始宣传,并请求各部门少量工程资源,持续多个季度才能修复。
迁移的经济成本已经下降,跨公司协调的成本也下降了。Claude在几天内自动完成迁移过程,数万行代码。
持久原则: 给每个代理一个单一用途的身份,并为其工作分配最小权限。如果你确实让代理协调,让他们通过与人相同的渠道进行。
治理
我们已经自动化了许多安全流程,但人类仍然是确保安全软件开发生命周期不可或缺的一部分。但现在我们的注意力不再集中在审查代码和错误报告上,而是集中在Claude Tag、循环和仪表板上。
这强调了强治理的重要性。如果技能过时,发现的错误类永远不会回到CLAUDE.md中,或者代理的决策没有被抽样,整个结构就会退化。我们通过以下方式避免这种情况:
- 按风险对我们的代码库进行分层,然后基于该级别自动化审查。
- 影子模式用于所有新AI审查者。新代理在获得信任之前发布评论供人类批准。我们的团队还对他们进行“红队”测试,并尝试插入恶意更改。
- 抽样对所有自动化批准的一定百分比进行抽样。
- 监控我们的关键指标。我们维护并密切监控一个仪表板,汇总所有安全流程和工作流的关键指标。
- 将每个代理操作路由到SIEM。每一次自动化审批、工具调用和代理间消息都会连同其使用的信号被记录下来,并进入我们的SIEM,因此任何决策在事后都可归因和审计。我们利用这些数据,将这些代理视为一种新型的内部威胁,并在它们行为偏离时发出警报。
持久原则:安全工程师的工作从监控漏洞演变为监控循环。
关于这些控制背后的评估框架,请参阅CISO代理人工智能指南。
在模型演进中确保AI SDLC安全
很难夸大软件开发生命周期及其加固方式演进的速度。模型能力每月都在提升,既带来新的挑战,也带来新的解决方案。
今天不太可行或经济上不太可行的,很可能很快会实现。你的团队应该问的正确问题不是“我们能负担得起扫描所有内容吗?”而是“如果扫描几乎免费,我们会运行什么?”为此做好规划。
本文由Anthropic的副CISO Jason Clinton撰写。他感谢Michael Segner对本文的贡献。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏