
Systems Design Meditation · Edition 3
机器的身份
智能体互联网中的授权
Edward Calderón
软件架构师
多年来,数字身份提出的问题是:你是谁?
智能体系统引入了另一个问题:你被允许代表我做什么?
认证确立了一个行为者。但它并不解释使某个行为具有合法性的那次委托。当软件能够跨多个服务进行规划和执行时,这一区别就变得至关重要。
权限图谱
正在形成的关系不是一次登录,而是一张图谱:
人类 ↔ 智能体 ↔ 服务 ↔ 基础设施
每一条边都需要自己的主张。人类可能授权某个智能体核对发票,但不授权它创建供应商。该智能体可能调用一个会计服务,而该服务又依赖于云基础设施。将单一的持久凭证贯穿整条链条,会把彼此独立的信任边界压缩成一个共享的秘密。
一个健壮的系统必须知道:谁创建了这个智能体、谁授权了它、委托了什么权限、它可以访问哪些资源、该权限存在多长时间、发生了哪些操作、这些操作是否可验证,以及访问权限是否可以立即撤销。
仅凭凭证本身无法表达这段历史。一个有效的令牌可能证明某个工作负载可以调用某个端点。但它并不一定能证明,是这个用户在这个时刻、在这项政策之下批准了这个目的。
身份正变得动态化
人类身份通常相对持久。而智能体的权限通常应该是短暂且依赖上下文的。它可以为某项任务而派生,为某个工具而收窄,并在工作流结束时失效。随着风险的增加,边界也可以收紧。
这与零信任理念相符:不要把网络位置或此前的登录视为永久证据。要评估行为者、请求的操作、资源以及当前上下文。短生命周期的凭证可以减少暴露面,但授权决策仍必须是明确的。
一个自主的行为者不应仅仅持有凭证,而应在一个可验证的权限边界内运作。
设想一位高管委托了出行规划。智能体可以读取日历的可用时间并比较航班。在限额之内预订可退款的机票或许是被允许的。而预订不可退款的行程、修改护照记录或邀请外部参会者,可能需要重新获得批准。"出行访问权"这个说法太粗糙了;权限实际上是一组受约束的转换。
可追溯的来源使整条链条可被审查。审计记录应当把人类的委托、智能体实例、政策版本、服务身份以及最终产生的操作关联起来。加密签名可以保护证据,但签名本身并不能决定该政策是否合理。治理仍然定义着什么样的委托是可接受的。
撤销是身份的一部分
系统常常把撤销当作行政层面的清理工作。但对智能体而言,它是运行时控制的一部分。权限可能需要因为设备丢失、工作流被取消、行为超出了某个阈值,或者委托的人类更换了角色而消失。
在分布式基础设施中,立即撤销是困难的。缓存的策略、离线凭证和长时间运行的任务可能会继续存在。设计者必须选择可接受的最大延迟,并据此构建相应的强制执行点。这是系统层面的属性,而不是身份提供商界面上的一个复选框。
机器身份也需要与智能体身份加以区分。一个工作负载可能是在经过认证的环境中运行的真实软件,而在其中运行的智能体会话则拥有更狭窄、被委托的目的。把两者混为一谈,会让每一个推理过程都获得该工作负载的全部权限。
数字身份方面的工作长期以来一直在处理发行方、持有方、验证方和信任框架。智能体系统增加了不断移动的行为者和快速的委托,但底层的教训依然不变:信任是依赖上下文的。验证只有相对于某个具体决策才有意义。
下一个身份问题不仅仅是证明某个行为者是谁。
而是要证明该行为者被授权做什么。