权限需按任务范围授予而非一次全给
别名: 按任务授权 · least privilege for agents · 不要一次给全部权限
概念解释
代理能调用的工具、能碰到的对象、能跨越的世界边界,应当跟这一次任务的范围走,而不是在安装或第一次授权时把邮箱、网盘、支付、通讯录一次发完。按任务授予权限(scoped permission grants)是最小权限在代理上的形式:这一次要发的是哪一封、改的是哪一个文件夹,权限就停在那里。
「允许访问你的 Google 帐户」这种一次性和任务无关的大包,是把边界提前拆掉。
机制
权限是执行级自动化的燃料。一次全给之后,任务范围在变,燃料却还在。人很难在授权当下想象后续所有任务,于是用「先给了再说」换掉按次判断。代理的计划若在中途改道,旧授权不会自动收回,越界变得便宜。监督控制里行动实施这一段的自动化程度,实际上就是权限;界面把权限做成安装时的开关,等于把行动级锁在最高档,还告诉人这只是「连接帐户」。
按任务授予把判断推回每次任务的边界上,和确认对话框分工:授权决定「能不能碰到这类对象」,确认决定「这一次碰不碰」。没有按任务的授权,确认要扛整条边界,会很快被点掉。
怎么研究
同一代理,比较一次总授权与按任务授权(每次列出对象与动作)。任务中途计划改道,试图碰到授权外的对象。因变量:越界是否发生、人是否察觉授权已过宽、授权对话是否被盲目点过。自变量:授权粒度(帐户 / 文件夹 / 单对象)、授权是否过期、改道是否触发重新授权。
要分开「人点了允许」和「人理解允许的范围」。范围复述任务是必要的探询。
边界
只读、沙盒、不能越世界边界的代理,总授权的伤害小。操作系统级能力(通知、本地网络)与任务对象不是同一层,不要混在一次任务授权里吓用户,也不要拿它们当任务范围。越界发生时是拦还是事后报,是下一条。审计记录是再下一条。
怎么落地
- 把授权对话绑在任务上:列出本次要碰的对象类型与动作,默认到期或随任务结束收回。禁止用「连接帐户」冒充本次任务的许可。
- 计划改道碰到新对象类别时,重新走授权,不得沿用旧票。
- 验证:授权时写的是「读这个文件夹」,跑起来让代理去写另一个文件夹。写成功了,范围就不是按任务走的。再找人复述刚才允许了什么——复述成「整个网盘」,对话就还是大包。