保护智能体与工具安全
- 应用最小权限——只给智能体完成其工作所需的访问权限
- 识别混淆代理问题:智能体借用了你的权限
- 叠加五重防御,在智能体被欺骗时缩小影响范围
- 决定哪些操作需要人工介入
- 校验工具输入,使一个错误或被操纵的参数无法执行
当 AI 能够采取行动(调用工具、运行代码、请求 API)的那一刻,它就继承了一套安全模型。目标不是让模型无法被欺骗——而是确保即使它被欺骗,也不会造成太大的危害。
核心原则:最小权限
只给智能体完成其工作所需的最小访问权限,不多给。
- 文档摘要器需要读取权限,而不需要写入或网络。
- 审查者需要读取代码并发表评论——而不需要推送或部署。
- 按任务逐一限定工具、API 密钥和文件访问的范围。一个范围受限的智能体即使遭到注入,也只能造成有限的损害。
混淆代理问题
智能体往往以你的权限行事(用你的令牌、你的会话)。如果攻击者可控的输入操纵了它,攻击者就借用了你的权限——这就是"混淆代理"。防御之道:不要把智能体不需要的环境权限交给它,并要求敏感工具使用明确的、限定范围的凭证。
防御层
层层叠加——没有任何单一防御是足够的。每一层都假设它上面的那些层可能会失效。
Guided walkthrough1 of 5
- 在容器或临时目录中运行代码和文件操作,使其无法访问更广泛的系统或机密。如果智能体被欺骗,它只能在盒子里折腾。
- 决定允许哪些命令、哪些域名和哪些路径——其余一律拒绝。在 Claude Code 中,这就是权限(/docs/claude-code/permissions)。
- 对不可逆或敏感的操作要求明确批准:转账、发送邮件、删除、部署或更改生产环境配置。
- 不要让同一个智能体同时持有机密、读取不可信内容并发起任意出站调用——这种组合正是数据外泄的路径。
- 记录智能体实际调用了哪些工具以及使用了什么参数,以便你审计行为并发现偏移。
把白名单写下来
"为危险面设置白名单"很容易点头认同,也很容易被跳过。在 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,对 .env 和 secrets/** 的封锁仍然有效。有关完整的规则语法和优先级,请参阅权限。
工具都有模式(schema)——请校验它们
模型生成的工具输入可能出错或被操纵。在执行前校验参数,并把错误作为结果返回,让智能体得以恢复,而不是盲目重试。
强化核心术语
按 Enter 或空格键翻转卡片。使用左右方向键在卡片之间切换。已显示术语。1 / 5
自我检测
0/3- 最小权限优先:按任务逐一限定工具、密钥和文件访问的范围,使被欺骗的智能体只能造成有限的损害
- 智能体以你的权限行事——不要把它不需要的环境权限交给它(混淆代理问题)
- 叠加这五层:沙箱、白名单、人工介入、隔离信任区、记录与审查
- 在 Claude Code 中,deny 规则优先于 allow 规则——明确封锁 .env 和机密路径
- 在执行前校验工具参数,并把错误作为结果返回,让智能体得以恢复而不是盲目重试