跳转到主要内容

休眠的 agent 仍是主体:将凭据回收作为生命周期关卡

休眠的 agent 保留着有效凭据,在资源边界上与活跃 agent 无法区分。下线必须成为一个可审计的生命周期状态。

黄昏多云天空下大型射电望远镜天线的特写

真正重要的数字不是活跃占比

关于 agent 集群的报告往往以活跃度统计的形式出现:标题会说,大多数 agent 处于休眠状态,但它们仍保留着凭据和打开的连接。活跃度数字是这句话里最不重要的部分。真正起作用的事实是权限的持续存在——凭据在任务结束后依然存活。

这一框架背后的报道值得直接阅读(一篇报道,以及另一篇)。两者都没有改变底层机制:一个数月未调用过工具的 agent,仍会向它曾被授予权限的每一个下游服务出示有效 token。

休眠是部署过程的产物,而非设计决策。从未被提升的原型。季节已过的季节性任务。供应商变更后被弃用的集成。因为控制台让重新部署比迁移更省事,于是以新名称重新部署、旧版本被取代的 agent。这些都不该持续存在。它们之所以持续存在,是因为流水线中没有任何环节强制进入终态。创建只是一个按钮;下线却是一个项目。

在资源边界——API 网关、数据库角色、SaaS 租户——一个持有有效 token 的空闲主体与活跃主体无法区分。token 有效,scope 存在,调用成功。只有生命周期记录才能区分二者,而在大多数集群中,这样的记录并不以任何机器可查询的形式存在。

为什么 agent 的腐化方式不同于服务账号

服务账号通常是一个凭据、一个 scope,由平台团队签发,按计划轮换。而 agent 的权限是复合体,每个元素都按各自的时钟运行:

  • 模型提供商密钥,往往在多个 agent 之间共享,因此从不为任何单个 agent 轮换;
  • 工具凭据——数据库密码、内部 API 密钥——在构建时配置,在部署时被遗忘;
  • 下游 OAuth 授权,带有自己的过期和刷新行为,且常常存放在无人盘点的 token 存储中;
  • 委托者的 scope,即 agent 代表人类行事,并继承该人类在授权时刻所能触及的一切。

由于这些凭据各自独立过期,复合体几乎从不作为一个整体失效。模型密钥轮换了,OAuth 授权静默刷新了,数据库密码却原封不动。agent 看起来维护良好。事实并非如此:它是一组处于不同腐化状态的凭据,没有任何单一视图能展示其并集。

Electrical insulators and components at a power substation under a clear blue sky

第二个区别在于来源。agent 通常由平台职能之外的团队通过以低摩擦为设计目标的控制台创建。这对推广采用是正确的设计,对盘点却是错误的设计。主体数量的增长速度超过所有者数量,而这两条曲线之间的差距就是暴露面。

将回收作为计划性控制

把回收当作清理项目,注定它会反复出现。清理是有始有终的事件;它结束后的下一周,积压就会重新填满。控制必须是一个带有默认结果的计划性流程。

过期是默认结果。 按 agent 类别——交互式助手、计划任务、事件驱动响应器——定义不活跃阈值,并让该阈值成为自动暂停凭据的触发器,而不是让人去审查的工单。重新授权是显式行为;持续拥有权限才是需要理由的。阈值取值是各组织的策略决策;机制才是关键。

所有权和用途是前提条件。 没有具名所有者和明确用途,agent 不能被创建;两者不再成立时,也不能被重新授权。这是一个小规模 schema 变更,效果却很大:盘点变得自描述,孤立主体在构造上就会失败,而不是靠审计才发现。

凭据生命周期与进程生命周期解耦。 凭据应按自己的计划过期,无论 agent 是否在运行。把过期绑定到容器生命周期,意味着已停止的进程会无限期保留有效密钥——这正是休眠失效。每次调用签发短期 token,长期密钥保存在 agent 永远看不到的 broker 中,就能彻底消除持久化。

回收事件与 agent 操作进入同一条审计轨迹。 大多数审计日志记录主体做了什么。很少有日志记录权限何时被撤销、由哪个流程撤销、依据哪个策略版本。如果轨迹只显示使用情况,调查者就无法区分一个安静的 agent 和一个已被撤销的 agent——也无法证明撤销确实发生过。

一条最小的回收记录如下所示:

Close-up of disassembled hard drive platters and hardware components

{
  "principal_id": "agent:invoice-recon-v3",
  "event": "credentials_revoked",
  "reason": "inactivity_threshold_exceeded",
  "last_successful_tool_call": "2025-01-14T09:22:07Z",
  "grants_revoked": ["oauth:ledger.read", "db:recon_rw"],
  "owner": "finance-ops",
  "policy_version": "reclamation-v4",
  "reauthorisation_path": "ticket:OPS-2214"
}

权衡是真实存在的,应当直说。激进的回收会破坏东西。季节性任务若无人重新授权,就会在当季失败;交给合作伙伴的原型会在演示中途停止;值班工程师会花一晚上重新签发授权。成本由人立即承担,收益则是一次不会发生的泄露,且不可见。正是这种不对称,使得回收若不自动化、不把失败做得响亮且修复成本低廉,就会逐渐衰减——一条几分钟就能完成的自助重新授权路径,而不是变更咨询委员会。

应当监测什么

真正重要的度量不是容器健康。

每个凭据的最后一次成功工具调用,而不是每个进程的最后心跳。运行中的容器可能什么都没做,却持有有效授权;已停止的容器可能持有同样的授权,却根本没有进程可供观察。凭据是风险单元,因此凭据也是度量单元。

将下游授权作为一等盘点项,每项都有自己的所有者和过期时间,并与持有它的 agent 关联。这是在不阅读四个系统并靠猜测的情况下,回答 agent 能触及什么的唯一方法。

对授权集合的漂移告警。 一个主体的权限发生了变化,却没有相应的变更记录,这要么是配置错误,要么是入侵,而没有记录就无法区分二者。对增量告警,而不是对绝对 scope 告警。

设计规则

每个 agent 主体都应能按需回答三个问题:谁拥有它,它能触及什么,它的权限何时失效。不是在 wiki 里,不是在由构建者维护的电子表格里——而是在签发凭据的系统中,能被审计其操作的同一套工具查询。

如果其中任何一个答案需要人从记忆、聊天记录或仓库搜索中重建,这个集群就承载着未声明的风险。休眠的 agent 不是这条规则的例外。它们正是这条规则存在的原因:一个停止行动的 agent 仍是主体,而没有生命周期的主体就是没有所有者的凭据。

分享XLinkedIn永久链接5 分钟阅读

相关阅读

这能回答的问题

Why is a dormant agent a security risk if it is not running?

Because its credentials remain valid. At the API gateway or downstream service, a token from an idle agent is indistinguishable from one held by an active agent. The process being stopped does not revoke the grant.

How should inactivity be measured for an agent?

By last successful tool call per credential rather than container heartbeat. A running process may be idle while still holding authority, and a stopped process may hold the same grant with nothing to observe.

What should a reclamation audit record contain?

The principal identifier, the event, the reason, the last successful tool call, the grants revoked, the owner, the policy version and the reauthorisation path — written to the same trail as agent actions so withdrawal of authority is provable.

What is the main cost of automatic credential reclamation?

It breaks things that were quietly depending on stale authority: seasonal jobs, partner demos, prototypes. The benefit is invisible and the cost is immediate, so reclamation needs a fast self-service reauthorisation path to survive.