加载中...
加载中...
Agent 调用工具需要各种 API 密钥和凭据——如何安全注入、动态轮换、防止泄漏,是智能体生产化绕不开的安全第一课
Agent Secrets & Configuration Management(密钥与配置管理)解决的是:Agent 在调用外部工具(数据库、云服务、第三方 API)时需要 API Key、Token、密码等敏感凭据,但绝不能把这些密钥硬编码在代码或 prompt 中。核心挑战在于:如何安全地将密钥注入 Agent 的工具执行环境,支持动态轮换和权限最小化,同时避免在 LLM 推理上下文中泄漏敏感信息。这本质上是把传统 DevOps 的 Secret Management 最佳实践移植到 Agent 的「工具运行时(Tool Runtime)」上。
Agent 密钥与配置管理按注入层级分为三种模式,生产环境通常组合使用:
**1. 环境变量注入(Environment-Level)——最基础**
工具在运行时通过操作系统环境变量读取密钥(如 `os.getenv('DATABASE_URL')`),Agent 框架负责在创建工具执行沙箱时注入对应的环境变量。Agent 的 system prompt 和推理上下文**不应包含任何密钥明文**——LLM 只需要知道「有一个数据库工具可用」,而不需要知道数据库密码。关键设计:工具定义(Tool Schema)中描述功能但不描述凭据,凭据仅在 Worker/沙箱进程启动时注入。
**2. Secret Backend 动态获取(Backend-Level)——最安全**
工具不在启动时获取密钥,而是在每次调用时通过可信的 Secret Backend 动态获取。常用方案:HashiCorp Vault(https://www.vaultproject.io)、AWS Secrets Manager、Azure Key Vault。工具代码中调用 Vault SDK → Vault 验证工具身份(基于 mTLS 或 Service Account Token)→ 返回有效期内的凭据。优势:支持自动轮换(Vault 定期刷新密钥,工具无需重启)、审计日志(每次密钥访问都有记录)、动态凭据(为每次调用生成一次性临时凭据)。
**3. 凭据无关设计(Credential-Free Design)——最优雅**
从工具设计层面就避免密钥暴露给 Agent:工具本身不持有任何长期凭据,而是通过 OAuth 2.0 Token Exchange 或 IAM Role 委托获取短期访问令牌。例如:Agent 调用「发送邮件」工具 → 工具内部使用 Service Account 的 Workload Identity 向 Gmail API 换取一次性 Access Token → 发送邮件。Agent 从始至终不知道任何密码或 Token,只有「调用工具的权限」。Google Cloud 的 Workload Identity Federation 和 AWS IAM Roles for Service Accounts(IRSA)都为此而生。
核心安全原则:**最小权限(Least Privilege)**——每个工具只获取完成其任务所需的最小权限集;**凭据不入上下文(No Secrets in Context)**——密钥绝不出现在 LLM prompt 中,防止通过模型输出间接泄露;**审计可追溯(Auditability)**——每次凭据使用都有完整审计日志。
「分享到微信」:手机浏览器打开时一键调起系统分享面板,选择微信即可分享到朋友圈或聊天。电脑上回退为复制文案。
暂无留言,来说两句吧