身份解决了什么,又留下了什么
面向自主智能体的凭证基础设施已经迅速成熟,底层原语也基本定型。工作负载身份联合让运行中的智能体无需长期密钥即可获得短期凭证。令牌的签发与轮换已经自动化。吊销可在数秒内传播。受众限制与范围声明收窄了令牌可被出示的对象。这些都是真实的控制手段,任何忽视它们的智能体平台都在犯一个本可避免的错误。
但一个限定范围的令牌只回答一个问题:该主体是否可以调用该端点。它并不回答运营上真正重要的问题:这一连串调用是否与用户所要求的任务一致。一个令牌可以完全有效、范围正确、未过期、未被吊销,而它所参与的轨迹却在做用户从未授权的事情。
组合缺口
权限会沿着轨迹累积。正是这一性质打破了端点级的最小权限。假设一个智能体持有一个允许读取客户记录的令牌,以及一个允许写入工单系统的令牌。两者都很窄。但这两个令牌中都没有任何东西去限定读取多少条记录、以什么顺序读、读取之后又写入什么。一个每次调用读取一条、共读取一万条记录的智能体,在任何单次调用上都从未超出其范围。数据量、数据流向以及来源的组合,全都超出了凭证语法所能表达的范围。
委托会进一步扩大这一缺口。一个能够为工作智能体铸造子凭证的编排器,实际上可以扩大自身的触及范围:它不需要更宽的令牌,它只需要签发若干个窄令牌并加以协调。每个端点上的范围检查都会通过。整个集群的有效权限,是它所铸造的一切的并集,而签发路径中没有任何东西在拿这个并集去对照原始任务进行评估。
这不是身份系统的缺陷。这是一条类别边界。身份关乎谁在调用。缺口关乎这些调用加总起来是什么。

以意图作为策略单元
弥合缺口的控制手段,是让意图而非身份成为策略的单元。在凭证之外一并声明任务意图,并以策略引擎可评估的形式呈现:用户要求的是什么、哪些数据类别在范围内、哪些目的地是合法的、轨迹的预期形态是什么。然后针对该意图评估每一个拟议的工具调用,而不仅仅针对调用者的范围。
具体而言,工具调用之前的一个策略决策点接收拟议的调用以及到目前为止的轨迹,并返回允许、拒绝或需要审批。意图声明是一个结构化对象,而不是一段散文式提示,因此决策可复现、可审计。一个单独来看被允许、但与所声明意图不一致的调用会被拒绝。为回答一个支持问题而读取单条客户记录是一致的。读取整张表则不是,即便同一个令牌对两者都予以授权。
意图必须被重新声明,而不能无限期地继承。一条改变了形态的轨迹——因为用户追加了需求、因为派生了一个子智能体、或者因为计划被修订——应当携带一份新的意图声明,带有自己的范围和自己的过期时间。永远继承最初的意图,正是一个狭窄任务悄然变成宽泛任务的途径。这种权衡是真实存在的:重新声明会增加摩擦和延迟,而过于严格的策略引擎会阻断合法工作。诚实的立场是:意图级策略以一部分吞吐量换取对聚合效果的约束,而约束正是重点所在。
执行点
三个执行点承担了大部分工作。
第一,工具调用之前的一个策略决策点,以轨迹作为上下文。这是唯一能在组合完成之前看到它的地方。它需要所声明的意图、调用历史,以及一种对拟议调用的数据类别和目的地进行分类的方式。决策应当连同轨迹标识符一起记录,以便日后重建偏离过程。

第二,针对数据量和目的地类别的出站控制,独立于正在调用的是哪个智能体。量级上限和目的地允许列表不关心身份,这正是它们能在委托之下依然有效的原
第三,吊销一条轨迹而非仅仅一个凭证的终止开关。吊销一个令牌只能阻止一个主体。吊销一条轨迹则能阻止这项工作,包括从它继承而来的子智能体,以及任何尚未执行的排队调用。两者不可互相替代。凭证可以被轮换,而轨迹可以在新凭证之下继续;轨迹吊销必须成为真正让工作停下来的东西。
该测量什么
不被测量的控制会衰减。有四个数字值得追踪,而且它们都不需要凭空发明一个基线。
- 在轨迹上下文而非仅凭身份的情况下被评估的工具调用所占的百分比。这是一个覆盖率指标,对于任何能触及数据的智能体,它都应当趋近于整个面。
- 因意图偏离而被中止的轨迹数量,以及该控制上的误报率。一个会中止合法工作的控制会被运行它的人关掉,因此误报率不是可选项。
- 从检测到偏离到吊销之间的时间。检测而没有及时吊销只是遥测,不是控制。
- 在形态变化后重新声明意图的轨迹所占的比例,它能告诉你重新声明的纪律是否还在维持。
结论
在门口加强身份验证并不能约束智能体,因为门口并不是权限被行使的地方。权限是在一连串工具调用中被行使的,而它们的合并效果没有任何单一凭证能够表达。身份平台应当被采纳并保留;它们是必要的,也是不充分的。与这一失败模式相匹配的控制,是按轨迹评估的意图级策略,其背后是出站约束和以轨迹为范围的吊销。这是一个比签发限定范围的令牌更难的工程问题,而它正是那些事件不断指向的问题。
封面照片:Jakub Pabis / Pexels。
