权限不等于目的:Omnigent 中的基于意图的授权
传统的授权机制只检查谁在操作,而不检查为什么操作,这使得AI代理容易受到提示注入攻击,攻击者可以利用有效的凭证执行未经授权的任务。Omnigent引入了基于意图的授权,将会话绑定到人类批准的声明目的,拒绝或需要人工审批任何超出该目的的操作。与会话风险评分相结合,这种分层防御可以阻止基于身份的检查无法捕捉的攻击,如数据质量助手示例所示。
传统的授权机制,如基于角色的访问控制(RBAC),主要回答“谁可以访问什么资源”的问题。然而,这种身份导向的授权存在一个根本性缺陷:它不关心操作的“原因”。对于AI代理而言,这构成了严重的安全隐患。由于代理使用有效的凭证运行,攻击者可以通过提示注入——在代理读取的内容中隐藏指令——诱使代理执行其身份允许但任务本身并不需要的操作。
Omnigent 提出的基于意图的授权(Intent-based Authorization)正是为了填补这一空白。其核心思想是将代理的每个会话绑定到一个明确声明的“目的”(Purpose)上。这个目的由人类批准,并且代理在会话期间无法自行更改。每次工具调用前,系统都会检查该操作是否在允许的意图范围内,并返回三种结果之一:允许(Permitted)、需要同意(Consent-required)或拒绝(Denied)。
为了更好地说明这一点,文章以“数据质量助手”为例。该代理拥有三个工具:查询表(query_table)、更新仪表盘(update_dashboard)和授予表访问权限(grant_table_access)。尽管当前任务只是运行质量检查并发布摘要,但代理的身份允许它执行所有三个操作。在无意图策略的情况下,攻击者可以在表数据中嵌入一条看似正常的系统指令,要求代理将表访问权限授予外部审计人员。由于身份检查通过,代理会执行这一恶意操作。
而一旦启用了基于意图的授权,代理的意图被明确设定为“运行质量检查并发布摘要”。此时,查询操作被允许,仪表盘写入需要人工确认,而授予访问权限的操作则直接被拒绝——因为它超出了声明的目的范围。攻击因此被成功阻断。
意图的来源也十分关键:自主代理的意图在设计时固定,运行中不可变;交互式代理则允许用户在会话开始时以自然语言描述意图,代理将其转化为策略并由人类批准。这两种方式都确保了意图不会在运行时被提示注入所篡改。此外,Omnigent 提供了防篡改机制:代理没有工具删除或修改现有策略;新增策略需要用户明确批准;且多个策略组合时,任何单一拒绝都会生效,因此无法通过添加宽松策略来覆盖已有的限制。
基于意图的授权只是 Omnigent 上下文策略引擎中的一种。它可与会话风险评分、PII 拦截等策略协同工作,形成分层防御。用户可以用自然语言描述所需的防护措施,Omnigent 自动生成策略供审批和部署。这一设计为AI代理的安全运行提供了强有力的保障。