ByteNoteByteNote
Agent 安全第 7 课:最小权限与五条铁律
字

字节笔记本

2026年10月6日 · 约 11 分钟读完

Agent 安全第 7 课:最小权限与五条铁律

API中转
¥120

本文是《Agentic Coding 入门课》工具篇的第 7 课,主题是权限与安全:怎么让 Agent 放开手干活,又不删你的文件、不泄你的密钥、不烧你的账单。

先认清:Agent 能闯什么祸

别小看这件事。Anthropic 在官方报告里特别提到:随着 Agent 能力增强,安全机制的优先级要同步上升。

Agent 能干的危险动作,大致可以按后果分级:

危险等级动作后果
高危删除文件或文件夹数据丢失
高危把密钥提交到 GitHub账号被盗、数据泄露
高危执行 rm -rf 类命令系统崩溃
中危联网下载或上传数据隐私泄露
中危修改系统配置开发环境损坏
低危写入新文件一般无害,但可能把项目弄乱

高危动作的共同点是不可逆:文件删了就是删了,密钥泄了就是泄了。所以安全配置的重心,永远是先堵住高危动作。

安全第一原则:最小权限

核心心法一句话:让 Agent 只能做当前这个任务必须做的事,其余一律禁止。

类比很直白:你雇一个实习生帮忙整理文件,不会把保险柜钥匙也交给他。Agent 就是这个能力很强的实习生,权限给到刚好够用,出事时的损失才有上限。

Agent 三档权限模式对比

三档权限模式

主流 Agent 都提供三档权限设置:

  1. 只读模式(read-only):Agent 只能看,不能改。适合让它分析代码、给建议、解释原理。
  2. 确认模式(ask-first):Agent 每次要改东西,先问你一句可不可以。日常开发最常用,也是最推荐的一档。
  3. 全自动模式(yolo):不问,直接干。适合在隔离环境里跑测试、做批量操作,新手不要碰。

给新手一句实在话:前 3 个月,永远用确认模式。不要嫌它烦,它每次问「我可以删这个文件吗」,都是在救你。

四个核心安全设置

设置一:给危险命令加二次确认

所有主流 Agent 都支持配置「哪些命令需要二次确认」。下面这几条建议一定要加:

json
// 示意写法,不同客户端语法略有差异
{
  "permissions": {
    "deny": [
      "rm -rf *",
      "git push --force",
      "git push *main*",
      "chmod 777 *"
    ],
    "ask": [
      "rm *",
      "git push *",
      "npm publish *",
      "curl *",
      "> /dev/sd*"
    ]
  }
}

deny 是绝对禁止,ask 是执行前必须过一道人工确认。具体语法去查你所用客户端文档里的 permissions 章节。

设置二:用 .gitignore 保护敏感文件

如果项目用 Git 管理(新手强烈建议花一个晚上学会基础操作),一定要在项目根目录建一个 .gitignore 文件:

gitignore
# 敏感信息
.env
*.key
*.pem
credentials.json
secrets/

# 临时文件
node_modules/
__pycache__/
*.log
.DS_Store

# 数据文件
*.csv
data/

真实事故:2024 年有公司实习生把 AWS 密钥提交到 GitHub 公开仓库,8 小时被刷掉 20 万美元(案例引自 Truffle Security 2024 年报告)。.gitignore 是你的命根子,建仓库第一步就把它配好。

设置三:密钥放环境变量,不进代码

反例,属于致命错误:

python
api_key = "sk-ant-xxx-real-key-here"

这样写,Agent 一旦把代码提交到 GitHub,密钥就泄露了。正确做法是让代码从环境变量读取:

python
import os
api_key = os.environ.get("ANTHROPIC_API_KEY")

密钥本体放在项目根目录的 .env 文件里,这个文件已经被上面的 .gitignore 保护:

bash
ANTHROPIC_API_KEY=sk-ant-xxx
DATABASE_URL=postgres://...
STRIPE_SECRET=sk_live_xxx

设置四:项目隔离,不要在家目录裸奔

反例是让 Agent 在家目录工作,它能访问你所有项目、所有文件。正例是每个项目一个独立文件夹,把 Agent 的活动范围锁死在当前项目里:

bash
# 不要这样
cd ~
claude

# 这样
mkdir ~/projects/my-app
cd ~/projects/my-app
claude

真实案例:一次成功的安全拦截

一位学员做电商项目,让 Agent「清理项目里的测试数据」。

删除指令的确认与纠正流程

