← 返回文章列表

AI 代理安全:访问权限、密钥与 human-in-the-loop

AI 代理可以搜索 CRM、写邮件、执行命令、更新任务,并调用外部 API。正因为如此,AI 代理安全 必须在上线前设计,而不是等到第一次事故之后再补救。最常见的问题是权限过宽、密钥出现在提示词和日志里,以及缺少 human-in-the-loop,导致代理可以在没有人工确认的情况下直接行动。

  • 访问权限 - 代理只能看到它真正需要的系统和字段
  • 密钥 - API key、token 和密码不应出现在提示词、git 或普通日志中
  • Human-in-the-loop - 关键操作应由人工确认
  • 核心原则 - 不是“先给最大权限以防万一”,而是只给最小必要权限
  • 实际收益 - 降低数据泄露、误操作和高成本回滚的风险

为什么 AI 代理比普通机器人更危险

普通聊天机器人很多时候只是回答问题。AI 代理的能力更强:它会读取文档、调用工具、修改数据库记录、创建账单、发送客户消息,甚至执行代码。自治能力越高,错误的代价越大。

常见风险:

  • 代理同时拿到了 CRM、邮件、知识库和支付系统的访问权;
  • 个人数据、商业条款和内部指令进入了同一个上下文;
  • 员工为了测试,临时把真实 token 粘贴进系统提示词;
  • 日志保存了完整用户输入以及敏感密钥;
  • 代理在没有审核的情况下发送消息、删除记录或执行错误操作。

结论: 代理安全不只是“保护模型”,还包括访问控制、密钥管理、日志策略和审批流程。

访问权限:最小权限,而不是完全开放

最常见的错误,是因为“集成更快”就直接给代理管理员账号。开发初期看起来方便,但在生产环境里非常危险。

如何限制访问权限

  1. 拆分角色 - 客服代理不应该看到财务报表,分析代理也不应该直接给客户发消息。
  2. 限制数据范围 - 不是整个 CRM,而是只开放需要的实体、字段和项目。
  3. 区分读取和写入 - 先从 read-only 开始,只有在确实需要时才加写权限。
  4. 使用服务账号 - 不要使用员工个人登录账号。
  5. 定期复查权限 - 权限需要定期审计,而不是永久有效。
方式 会发生什么 风险
给代理管理员权限 代理能看到并修改所有内容 出错时损失最大
仅对所需数据 read-only 代理能分析,但不容易破坏流程 风险更低,审计更容易
Role + scope + approve 代理被限制,修改前还要审批 速度和控制之间更平衡

哪些系统最容易出问题

  • CRM - 联系人、商机、备注、电话、邮箱;
  • 邮件和消息系统 - 存在对外发送风险;
  • 文件存储 - 合同、报告、个人数据;
  • 金融系统 - 账单、支付、退款;
  • 终端工具 - 命令、部署、迁移、数据删除。

如果一个代理需要同时访问五个系统,通常应该先问一句:是不是应该拆成多个职责更窄的代理

密钥:最常见的泄露位置

密钥通常不是因为“超级黑客攻击”而泄露,更常见的是团队自己把它放到了不该放的地方:

  • 被误提交到 git 的 .env
  • 为了方便直接写进系统提示词;
  • 发给外包或同事的截图、工单和文档;
  • 请求和响应日志;
  • 测试 JSON 文件和开发笔记本。

密钥管理的基本规则

  1. 把密钥放在 secret manager 或受保护的环境变量里,而不是提示词文本中。
  2. 在工具层注入 token,不要在模型层暴露。
  3. 对日志中的敏感字段做脱敏 - key、password、cookie、card number、access token。
  4. 区分 dev、stage 和 prod - 使用不同的密钥、scope 和限制。
  5. 准备吊销和轮换机制 - 一旦泄露,可以快速替换,而不必停掉整个系统。

好的实践: 模型只知道自己可以调用 create_invoice()search_crm() 这样的工具,但永远看不到这些工具背后的真实 API key。

Human-in-the-loop:什么时候必须由人确认

并不是每个代理动作都需要人工审批。但有一类操作,加入 human-in-the-loop 节省下来的损失,往往比多花的时间更大。

