身份与信任管理:防止权限滥用
Confused Deputy Problem(困惑代理人问题)
经典场景:
攻击链条:
1. 开发者无意中将开源仓库内容粘贴到 IDE 上下文
2. 仓库中隐藏恶意指令(提示注入)
3. 过权限 Agent 执行未授权命令
4. Agent 成为攻击者的"代理人"
核心问题:
Agent 拥有开发者的委托凭证 → 继承开发者宽泛权限 → 被欺骗时造成严重损害
解决方案:Agentic Identity(代理身份)
原则:Agent 绝不能作为访问的最终裁决者
| 传统模式 | 安全模式 |
|---|---|
| Agent 使用用户委托凭证 | Agent 使用专用身份 |
| 继承用户所有权限 | 权限严格绑定 |
| 难以审计 | 粒度审计日志 |
| 权限难以控制 | 权限可追踪、可限制 |
实现:
- Unique Cryptographic Identity(唯一加密身份):
- 每个 Agent 使用 SPIFFE ID(可验证的分布式身份)
- 明确标记为
agentic类型
- Dedicated Agentic Identity(专用代理身份):
- 身份明确区分代理行为
- 权限严格绑定
- 受限于细粒度审计
High-Stakes Actions(高风险操作)
定义:需要明确验证的关键操作,如: - 修改生产数据库 - 执行金融转账 - 改变 IAM 配置
问题:Vibe Coders 常依赖 AI 写复杂语法但不完全理解 → “It Works, Ship It”(能用就发布)谬误 → 简单批准门导致确认疲劳 → 开发者盲目授权不理解代码
解决方案:Structured Elicitation(结构化 elicitation):
两个安全边界:
Cryptographic Hardware MFA:
系统要求 → 开发者触碰硬件 USB 安全密钥 → 加密批准执行The Vibe Diff:
关键工具运行前 → Evaluator Quorum(评估者仲裁团)拦截 → 将复杂生成代码翻译为简明英文摘要 → 展示原始模糊意图如何映射到提议执行步骤 → 开发者真正理解授权内容 → 提供明确加密同意 ✓
可视化对比:
传统批准:
代码生成 → "批准"按钮 → 点击 ✓(开发者不理解代码) ❌
Vibe Diff 批准:
代码生成 → 翻译为自然语言 → 展示意图映射 → 硬件密钥批准 ✓