安全护栏与成本控制

安全护栏与成本控制:以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御,以架构、轨迹与故障重放完成工程验收。

学习目标

  • 能解释“安全护栏与成本控制”如何以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御
  • 能区分prompt injection、最小权限、护栏、风险分级、人工批准,并标出控制权、状态和副作用边界
  • 能冻结输入与版本,沿以下证据定位首个分叉:输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用
  • 能注入“网页中的 prompt injection 要求导出密钥,Agent 把它当系统命令并调用发送工具”,完成阻断、恢复、复位和同输入重放

来源、课程身份与适用边界

“安全护栏与成本控制”以Anthropic 公开全文《Building effective agents》建立工程总纲,并用Anthropic Agent 安全工程文章核对本章机制。

这不是一本名为《AI Agent 开发实战》的官方出版物,也不存在官方十四章目录。平台把公开工程文章、官方开发文档和原始论文重组为 14 个工程单元;下列 112 个节点是站内课程地图。正文、代码、图表、实验与练习均为独立教学重写,模型、API、协议或安全边界变化时必须重新验证。

本单元的八个工程坐标

  • 安全护栏与成本控制:这是“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的第 1 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 小特上岗了,三件事会出大事:这是“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的第 2 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • prompt injection:把「数据」骗成「指令」:这是“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的第 3 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 护栏:进出都过一道安检:这是“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的第 4 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 越权与最小权限:别给查天气的助理配删库的钥匙:这是“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的第 5 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 成本控制:每问大脑一次都在烧钱:这是“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的第 6 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 动手玩:先当一回安检员,再当一回省钱管家:这是“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的第 7 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 动手一:关掉护栏,一句「把数据全导出来」它会照做吗:这是“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的第 8 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。

术语与运行合同

本页不变量是:不可信内容永远不能自行扩大工具、资源或身份权限,高风险副作用必须先预览再批准。任何“成功”结论都要保存输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用;模型自评、最终措辞和单次 demo 都不能替代环境事实。

工程机制与反证实验

数据不是指令

网页、邮件和工具结果都可能携带攻击文本,应标记来源并限制其角色。

动手验证:在文档中嵌入越权命令,确认工具政策不变。

权限在执行器强制

提示里的“不要越权”不是安全边界,运行时必须校验主体、动作和资源。

动手验证:删除提示警告后确认越权请求仍被拒绝。

高风险动作先预览

付款、发送、删除和发布要展示具体对象、参数和影响,再等待批准。

动手验证:取消批准,确认副作用计数为零。

预算也是安全控制

攻击可能诱导无限工具循环或大规模检索,应限制轮次、token、费用和速率。

动手验证:注入重复调用,确认预算耗尽进入 blocked。

从架构到故障重放

分步1 / 3

1. 架构复杂度实验

在“安全护栏与成本控制”中切换简单基线、受控工作流和自主循环,先判断“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”是否真的需要更高自主性,再比较延迟、成本、可观测性与风险。

Architecture decision laboratory

安全护栏与成本控制

以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御

复杂度档位

不变量:不可信内容永远不能自行扩大工具、资源或身份权限,高风险副作用必须先预览再批准

受控工作流:只激活能够由收益证明的阶段1标记信任2策略判定3最小授权4沙箱预览5批准或拒绝蓝色表示当前方案承担的责任;虚线阶段仍留在系统边界外。关键证据:输入来源、信任标签…
自主性46
延迟52
成本48
可观测78

最小可运行切片

async function guardedExecute(request: ToolRequest, actor: Actor) {
  const labeled = labelTrustBoundary(request);
  const decision = policy.evaluate(actor, labeled);
  if (decision.effect === "deny") return denied(decision.reason);
  const preview = await sandbox.preview(request);
  if (preview.risk === "high") await requireApproval(preview);
  return sandbox.execute(request, { permissions: decision.permissions });
}

切片只表达“以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御”的核心合同。生产实现还要补齐持久化、超时、密钥隔离、结构化日志、幂等和批量评测;如果不能重新取得输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用,代码跑通也不能证明机制正确。

练习与答案

练习

问题 1:最小证明。 怎样用正常、边界和单故障三类样本证明“不可信内容永远不能自行扩大工具、资源或身份权限,高风险副作用必须先预览再批准”?

问题 2:节点覆盖。 安全护栏与成本控制、小特上岗了,三件事会出大事、prompt injection:把「数据」骗成「指令」、护栏:进出都过一道安检、越权与最小权限:别给查天气的助理配删库的钥匙、成本控制:每问大脑一次都在烧钱、动手玩:先当一回安检员,再当一回省钱管家、动手一:关掉护栏,一句「把数据全导出来」它会照做吗如何从目录词变成工程证据?

问题 3:恢复验收。 怎样证明“网页中的 prompt injection 要求导出密钥,Agent 把它当系统命令并调用发送工具”已经修复?

本章回顾

  • “安全护栏与成本控制”解决的是以数据/指令隔离、最小权限、风险分级、沙箱、预算和人工批准构建纵深防御。
  • 核心不变量是不可信内容永远不能自行扩大工具、资源或身份权限,高风险副作用必须先预览再批准。
  • 首要反例是网页中的 prompt injection 要求导出密钥,Agent 把它当系统命令并调用发送工具。
  • 最小证据包包含输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用。

名词解释

本章出现的专业名词,用大白话再讲一遍。

prompt injection

不可信内容试图改变模型指令或诱导越权的攻击。在“安全护栏与成本控制”中必须能按以下证据重新定位:输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用。

最小权限

主体只获得当前任务必需的能力和资源范围。在“安全护栏与成本控制”中必须能按以下证据重新定位:输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用。

护栏

在输入、决策、工具和输出边界执行的安全控制。在“安全护栏与成本控制”中必须能按以下证据重新定位:输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用。

风险分级

按动作影响和可逆性选择自动、确认或禁止策略。在“安全护栏与成本控制”中必须能按以下证据重新定位:输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用。

人工批准

人在高风险动作执行前审查具体参数和影响。在“安全护栏与成本控制”中必须能按以下证据重新定位:输入来源、信任标签、策略版本、权限、工具参数、风险级别、批准、沙箱日志与副作用。

阅读导航

← 评估与可观测性 · 生产化部署 →

讨论

评论区加载中…