跳到主要内容

保护智能体与工具安全

高级
What you'll learn
  • 应用最小权限——只给智能体完成其工作所需的访问权限
  • 识别混淆代理问题:智能体借用了你的权限
  • 叠加五重防御,在智能体被欺骗时缩小影响范围
  • 决定哪些操作需要人工介入
  • 校验工具输入,使一个错误或被操纵的参数无法执行

当 AI 能够采取行动(调用工具、运行代码、请求 API)的那一刻,它就继承了一套安全模型。目标不是让模型无法被欺骗——而是确保即使它被欺骗,也不会造成太大的危害

核心原则:最小权限

只给智能体完成其工作所需的最小访问权限,不多给。

  • 文档摘要器需要读取权限,而不需要写入或网络。
  • 审查者需要读取代码并发表评论——而不需要推送或部署。
  • 按任务逐一限定工具、API 密钥和文件访问的范围。一个范围受限的智能体即使遭到注入,也只能造成有限的损害。

混淆代理问题

智能体往往以你的权限行事(用你的令牌、你的会话)。如果攻击者可控的输入操纵了它,攻击者就借用了你的权限——这就是"混淆代理"。防御之道:不要把智能体不需要的环境权限交给它,并要求敏感工具使用明确的、限定范围的凭证。

防御层

层层叠加——没有任何单一防御是足够的。每一层都假设它上面的那些层可能会失效。

Guided walkthrough1 of 5
  1. 在容器或临时目录中运行代码和文件操作,使其无法访问更广泛的系统或机密。如果智能体被欺骗,它只能在盒子里折腾。

把白名单写下来

"为危险面设置白名单"很容易点头认同,也很容易被跳过。在 Claude Code 中它是具体的:一个 settings.json,只允许任务所需的那一小组命令和域名,并拒绝其余。从严格开始,只在真实任务被阻塞时才放宽。

一个最小权限的 Claude Code 权限配置块

{
"permissions": {
  "allow": [
    "Read",
    "Edit",
    "Bash(npm test:*)",
    "Bash(npm run build:*)",
    "Bash(git status)",
    "Bash(git diff:*)"
  ],
  "deny": [
    "Bash(git push:*)",
    "Bash(rm:*)",
    "Bash(curl:*)",
    "Read(./.env)",
    "Read(./secrets/**)"
  ]
}
}

deny 列表优先于 allow,所以即使授予了宽泛的 Read,对 .envsecrets/** 的封锁仍然有效。有关完整的规则语法和优先级,请参阅权限

工具都有模式(schema)——请校验它们

模型生成的工具输入可能出错或被操纵。在执行前校验参数,并把错误作为结果返回,让智能体得以恢复,而不是盲目重试。

强化核心术语
按 Enter 或空格键翻转卡片。使用左右方向键在卡片之间切换。已显示术语。
1 / 5

自我检测

0/3
  1. 在配置智能体时,最小权限原则要求你做什么?
  2. 为什么一个以你的令牌行事的智能体构成'混淆代理'风险?
  3. 在 Claude Code 的权限配置块中,哪一项能可靠地阻止智能体读取机密文件?
Key takeaways
  • 最小权限优先:按任务逐一限定工具、密钥和文件访问的范围,使被欺骗的智能体只能造成有限的损害
  • 智能体以你的权限行事——不要把它不需要的环境权限交给它(混淆代理问题)
  • 叠加这五层:沙箱、白名单、人工介入、隔离信任区、记录与审查
  • 在 Claude Code 中,deny 规则优先于 allow 规则——明确封锁 .env 和机密路径
  • 在执行前校验工具参数,并把错误作为结果返回,让智能体得以恢复而不是盲目重试

下一步