一个典型场景正在很多公司内部悄悄上演:某个团队给自己的AI Agent配了一个"Reader"角色,因为初始需求只是让它查询文档。几周后,工作流扩展了——Agent需要修复发现的问题,于是权限升级到了"Writer"再升级到了"Editor"。没有人专门做这个决定,只是每次遇到权限不足就往上加一层。半年后回头看,这个Agent已经拥有了比最初预期大得多的权限范围。
Microsoft安全团队在7月16日发布了一篇关于AI Agent最小权限原则的文章,讨论的就是这个问题。文章提出的核心问题是:当Agent从辅助工具变成自主执行者,它的身份和权限该怎么管理?
当前的做法是:大部分团队没有认真想过这个问题。Agent使用共享的服务账号、或者继承调用者的权限、或者被赋予一个宽泛的角色——这些做法在Agent只做简单问询时不会出问题,但当Agent开始跨系统操作时,风险正在累积。
权限越界不是一次性事件
Microsoft在文章中描述了一个容易被忽视的问题:Agent的权限越界通常是渐进的。一个Agent最初只读邮件,后来需要写工单,再后来需要修改代码仓库。每次权限扩展单独看都"合理",但组合在一起,Agent就拥有了跨越多个系统的数据关联和操作能力。
这与传统服务账户有很大不同。传统服务账户通常只操作一个系统,权限边界相对清晰。而Agent天然跨系统工作——它可能同时访问邮件系统、工单系统、代码仓库和云控制台。每个系统单独看权限都不大,但组合起来的"隐式权限"可能远超任何人的预期。
更关键的是,当Agent出错时,日志记录的是"什么工具被调用了",但回答不了更关键的问题:谁授权了这个操作?用的是哪个角色?是否在授权范围内?Agent用自己的身份执行,还是代表某个用户执行?这个模糊地带一旦在事故调查中出现,就成了无法回答的问题。
每一个Agent都应该有一级身份
Microsoft建议的解决思路很直接:把Agent当作一级主体(first-class principal)来对待。每个Agent有独立的生命周期管理身份、明确的目标声明、细粒度的基于任务的角色,以及经过审核的工具白名单。
这个思路看起来简单,实际操作中却会遇到不少阻力。最现实的问题是:谁负责管理这些Agent身份?在传统IAM体系中,为每个服务创建一个独立的服务账户已经是"最佳实践",但现实中很多团队依然共用一个账号。Agent的数量增长比微服务更快——一个团队可能同时运行十几个Agent,每个都管理一个独立身份,IAM团队的工作量会急剧上升。
Microsoft提出的折中方案是使用JIT(即时)权限提升。Agent保留一个最小权限的基线角色,当工作流确实需要更高权限时,通过时间限制的临时角色激活或短期令牌来实现,工作流完成后自动回退到基线。这个模式在传统基础设施中已经被广泛使用,但在Agent场景下还不常见。
工具绑定比角色设计更容易落地
文章中另一个值得关注的点是"工具绑定"(tool binding)。与其试图设计完美的角色体系,不如先做好工具访问控制——给Agent一个白名单,明确哪些工具能调用、哪些操作能执行。这个思路比设计精细的RBAC模型更容易落地,因为工具调用是Agent的核心行为,控制好工具入口,就能挡住大部分越界操作。
实际操作中,工具绑定还可以与下游系统的二次验证配合。Agent调用某个工具的API时,下游系统不应该信任上游的授权声明,而是重新检查调用者的身份、角色和权限范围。这个"零信任"原则在安全领域不新鲜,但在Agent架构中几乎没有人落实——大部分实现中,Agent调用工具时,工具端默认信任Agent端传递的身份信息。
从工程落地的角度看,Microsoft建议的优先级很清晰:先盘点现有的Agent身份、清除宽泛的角色、建立基于任务的细粒度权限、实施工具白名单、确保端到端审计日志。这个过程中,最容易出问题的是第一步——很多团队根本不知道自己有多少Agent在运行、每个Agent用什么身份。
Agent身份管理正在变成必须面对的问题
Agent从实验性项目进入生产环境的速度,超出了安全团队的跟进能力。Microsoft的文章实际上在提醒一个更本质的问题:当Agent开始执行跨系统操作,安全模型的抽象层级需要改变。
过去的安全模型关注人和服务:人登录系统、服务调用API。Agent打破了这两者的边界——它既不是纯粹的人(没有人类的判断力),也不是纯粹的服务(有自主决策能力)。这种中间状态对现有安全架构的冲击,可能比大多数团队意识到的更大。
对开发者来说,最直接的行动指标是:检查自己正在运行的生产Agent,回答三个问题——这个Agent的身份是什么?它有哪些权限?这些权限是怎么授予的?如果这三个问题中有任何一个回答不清楚,就说明权限管理上存在隐患。而且这种隐患往往是沉默的——不会立刻出问题,但一旦出问题,影响的可能是整个系统的数据安全。
关于维基框架
维基框架关注企业应用开发中的长期维护问题。在实际项目中,业务系统往往同时涉及权限、微服务、接口协议、部署环境等复杂因素,因此我们希望提供一套更容易扩展和维护的基础框架。
官网:framewiki.com
Gitee:gitee.com/wiki-framework
GitHub:github.com/wiki-framework
示例项目:gitee.com/cdkjframework/framewiki-example
📄 许可证:MulanPSL-2.0(木兰宽松许可证,第2版)