建议人工确认的场景:

  • 代表公司发送给客户的消息;
  • 修改价格、折扣、合同条款或商机状态;
  • 删除数据、文件和记录;
  • 服务器命令和部署操作;
  • 任何带有法律或财务后果的动作。

常见的控制模式

模式 如何工作 适用场景
全自动 代理自己判断并执行 只适合低风险内部任务
Draft mode 代理准备草稿,由人点击 confirm 客服、销售、文档流程
双重审批 高风险操作必须单独 approve 金钱、生产环境、删除、权限变更

对大多数 SMB 来说,更合理的方式是:代理负责收集信息和准备草稿,由人来确认对外或关键动作。

日志、审计与事故调查

如果代理犯了错,企业需要知道:

  • 它收到了什么输入;
  • 它调用了哪个工具;
  • 工具返回了什么数据;
  • 是谁批准了这个动作,或者为什么它会自动执行;
  • 结果可以多快回滚。

因此,建议保留:

  • 工具调用日志;
  • 用户和会话 ID;
  • 提示词或代理配置版本;
  • 人工审批记录;
  • 已脱敏的错误日志,避免明文暴露密钥。

重要: 什么都记、但不脱敏,本身就会变成新的泄露源。审计很重要,但不能以明文保存密码和 token 为代价。

更安全的 AI 代理架构

下面是一套适合很多项目的最小实践框架:

  1. 每个代理或每种角色使用独立服务账号
  2. 使用权限很窄的工具,不要做一个“什么都能干”的万能工具
  3. 使用 secret manager / env,不要把密钥放进提示词或仓库
  4. 对外部、财务和 destructive 操作加入审批步骤
  5. 做日志和监控,并对敏感数据脱敏
  6. 定期轮换密钥并复查权限

上线前应检查什么

  • 代理不是在没有必要的情况下使用管理员身份运行;
  • 仓库里没有真实 token 和密码;
  • 测试数据不包含真实个人数据;
  • 关键操作不能在没有确认的情况下执行;
  • 每个工具的读取范围和修改范围都定义清楚;
  • 发生事故时,有明确的停用代理流程。

常见实施错误

  1. 一个代理包打天下 - 客服、财务、后台都交给同一个代理。
  2. 把密钥写进提示词 - 因为“调试更方便”。
  3. 没有 read-only 阶段 - 从第一天起就允许写和删。
  4. 没有 human-in-the-loop - 直到第一次昂贵事故发生。
  5. 没有审计链路 - 出事后无法还原发生了什么。

代理越自治,就越需要像安全工程师一样思考,而不只是像 LLM 集成人员那样思考。

总结

AI 代理安全 的核心是三件事:最小权限、正确的密钥管理,以及对高风险操作启用 human-in-the-loop。如果你从一开始就限制 scope、让模型看不到密钥、加入审批和审计,那么 AI 会成为团队的加速器,而不是新的事故来源。

如果你计划把 AI 代理接入 CRM、客服或内部流程 - 联系我们。

常见问题

从安全角度看,AI 代理和普通聊天机器人有什么区别?

AI 代理通常不只是回答,它还会执行。 它能调用工具、读取数据库、修改记录、发送邮件、触发操作。因此风险不只是“回答错了”,而是“在真实系统里做错了事情”。

如果只是内部工具,可以给代理管理员权限吗?

通常不建议。 内部使用并不能消除误操作、泄露或错误调用工具的风险。即使是内部代理,也更适合使用独立服务账号、尽量 read-only、并只给非常窄的写权限。

代理工具的 API key 应该放在哪里?

放在 secret manager 或受保护的环境变量中。 不要放在系统提示词、markdown 文档、源代码或普通日志里。模型只负责调用工具,密钥应在模型上下文之外注入。

每一个代理动作都需要 human-in-the-loop 吗?

不需要。 搜索、草稿、分类和低风险分析通常可以自动完成。但对外消息、金钱相关操作、数据删除、状态修改和服务器命令,人工确认会安全得多。

如果密钥已经出现在日志或提示词里了,该怎么办?

按已泄露处理。 立即吊销或轮换该密钥,从日志和仓库中清除,检查相关系统,并修复根因,比如提示词模板、日志器、测试文件或开发流程中的问题。

联系方式