Agent 上线前,先测撤权,不要先测智能
Demo 证明 Agent 在权限存在时能完成任务;撤权测试证明权限消失后,它真的会停下来。后者更接近生产安全。
企业 Agent 上线前,团队通常先准备一组成功案例:
能不能查询客户?
能不能生成销售报告?
能不能更新工单?
能不能调用 MCP Tool?
能不能自动完成跨系统流程?
这些测试回答的是:
Agent 有权限时,能不能完成任务?
但生产系统还必须回答另一个问题:
权限被撤销时,Agent 多久会停止?
这两类能力并不对称。
一个 Agent 可以非常聪明,Tool 调用成功率很高,业务流程也能跑通;但如果用户离职、角色变更、任务终止、Agent 版本下线或审批过期后,它仍能继续执行,系统就没有真正完成权限闭环。
对企业 Agent 来说,撤权不是 IAM 后台里的一个按钮。
撤权是一条端到端生产链路:
权威源发生变化
→ 事件或查询传播到授权层
→ 缓存失效
→ Token、Grant 或 Capability 失效
→ Worker 在执行前重新检查
→ 下游系统拒绝旧权限
→ 进行中的任务停止、排空或补偿
→ 审计能够证明没有继续产生副作用
任何一段断开,控制台里的“已禁用”都可能只是一条状态记录。
为什么先测撤权
成功路径通常是系统最容易通过的部分。
团队会主动准备:
- 正确用户;
- 正确数据;
- 有效 Token;
- 可用 MCP Server;
- 稳定网络;
- 合法业务状态;
- 明确 Prompt。
而撤权测试会主动制造不一致:
- 用户会话仍然存在,但账号已经停用;
- Access Token 尚未自然过期,但授权已经撤销;
- Agent 进程还在运行,但版本已经禁用;
- Task Grant 仍在本地缓存,但服务端已经撤回;
- Tool 已从目录隐藏,但长连接仍然可调用;
- Worker 已经领取任务,但执行前权限发生变化;
- 审批记录仍在数据库里,但业务对象版本已变化;
- 第一项副作用成功后,后续步骤被撤权打断。
这些场景更接近真实事故。
智能测试证明 Agent 会做事。
撤权测试证明企业还能阻止它做事。
“撤权”到底撤销什么
企业 Agent 同时使用多层身份和能力。撤销其中一层,不等于其他层自动失效。
1. 撤销 Subject
最终用户可能:
- 离职;
- 被停用;
- 密码重置;
- 会话被撤销;
- 离开项目或部门;
- 丢失某个角色;
- 失去某条记录的访问权。
Agent 代表用户执行时,必须及时继承这些变化。
2. 撤销 Actor
Agent 自身也可能被撤销:
- Agent 被禁用;
- 某个版本被下线;
- 部署环境被隔离;
- Owner 或 Sponsor 不再有效;
- 供应链风险导致版本进入隔离;
- Agent 的工作负载凭证被吊销。
用户仍有权限,不代表已经下线的 Agent 版本还能继续代表他。
3. 撤销 Task Grant
用户权限和 Agent 身份都可能有效,但本次任务已经结束。
例如:
只允许处理订单 1001—1020
最多退款 5000 元
有效期 30 分钟
最多执行 20 次
任务被用户取消、预算耗尽或 TTL 到期后,Grant 必须失效。
4. 撤销 Tool 或 Action
某个 MCP Tool 或业务 Action 可能因为漏洞、误配置或下游事故被禁用。
这要求系统能区分:
从 tools/list 隐藏
禁止新调用
停止队列任务
处理中调用是否继续
已完成动作是否需要回滚
只从目录里删掉 Tool,不能保证已有 Client 和长连接无法调用。
5. 撤销 Policy Allow
策略可能发生变化:
- 金额上限降低;
- 某类数据禁止进入外部模型;
- 某个部门进入冻结期;
- 高风险动作改为双人审批;
- 某个区域暂时禁止自动执行。
旧的 Allow 决策不能无限缓存。
6. 撤销 Token 或 Credential
OAuth Token、API Key、工作负载身份和下游凭证都可能需要失效。
但撤销 Token 只解决凭证层问题,不自动取消数据库里的任务,也不自动终止已经开始的业务事务。
7. 撤销 Approval
审批可能因为以下原因失效:
- 审批人撤回;
- 有效期结束;
- Proposal 参数变化;
- 业务对象状态变化;
- 审批人的角色被撤销;
- 风险级别升级。
“曾经批准过”不等于“现在仍可执行”。
撤权、过期、禁用和 Kill Switch 不是同一件事
过期
系统等待 TTL 自然结束。
优点是实现简单;缺点是撤权窗口取决于剩余有效期。
主动撤销
权威方提前使 Token、Grant、Session 或 Capability 无效。
OAuth 2.0 Token Revocation RFC 7009 定义了撤销端点,使客户端可以通知授权服务器不再需要某个 Token;撤销请求会使对应 Token 失效,并可能影响基于同一授权 Grant 的其他 Token。
禁用
将用户、Agent、Tool 或策略对象标记为不可使用。
禁用必须被执行路径读取,否则只是控制面状态。
Kill Switch
在异常情况下快速停止一类执行能力。
它可能作用于:
单个任务
单个 Agent 版本
单个 Action
单个 MCP Server
单个租户
整个生产写入面
终止进程
杀掉 Agent 进程可以停止当前推理,却不一定撤销:
- 队列中的任务;
- 其他副本;
- 已签发 Token;
- 下游异步作业;
- 子 Agent;
- 已发送但结果未知的请求。
所以:
kill process
≠ revoke authority
生产系统需要明确每种操作的语义。
撤权时延是一个端到端指标
不要只测 IAM 页面多久显示“已禁用”。
真正需要测量的是:
T0:权威源接受撤权
T1:授权层得知变化
T2:缓存、会话和 Capability 失效
T3:执行节点开始拒绝新动作
T4:进行中的副作用停止或进入受控收尾
T5:审计和对账确认没有继续越权
可以把撤权窗口近似拆成:
撤权生效时间
≈
事件传播时间
+ 最慢缓存陈旧时间
+ 执行前复核间隔
+ 在途操作处理时间
+ 下游系统生效时间
这不是通用标准公式,而是定位延迟来源的工程模型。
真正的指标应是:
从权威撤权被接受
到最后一个受影响执行点稳定返回 Deny
如果只测一个 API 节点,而没有覆盖 Worker、MCP Server、PDP 副本和源业务系统,结论仍不完整。
长 Token 是最显眼的问题,但不是唯一问题
团队发现撤权慢时,常见反应是缩短 Access Token TTL。
这有帮助,但不够。
Microsoft Entra 的 Continuous Access Evaluation 文档描述了这个权衡:仅缩短 Token 生命周期会影响用户体验和可靠性,也不能消除所有风险。CAE 通过 Token Issuer 与支持该机制的资源服务之间传递关键事件,使账号禁用、风险变化等事件可以更及时生效。
官方文档同时指出,关键事件目标接近实时,但事件传播仍可能带来最高约 15 分钟的延迟,并且初始实现聚焦于特定 Microsoft 资源服务。
这里有两个重要启示:
第一,短 Token 是上限控制,不等于实时撤权。
第二,连续访问评估需要资源服务参与。身份平台发出事件,不代表所有下游系统都会立即停止接受旧 Token。
企业自建 Agent 平台也一样。
如果 MCP Server、Action Service 和 Worker 不检查撤权事件,中央 IAM 再先进也无法自动完成端到端撤权。
隐藏撤权延迟的七个位置
1. 本地 Allow 缓存
PDP 曾经返回:
Allow(user_42, agent_v17, approve_discount)
Client 为减少延迟缓存 30 分钟。
用户角色在第 2 分钟被撤销,旧 Allow 仍可能继续使用 28 分钟。
高风险决策需要:
- 更短缓存;
- 事件驱动失效;
- Policy Version 或 Revocation Epoch;
- 源系统最终校验;
- 撤权时 Fail Closed。
2. 长连接和已发现 Tool
Client 在会话开始时获取 tools/list,随后保持长连接。
Server 从目录中删除 Tool 后,Client 可能仍保留旧 schema 并直接调用。
因此,Tool 隐藏只是 UX 和发现控制。
Server 必须在每次调用时继续校验 Tool 状态和权限。
3. 已领取的队列任务
Worker 在撤权前领取任务,真正执行发生在撤权后。
如果权限只在入队时校验,旧任务仍会产生副作用。
至少要在这些时点复核:
enqueue
claim
before execute
before irreversible commit
before retry
4. 子 Agent 和转委托
父 Agent 把任务委托给子 Agent 后,父任务被取消。
如果子 Agent 持有独立长效凭证,它可能继续运行。
转委托必须携带父 Grant 引用、最大 TTL 和 Revocation Epoch,并满足:
子权限 ⊆ 父权限
子 TTL ≤ 父剩余 TTL
父 Grant 撤销 → 子 Grant 一并失效
5. 下游异步任务
Agent 调用:
start_bulk_export
下游系统返回 Job ID 后继续后台处理。
此时杀掉 Agent 或撤销 Access Token,不一定会取消下游 Job。
高风险异步 Action 应提供:
- cancel;
- status;
- owner;
- task/grant 关联;
- 结果目的地;
- 撤权时的处理规则。
6. 自动重试
撤权后,某个请求返回 401、403 或策略拒绝。
错误的重试器可能把它当成临时失败,持续重试或换凭证。
权限拒绝必须被分类为不可自动绕过的终止信号。
7. 下游共享服务账号
上游用户已经撤权,但 MCP Server 使用共享管理员账号调用下游。
如果 Server 没有重新校验最终 Subject,源系统只会看到仍然有效的管理员凭证。
这时用户撤权不会自然传递。
服务账号路径必须在每次动作前显式绑定 Subject、Actor 和 Task。
撤权系统需要一个权威顺序
当多个系统对权限状态给出不同答案时,必须知道谁可以否决。
一个常见顺序是:
Subject 状态有效
AND Actor 状态有效
AND Task Grant 有效
AND Tool/Action 已启用
AND Policy 当前允许
AND Approval 仍有效
AND Source System 最终允许
任何一层 Deny,都应该阻止动作。
关系、本体、缓存和目录可以提供 Allow 输入,但不能覆盖权威系统的撤权。
尤其要避免:
IAM 已撤权
Ontology 缓存仍为 Allow
→ Agent 继续执行
授权聚合应满足:
任何权威 Deny 优先
Unknown 默认不进入高风险写入
用 Revocation Epoch 防止旧能力复活
仅使用布尔字段 active=false 有时不够。
异步系统中可能存在:
- 旧队列消息;
- 旧 Capability;
- 旧审批;
- 旧缓存;
- 旧 Agent 副本。
可以为用户、Agent、Task 或策略维护单调递增的 Epoch:
subject_id: user_42
revocation_epoch: 17
agent_id: pricing-agent
version: 3.2.1
revocation_epoch: 8
task_id: task_991
revocation_epoch: 4
Capability 记录签发时看到的 Epoch:
capability_id: cap_01J...
subject_epoch: 17
agent_epoch: 8
task_epoch: 4
发生撤权时,服务端将对应 Epoch 增加。
执行点比较:
capability.subject_epoch == current_subject_epoch
AND capability.agent_epoch == current_agent_epoch
AND capability.task_epoch == current_task_epoch
不一致则拒绝。
Epoch 不替代签名、TTL 和源系统校验,但能防止旧消息和旧 Capability 在重新连接后复活。
Capability 应该是短期租约,不是永久钥匙
任务级能力可以设计成短期 Lease:
capability_id: cap_01J...
subject: user_42
actor: agent://pricing-agent/3.2.1
task: task_991
action: approve_discount
resources:
type: quote
ids: [q_1008]
constraints:
max_discount_percent: 8
max_calls: 1
issued_at: 2026-08-24T10:00:00Z
expires_at: 2026-08-24T10:05:00Z
policy_version: pricing-policy-44
revocation_epoch:
subject: 17
actor: 8
task: 4
短期 Lease 有三个优点:
- 即使撤权事件丢失,风险窗口仍有上限;
- 每次续租都是重新评估的机会;
- 任务能力不会变成长期后台账号。
但 Lease 不能签发后就完全离线信任。
高风险不可逆动作仍应在执行前查询最新状态或使用可验证的连续撤权机制。
策略版本必须进入决策证据
审计里只记录:
decision: allow
无法解释为什么允许。
至少应记录:
decision: allow
policy_id: discount-agent-policy
policy_version: 44
subject_state_version: 2018
agent_state_version: 73
task_grant_version: 5
source_acl_version: crm-acl-881
valid_until: 2026-08-24T10:05:00Z
策略更新后,旧决策是否还能使用,必须有明确规则。
高风险路径通常应使旧 Policy Version 的长期 Allow 失效,而不是等待缓存自然过期。
Kill Switch 要分层设计
只有一个“关闭全部 Agent”的总开关,平时很难使用。
影响太大,团队会在事故中犹豫。
更实用的是分层开关。
任务级
停止 task_991
Agent 版本级
禁用 pricing-agent/3.2.1
Action 级
禁止 execute_refund
MCP Server 级
crm-mcp 进入 read-only
租户或业务域级
冻结 tenant_A 的生产写入
全局级
全部 Agent 生产 mutation 停止
每个开关必须明确:
- 谁能触发;
- 作用范围;
- 对新调用的行为;
- 对在途调用的行为;
- 对队列和子任务的行为;
- 恢复条件;
- 审计和通知;
- 是否需要双人操作。
在途动作不能简单统一“立即终止”
撤权发生时,系统可能已经进行到不同阶段。
尚未执行
正在读取
已经修改第一个系统
等待第二个系统
下游结果 UNKNOWN
已经完成但尚未读回
不同阶段需要不同策略。
可安全中断
尚未产生副作用时,直接停止。
需要排空
某些原子事务已经开始,立即终止可能破坏一致性。可以允许最小必要收尾,但禁止扩大范围。
需要补偿
第一项副作用成功、后续动作被撤权阻断时,进入 Saga 补偿或人工异常队列。
需要对账
网络超时导致现实结果未知时,不能盲目重试,也不能直接声明停止成功。
所以撤权语义应包含:
Deny New Work
Stop Before Commit
Drain Current Atomic Step
Compensate Completed Steps
Reconcile Unknown Results
“停止 Agent”不能只对应一个进程信号。
一套真实的撤权测试
测试准备
创建一个可控场景:
Agent 连续处理 20 个低价值测试对象
每处理一个对象都会记录 Action ID
每个动作之间有可观察间隔
所有对象都可回滚
记录:
- Subject;
- Agent ID 和版本;
- Task ID;
- Grant ID;
- Tool/Action;
- Policy Version;
- Token ID 或 Credential Identity;
- Worker ID;
- Trace ID。
基线阶段
先证明任务在未撤权时可以正常执行。
否则后续 Deny 不能证明由撤权导致。
中途撤权
在第 5 个对象完成后,执行目标撤权:
撤销用户角色
或禁用 Agent 版本
或撤销 Task Grant
或关闭 Action
记录权威系统接受撤权的精确时间 T0。
验证新动作停止
检查:
- 第一个 Deny 发生时间;
- 最后一个成功动作时间;
- 是否还有其他 Worker 成功;
- 是否有重试;
- 是否有子 Agent 继续执行;
- 是否有下游异步 Job 继续运行。
验证旧会话和旧连接
不要重新登录,也不要重启 Client。
使用撤权前已经存在的:
- Access Token;
- MCP Session;
- WebSocket 或长连接;
- Tool schema 缓存;
- 队列任务;
- Agent 进程。
如果只在新会话中测试,无法覆盖最危险的旧状态。
验证恢复与对账
确认:
- 已完成动作是否保持一致;
- 部分完成步骤是否补偿;
- UNKNOWN 是否进入对账;
- 未执行对象没有变化;
- 恢复 Agent 时不会重放旧任务。
生成证据包
revocation_test_id: rt_20260824_01
target:
type: task_grant
id: grant_991
accepted_at: 2026-08-24T10:00:00.000Z
first_deny_at: 2026-08-24T10:00:01.240Z
last_success_at: 2026-08-24T10:00:00.480Z
stable_deny_at: 2026-08-24T10:00:02.100Z
max_revocation_latency_ms: 2100
post_revoke_success_count: 0
inflight:
drained: 1
compensated: 0
unknown: 0
workers_checked: 6
source_system_readback: passed
retry_after_deny: 0
result: passed
不能只截一张“账号已禁用”的控制台图片。
必测的十类撤权场景
1. 用户停用
验证旧 Token、旧 Session 和后台任务是否停止。
2. 角色或组移除
验证细粒度资源权限变化能否及时生效。
3. Agent 版本禁用
验证其他版本不受影响,被禁用版本的所有副本停止写入。
4. Task Grant 主动撤销
验证用户和 Agent 都有效时,任务级权限仍能独立停止。
5. Task Grant TTL 到期
验证 Worker 不会因为任务已入队而继续使用过期 Grant。
6. Tool 或 Action 禁用
验证旧 schema、旧长连接和直接调用路径都返回 Deny。
7. Policy 更新
验证旧 Allow 缓存和旧 Policy Version 不能继续放行。
8. Approval 失效
在批准后改变参数或业务对象版本,验证执行被拒绝。
9. 父任务取消
验证子 Agent、子任务和转委托 Capability 一并失效。
10. 网络分区
让 Worker 无法访问撤权服务,再执行高风险写入。
预期不应是:
无法确认,所以沿用旧 Allow
高风险路径应 Fail Closed,或进入明确的低风险降级模式。
撤权测试的通过条件
一个完整通过条件至少包括:
权威撤权成功
所有执行副本收到或查询到新状态
旧 Token/Grant/Session 不再产生新副作用
在途动作按定义停止、排空或补偿
自动重试不绕过 Deny
子 Agent 和异步 Job 不继续执行
源系统读回确认无越权写入
审计能串联 T0 到最终稳定 Deny
恢复后不会重放旧任务
缺少任何一项,都不能只凭“API 返回 403”宣布撤权闭环完成。
撤权 SLO 应该怎样定义
平均值不适合表达撤权风险。
如果 99 次在 1 秒内生效,一次延迟 40 分钟,平均数仍可能看起来不错。
更重要的是:
P50 撤权时延
P95 撤权时延
P99 撤权时延
最大观测撤权时延
最大允许陈旧窗口
撤权后成功副作用数量
未知结果数量
未收到事件的执行节点数量
高风险 Action 可以定义更严格目标:
revocation_slo:
p99_stable_deny: 5s
max_stale_authorization: 30s
post_revoke_mutation_success: 0
retry_after_explicit_deny: 0
unknown_result_reconciliation: 100%
这里的数值只是示例,不是所有企业都应采用的统一标准。
企业需要按动作风险、下游能力和恢复成本制定目标。
真正关键的是提前定义,而不是事故后才发现系统从未测量。
不同风险等级应有不同撤权策略
低风险只读
可以接受短缓存,但仍需限制敏感数据和导出规模。
可逆单系统写入
要求短 TTL、调用前复核、版本控制和快速 read-only 切换。
高风险写入
要求:
- 每次执行前新鲜授权;
- 撤权事件;
- 最终源系统校验;
- Post-revoke mutation 为零;
- 精确 Proposal 和审批;
- 在途动作处理规则;
- 对账和补偿。
跨系统流程
除上述要求外,还要能取消下游异步 Job、停止子任务,并管理 Saga 状态。
撤权设计不应只有一套全局 TTL。
常见失败方式
“Token 还没过期,所以只能等”
这说明系统只有过期,没有主动撤权或连续访问评估。
对于高风险动作,应补充事件、在线复核或短期 Capability。
“IAM 已经撤销,MCP Server 不需要管”
如果 MCP Server 使用缓存或共享账号,它仍可能继续调用下游。
Server 是执行链的一部分,必须验证撤权。
“我们重启 Agent 后就停了”
重启证明进程被停止,不证明旧 Token、队列、子 Agent 和异步 Job 已失效。
“Tool 已经从列表删除”
旧 Client 可能仍缓存 schema。Server 必须拒绝直接调用。
“任务已经取消,但 Worker 正在执行”
如果 Worker 只在领取任务时授权,取消不会生效。不可逆提交前必须复核。
“下游返回 403,重试器会自动处理”
如果“处理”是继续重试或换账号,系统正在绕过撤权。
显式权限拒绝应停止自动执行。
“缓存只有五分钟,已经很短”
对于查看普通知识库可能很短;对于付款、生产删除或 Secret 管理,五分钟可能足够产生大量副作用。
缓存 TTL 必须与自动化速度一起评估。
“撤权成功率是 99.9%”
撤权不是普通可用性请求。
应继续检查失败的 0.1% 是否集中在高权限 Worker、离线节点或下游共享账号路径。
从哪里开始落地
第一步:为权限层画撤权图
列出所有状态副本:
IAM
Agent Registry
Task Grant Store
PDP Cache
MCP Server Cache
Client Tool Cache
Worker Queue
Token Store
Source System ACL
Approval Store
Ontology/Relationship Cache
标出权威源、同步方向、TTL 和失效机制。
第二步:选择一个真实低风险写动作
不要从全局 Kill Switch 开始。
选择一个可回滚、调用链完整的生产相似场景,建立端到端撤权测试。
第三步:先测最危险旧状态
优先覆盖:
- 旧 Token;
- 旧长连接;
- 已领取队列;
- 多 Worker;
- 共享服务账号;
- 自动重试;
- 子 Agent。
第四步:定义稳定 Deny
撤权通过不是偶然返回一次 403。
应该在全部目标节点、连续多次调用和足够观察窗口内稳定拒绝。
第五步:加入发布门禁
Agent 新版本或高风险 Action 上线前,自动运行:
基线成功
→ 中途撤权
→ 稳定 Deny
→ 在途处理
→ 源系统读回
→ 审计证据
第六步:定期演练
权限链、缓存、MCP Server 和 Worker 会持续变化。
一次通过不能永久证明撤权仍然有效。
应像灾备演练一样,定期测试不同撤权类型和节点故障。
Agent 上线检查表
身份
- Subject 可停用;
- Agent ID 和版本可独立禁用;
- Sponsor 失效有处理规则;
- 工作负载凭证可轮换和撤销。
任务
- Task Grant 可主动撤销;
- TTL 有最大上限;
- 子 Grant 随父 Grant 失效;
- 预算耗尽立即 Deny。
Tool 与 Action
- Tool 隐藏后直接调用仍被拒绝;
- Server 可切换 read-only;
- 高风险 Action 有独立 Kill Switch;
- 不可逆提交前重新授权。
执行
- Worker 在 claim 和 execute 时复核;
- 自动重试不绕过 401、403 和策略 Deny;
- 在途动作有停止、排空、补偿和对账规则;
- 下游异步 Job 可追踪和取消。
缓存与事件
- 记录最大缓存陈旧时间;
- 撤权事件可观测;
- 事件丢失有在线复核或 TTL 上限;
- Policy Version 和 Revocation Epoch 可审计。
验证
- 旧 Token 测试通过;
- 旧 Session 和长连接测试通过;
- 多副本稳定 Deny;
- 源系统读回确认无越权副作用;
- 证据包记录完整时间线。
这个专题最终想说明什么
这一系列从“为什么不把 CRUD 直接封成 MCP”开始,最后落到“先测撤权”。
中间讨论了:
- MCP、API Gateway、IAM、PDP 和工作流的边界;
- 企业本体应该理解权限还是拥有权限;
- Agent 为什么不能继承用户全部权限;
- Agent Identity 和版本治理;
- RBAC、ABAC、ReBAC 与 Task Grant;
- Action Contract;
- 自动化倍率;
- CRUD MCP 的风险分级;
- Prompt Injection 的权限兜底。
这些问题最后都指向同一个生产判断:
企业 Agent 的成熟度
不只看它能完成多少任务,
还看企业能否在任意时刻解释、收窄并撤销它的能力。
如果一个系统只能授予权限,不能证明权限何时真正失效,它就还没有形成闭环。
最终结论
Agent 上线前当然要测智能。
要测任务成功率、Tool 选择、参数准确性、长流程稳定性和业务效果。
但这些测试之前,至少应该先完成一条真实撤权路径:
授予一个有限任务能力
→ 让 Agent 开始执行
→ 在执行中撤销
→ 证明所有节点稳定 Deny
→ 证明没有撤权后副作用
→ 证明在途状态被正确处理
→ 证明审计能够还原全过程
因为生产风险不会等到 Agent 把任务做完才发生。
真正可信的 Agent 平台,不是永远不会犯错的平台。
而是当用户离职、角色变化、任务取消、策略收紧、Agent 版本出问题或 Prompt Injection 成功时,企业仍能快速、可验证地让它停下来。
Demo 证明 Agent 可以开始工作。
撤权证明企业仍然拥有结束工作的权力。
参考资料
- RFC 7009:OAuth 2.0 Token Revocation
- RFC 9700:Best Current Practice for OAuth 2.0 Security
- NIST SP 800-207:Zero Trust Architecture
- NIST SP 800-53 Rev. 5
- Microsoft Entra:Continuous access evaluation
- OpenID:Continuous Access Evaluation Profile 1.0
- Model Context Protocol:Security Best Practices
- OWASP GenAI Security Project:LLM06:2025 Excessive Agency
发布摘要
企业 Agent 上线前,团队通常先证明它能调用 Tool、完成任务,却很少证明用户离职、Task Grant 撤销、Agent 版本禁用或 Action 关闭后,旧 Token、长连接、队列 Worker 和子 Agent 会真正停止。本文给出撤权时延模型、Revocation Epoch、Capability Lease、分层 Kill Switch、在途动作语义、十类撤权测试和生产证据包,说明为什么撤权能力比 Demo 成功率更接近企业级 Agent 的成熟度。
标签
AI Agent MCP IAM OAuth 权限系统 撤权 零信任 Agent 安全 企业架构 Action Contract