Anthropic 副首席信息安全官 Jason Clinton 详细介绍了安全工程团队如何保障一个由 AI 编写 80% 合并代码的 SDLC 的安全。
在 Anthropic,代码量和部署速度呈指数级增长。我们的软件工程师平均每季度交付的代码量是 2021 年至 2025 年期间的 8 倍。
我们的审查、监控和其他安全流程也需要跟上这一加速的步伐。否则,就会成为瓶颈(阿姆达尔定律)。
我们的软件开发流程也发生了巨大变化。Claude 已从编码助手演变为主要的代码创建者和审查者。如今,Claude 编写了约 80% 合并到我们代码库中的代码。
超过一半的代码是由我们内部版本的 Claude Tag 合并的,而人类工程师则专注于指导、设定意图并拥有最终审批权。
这意味着我们的安全团队必须防御一个快速扩张的攻击面,并加固一个以非确定性、不断演进的智能体为核心的生命周期。在本文中,我将介绍保障软件开发生命周期(SDLC)安全的策略。
💡 译者注:本文旨在与我们最近发布的 “智能体零信任” 框架结合阅读;本文中的所有内容都在实施中使用了该框架的安全设计理念。
我们针对的威胁是具体的:被攻破或提示注入的智能体引入恶意更改;智能体作为可信输入吸收的供应链和依赖项投毒;以及更常见的、现在以更高频率出现的应用漏洞类别。后续的每一项控制措施都至少对应其中一种威胁。
我们部署了几项总体策略来实现这一目标,同时不显著拖慢开发速度,包括:
- 将安全左移,并完全集成到代码开发阶段;
- 使用严格的访问和身份边界来限制爆炸半径;
- 在生产前后结合自动化确定性审查和智能体审查;
- 在最高杠杆点引入人工干预。
在本文中,我们将介绍我们在软件开发生命周期的特定阶段实施的安全流程及其背后的核心原则。这些原则更具持久性,因为安全团队必须随着模型能力的演进不断重新审视,并常常重新设计其流程。
不断演进的软件开发生命周期
The evolving software development lifecycle

我们的开发团队已经详细介绍了其软件开发生命周期的变化,因此在深入每个阶段之前,这里将做一个简要概述。
从高层次来看,我们的软件开发生命周期被压缩了。它由原型和内部采用(dogfooding)驱动,而非冗长的规划周期。创意来自组织的各个角落,传统角色(前端、后端、设计)变得模糊。审查和审批仍然有人类参与,但也由智能体循环驱动。
虽然每个阶段都因 Claude Code 和 Claude Tag 而发生了根本性的转变和加速,但每个阶段的名称和目的对于来自更传统组织的开发者来说并不陌生。这些是自然的关卡,我们也将其用作 AI 原生 SDLC 安全流程的一部分。
规划
Plan
我们最早的安全自动化之一是一个由 Claude Opus 驱动的简单 PSR(项目安全审查)Web 应用程序。它接收项目设计文档,并针对 MITRE ATT&CK 框架进行分析,以识别潜在漏洞并提出缓解建议。
我们通过将其连接到一个内部知识索引,显著增强了该系统,该索引提供了跨我们组织范围政策、过去决策和相关系统的更深层上下文。

