OAuth scope 与 Function Calling 策略 可以自动拒绝明显越权调用,但业务高风险操作——转账、删除生产数据、外发邮件给未知收件人——需要人确认。Human-in-the-Loop(HITL)是 Agent 授权模型的最后一层:策略引擎 say「技术上允许」,HITL say「业务上需人工点头」。
一、何时必须 HITL
| 操作类 | 示例 | 自动策略能否覆盖 | HITL |
|---|---|---|---|
| irreversible | DELETE 生产表、关闭账户 | 可 deny,但误 deny 影响 UX | 确认后 allow |
| 金融 | 转账 > 阈值 | 阈值规则 | 超阈值必须审批 |
| 外发 | 邮件含外部域名 | DLP 可部分覆盖 | 首次外部收件人 |
| 特权 | 提权、改 IAM | 应 deny by default | break-glass 审批 |
与 自适应认证 交叉:风险分数高 → step-up MFA → 再执行 tool。
二、同步确认 vs 异步审批
2.1 同步确认(Blocking)
sequenceDiagram
participant User
participant Host as Agent Host
participant LLM
LLM->>Host: tool_call transfer amount=50000
Host->>User: Modal: 确认转账?
User->>Host: Approve + WebAuthn
Host->>Host: 执行 transfer
Host->>LLM: success
| 优点 | 缺点 |
|---|---|
| 实现简单 | 用户必须在线 |
| 无队列状态 | 长任务阻塞 Agent |
适用:单笔操作、用户正在对话中。
2.2 异步审批队列
sequenceDiagram
participant Agent
participant Queue as Approval Queue
participant Approver
participant API
Agent->>Queue: 提交 pending_action id=pa-123
Agent->>Agent: 状态=SUSPENDED
Approver->>Queue: Approve pa-123
Queue->>API: 执行
Queue->>Agent: 唤醒 + 结果
| 优点 | 缺点 |
|---|---|
| Approver 不必实时在 chat | 需持久化、超时、幂等 |
| 可 SOX 双人审批 | Agent 状态机复杂 |
适用:企业工作流、非交互式 Agent。
三、Agent 状态机
stateDiagram-v2
[*] --> Running
Running --> PendingApproval: 高风险 tool
PendingApproval --> Running: approved
PendingApproval --> Cancelled: rejected / timeout
Running --> Completed: 任务结束
Cancelled --> [*]
Completed --> [*]
| 状态 | 允许行为 |
|---|---|
| Running | 调低风险 tool |
| PendingApproval | 仅 poll 审批状态,禁止其他写操作 |
| Cancelled | 清理 partial side effects(若可) |
坑:Pending 期间 Agent 若继续调其他写 API——竞态越权。Host 应 全局写锁 直到审批完成。
四、Step-up 与委托 Token
HITL 批准不应只改 UI 状态——应产生 短期 elevation proof:
1. 用户 WebAuthn step-up
2. IdP 发 elevation_token TTL=5min scope=transfer:approve
3. Agent Gateway 持 elevation_token 执行 transfer
4. 执行完毕 elevation_token 作废
与 Token
Exchange 结合:actor_token 不变,Exchange
时附加 authorization_details 或自定义 claim
表示 step-up 已完成——具体 claim 以 IdP
能力为准,不编造 payload。
五、超时与默认动作
| 策略 | 行为 | 适用 |
|---|---|---|
| fail-closed | 超时 = reject | 金融、删除 |
| fail-open | 超时 = reject(同上,无 open) | 不推荐 Agent 场景 |
| escalate | 超时转上级审批 | 企业 |
Agent 应告知用户:「等待审批,7200s 后自动取消」。
六、与 PAM JIT 的对照
PAM /
JIT 管特权人;HITL 管 Agent 代用户
的高危操作。可共用审批 UI 和审计管道——字段增加
agent_id, delegator_id。
七、实现清单
八、边界
- 不规定具体 UI 框架
- 法务「电子签名」效力不讨论
九、双人审批 SOX
大额 transfer 顺序双 approver——Queue 状态机扩展。
十、Pending 全局写锁
PendingApproval 期间禁止其他写 tool——防竞态。
十一、Idempotency-Key
approval_id 作幂等键——防 double
execution。
下一篇:MCP 架构
参考资料
读完这篇,下一步读什么
优先读同系列或同问题的下一篇,把单篇消费变成主题集群。
【身份与访问控制工程】风险感知认证:设备信任、异常登录与挑战升级
MFA 是固定策略——启用后每个人每次登录都要输入验证码。风险感知认证(Adaptive/Risk-based Authentication)让认证强度随风险动态调整:从新设备、新位置触发额外验证,到持续的行为分析和会话风险评估。本文拆解风险引擎的信号模型、设备指纹的实现选型、挑战升级的 UX 设计,以及硅谷大厂的实践对比。
【Agent 身份与安全】Agent 身份谱系:从 API Key 到委托 Token
四代 Agent 身份模型:API Key、OAuth 用户 token、Service Account、RFC 8693 Token Exchange 委托链。拆解 subject_token、actor_token、act claim,以及与 JWT/JWKS 系列的交叉引用。
【Agent 身份与安全】细粒度 Scope 与 UMA 2.0 启示
从 coarse scope 到 resource-specific consent:UMA 2.0 Permission Ticket 模型、Google incremental auth 对照,以及 Agent 场景下的动态授权边界。
【Agent 身份与安全】Function Calling 的授权模型
Tool schema 暴露面、允许列表 vs OPA/Cedar 策略引擎、SQL Agent 的 statement class 与 RLS 边界,以及 Host 层 tool 调用拦截架构。