一次平台级泄露,为什么对AI代理比普通应用危险10倍?答案藏在"钥匙串"里。

一、4月19日发生了什么

2026年4月19日,Vercel遭遇未授权访问。官方建议用户:审查环境变量、轮换密钥、启用敏感环境变量功能。

但对AI代理开发者,这份建议远远不够。

二、为什么代理让危机放大100倍

普通Web应用只需管理少量固定凭证。AI代理却同时持有:

  • LLM服务商(OpenAI、Anthropic)
  • 代码执行环境
  • GitHub、数据库、日历服务
  • 多个下游API

这不是单一凭证,而是一整串钥匙。

当凭证存入平台环境变量,每个代理实例都继承全部权限——无作用域隔离。一个被攻破的依赖项,就能暴露整个钥匙串。

长期有效的令牌让情况更糟。从泄露发生到发现再到轮换,这段暴露窗口没有架构层面的上限。

三、真正的解法:3个关键属性

安全的代理凭证需要:

  • 短时效:分钟或小时级过期,把损失窗口压到最小
  • 会话级作用域:每次会话按需签发,会话结束即失效
  • 行为监控:短TTL压缩时间窗口,异常行为信号捕捉窗口内的威胁

这与12-Factor Agents第12条原则(无状态Reducer)一致:代理应为其上下文的纯函数,调用结束后不留任何持久凭证状态。

四、AgentLair的实践

AgentLair的AAT(代理认证令牌)架构为每次会话签发全新的EdDSA签名JWT,1小时TTL:

{"sub": "did:web:agentlair.dev:agents:acct_abc123","iat": 1745078400,"exp": 1745082000,"scope": ["email:read", "files:write"],"session": "sess_xyz789"}

did:web声明提供可验证的代理身份,作用域精确到单次调用所需的最小权限集。

凭证泄露曾是运维事故。对AI代理,这是架构设计问题——而大多数团队尚未意识到风险规模。