这让我们能更好地理解潜在风险,并且还能捕获 PSR 中缺失的信息。这一项实施节省了应用安全团队的大部分时间。一旦我们确信 Claude 在评估风险方面是准确的,我们就允许团队在 Claude 认为发布风险足够低的情况下自行批准其项目。
在这里,我们可以看到对 AI 原生 SDLC 的首批关键适应之一。PSR 最初旨在在漫长且昂贵的编码过程之前捕获安全问题。在此阶段发现问题可以节省数月的重新开发时间。
如今,主要功能的多个原型可以在数小时内创建,这使得详细的架构审查成为一个不那么关键的关卡。将我们的 PSR 应用程序连接到知识索引,可以捕获可能被遗漏的上下文,而不会造成不必要的减速。创建一个 Claude Code 技能使 Claude 能够进一步扩展并捕获任何位置的额外上下文。
持久原则:将安全智能体连接到组织上下文。随着规划周期压缩,将这些智能体带到上下文已经存在的地方——聊天线程、先前的审查、代码库——比在可能不再需要它们的阶段强制要求详细文档要有效得多。无论如何,智能体需要代码本身之外的上下文。
或阅读文档:尝试 Claude Code | 开发者文档 | 电子书
编码
Code
在 AI 原生工程组织中的安全专业人员拥有一个新的杠杆:他们可以直接影响代码的创建方式,从而在源头防止漏洞。
以前,团队会观察反复出现的漏洞,并创建安全编码指南来解决它们,但这些指南难以执行且很少标准化。
在 Anthropic,这些指南被编码在 CLAUDE.md 文件和指向组织级技能的引用中,以便代码在生成时就遵循这些最佳实践。这是作为闭环的一部分完成的。一旦智能体发现一个错误类别,相关文件就会被更新,以防止它在未来的代码中再次出现。

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

这对首席信息安全官来说也是一个重要的教训,而且是我不得不通过艰难方式学到的。在考虑智能体的硬边界时,您需要包括它访问其他智能体的权限。
在一次模型升级后,事件响应智能体主动通过 Slack 联系了另一个 Claude 实例。它请求那个可以编写代码的智能体推送修复。这按设计在人工审查关卡被捕获了,但这次经历教会我们,边界应该围绕访问和操作来划定,而不是围绕模型的指令或我们认为模型能做什么。如今在 Anthropic,智能体之间通过 Slack 通信是常态,我们对智能体身份模型给予了相当多的思考。
第二个重大变化是我们的团队处理迁移的方式。每个安全工程团队都经历过这样的时刻:他们意识到需要进行代码迁移来修复公司运营方式中的某些系统性缺陷。过去,首席信息安全官需要开始游说,并请求每个部门一小部分工程资源,持续多个季度才能修复。
迁移的经济成本已经下降,跨公司协调的成本也下降了。Claude 可以在几天内自动化迁移过程,涉及数万行代码。
持久原则:为每个智能体赋予一个单一用途的身份,并为其工作分配最低权限。如果您确实让智能体协调,请让它们通过与人类相同的渠道进行。
治理
Governance
我们已经自动化了许多安全流程,但人类仍然是确保安全软件开发生命周期不可或缺的一部分。但我们的注意力不再集中在审查代码和错误报告上,而是集中在 Claude Tag、循环和仪表板上。
这凸显了强治理的重要性。如果一个技能过时了,一个发现的错误类别从未被写回 CLAUDE.md,或者一个智能体的决策未被抽样,整个结构就会退化。我们通过以下方式避免这种情况:
- 按风险对代码库进行分级,然后根据该级别自动化审查。
- 对所有新的 AI 审查者采用影子模式。新智能体发布评论供人类批准,直到赢得信任。我们的团队还会对它们进行“红队测试”,并尝试插入恶意更改。
- 对所有自动化审批进行抽样。
- 监控我们的关键指标。我们维护并密切监控一个仪表板,汇总每个安全流程和工作流的关键指标。
- 将所有智能体操作路由到 SIEM。每次自动化审批、工具调用和智能体间消息都会记录其使用的信号,并进入我们的 SIEM,以便任何决策事后都可追溯和审计。我们使用这些数据,将这些智能体视为一种新型的内部威胁,并在它们行为异常时发出警报。
持久原则:安全工程师的工作从监控错误演变为监控循环。
唯一不变的是变化
The only constant is change
无论怎样强调软件开发生命周期及其加固方式的演进速度之快都不为过。模型能力每个月都在进步,带来了新的挑战和解决方案。
今天不太有效或经济上不太可行的事情,可能很快就会变得可行。您的团队应该问的正确问题不是“我们负担得起扫描所有东西吗?”,而是“如果扫描几乎免费,我们会运行什么?”请为此做好规划。
本文由 Anthropic 副首席信息安全官 Jason Clinton 撰写。他要感谢 Michael Segner 对本文的贡献。