Agent 请求执行 rm -rf data/ test_data/ *.csv,确认模式的弹窗提示:这个操作会删除整个 data 目录和所有 CSV 文件,是否允许。学员检查后发现 data/ 里是真实订单数据,真正的测试数据在 tests/fixtures/,于是选择拒绝,并重新下达精准指令:不要用 rm,只删除 tests/fixtures/ 目录下的所有 .json 文件,先列出文件清单供确认,再逐个执行。

教训:模糊指令加删除操作等于灾难。涉及删除时,永远让 Agent 先列清单。

安全五铁律

把这五条贴在屏幕边上,每次开新项目前看一眼:

  1. 永远开确认模式,至少坚持前 3 个月。
  2. 永远不要把密钥写进代码,统一放 .env。
  3. 涉及删除,先列清单再动手。
  4. 每个项目一个独立文件夹,不要在家目录裸奔。
  5. 重要项目一定开 Git,相当于装了后悔药。

一份可直接抄走的安全配置模板

把下面这个文件存到项目根目录 .claude/settings.json,或你所用客户端的等价位置:

json
{
  "permissions": {
    "deny": [
      "rm -rf /",
      "rm -rf ~",
      "rm -rf *",
      "git push --force",
      "git push -f",
      "curl http://* | sh",
      "curl https://* | sh",
      "wget * | sh",
      ":(){ :|:& };:"
    ],
    "ask": [
      "rm *",
      "git push *",
      "git commit *",
      "npm publish *",
      "pip install *",
      "curl *",
      "wget *",
      "scp *",
      "> /etc/*",
      "> /usr/*"
    ]
  },
  "model": "standard",
  "max_tokens_per_turn": 8192
}

不同 Agent 的配置语法略有差异,但结构一致:deny 负责绝对禁止,ask 负责人工确认。

真出了事怎么办

场景一:Agent 删错了文件

第一时间按 Ctrl+C 停下 Agent,Mac 用户先翻废纸篓。项目开了 Git 的,可以精确找回:

bash
# 看最近发生了什么
git status

# 恢复某个被删文件
git checkout -- 文件名

# 整个项目回滚到上一个提交
git reset --hard HEAD

没开 Git,就赶紧打开系统自带的备份工具:Mac 用时间机器,Windows 用文件历史。

场景二:密钥泄露

黄金 1 小时内做完五件事:立刻去服务商后台吊销那个 key;生成新 key;更新所有用到它的地方;检查账单有没有异常消耗;如果代码已经推上公开仓库,用 BFG 工具清理整个仓库历史。

不要心存侥幸:GitHub 上有爬虫专扫公开仓库里的密钥,几分钟内就会被抓走。

场景三:Agent 跑飞了,账单在烧

按 Esc 或 Ctrl+C 强制中断,去服务后台看用量,把月度上限调低,然后清空上下文或重启 Agent。

动手练习

  1. 必做:在项目根目录建 .gitignore,至少包含 .env、*.key、node_modules、pycache。
  2. 必做:检查之前写过的代码,把写死的 API key 改成环境变量,并立刻轮换(重新生成)那个 key。
  3. 推荐:在自己的 Agent 客户端里配置危险命令二次确认,至少把 rm 和 git push 加进确认列表。
  4. 思考:「帮我清理一下项目,把没用的都删了」这条指令有什么隐患?风险在于「没用的」定义模糊,可能误删真实数据;更安全的下法是让 Agent 先列出未被引用的文件清单,逐个确认后再删,删除前先做一次 Git 提交备份。

本课要点

  1. Agent 能闯祸,最小权限是核心心法。
  2. 三档权限:只读、确认(推荐)、全自动(新手别碰)。
  3. 四个设置:危险命令确认、.gitignore、环境变量、项目隔离。
  4. 五条铁律贴在屏幕边上,重要项目必开 Git。
  5. 密钥泄露的黄金 1 小时,核心动作是立刻吊销。

到这里,工具基础就算补齐了:装环境、选模型、管上下文、上安全带,四件事都能自己搞定。下一阶段的关键能力,是把脑子里的想法翻译成 Agent 能精准执行的需求描述,那才是从「会用工具」到「会指挥 Agent」的分水岭。

参考来源:

  • 安全配置综合自 Claude Code、Cursor、Codex CLI 官方文档
  • 最小权限原则(Principle of Least Privilege)是经典信息安全原则
  • 密钥泄露案例参考 Truffle Security 2024 年报告

相关文章

分享: