Uber ADR实战:给AI Agent加上企业级安全防护,从零教你部署
你的AI Agent正在裸奔——除非你亲手给它穿上安全铠甲
今天CrowdStrike悬赏10万美元”策反”AI Agent的新闻告诉我们一个事实:企业正在把关键业务交给Agent,但Agent的安全防护几乎为零。
刚好,Uber昨天在GitHub开源了ADR(Agent Defense & Resilience)框架——一个已经在Uber内部部署的AI Agent安全方案。本文教你从零开始为你的Agent应用加上安全可观测性。
ADR能做什么?
ADR的核心能力分为三层:
第一层:行为基线。 它先让Agent在安全沙箱里运行一段时间,记录Agent的正常行为模式——调用了哪些API、访问了哪些数据、输出有什么特征。这个基线就是”正常行为画像”。
第二层:异常检测。 当Agent的行为偏离基线(比如突然尝试访问一个从未用过的API、输出长度异常增加、或试图执行敏感操作),ADR实时报警。
第三层:安全基准测试。 ADR内置了一套标准化的攻击向量集——从提示注入到工具滥用——你可以用它定期”攻击”自己的Agent,检查防护是否有效。
第一步:安装和基础配置
# 克隆仓库
git clone https://github.com/uber/ADR.git
cd ADR
# 安装依赖
pip install -r requirements.txt
# 初始化配置
python adr init --project my-agent-app
初始化完成后,项目目录会生成一个 `adr.yaml` 配置文件:
agent:
name: "my-agent-app"
type: "langchain" # 支持 langchain, autogen, crewai, openai-assistant
endpoint: "http://localhost:8000"
baseline:
duration: 3600 # 基线采集1小时
sample_rate: 10 # 每10秒采样一次
alerts:
notification: "slack" # 支持 slack, email, webhook
threshold: "medium" # low, medium, high
第二步:启动行为基线采集
启动Agent后,让ADR开始观察:
# 启动基线采集模式
python adr baseline start --duration 3600
# 在这1小时内,正常使用你的Agent——让它处理真实的用户请求
# ADR会在后台记录所有行为模式
基线采集完成后,ADR会生成一份基线报告:
=== ADR Baseline Report ===
Duration: 3600s
Total API calls: 1,247
Unique endpoints: 12
Avg response time: 234ms
Normal output length: 50-500 tokens
Sensitive operations: 0
Baseline fingerprint saved to: ./baseline/fingerprint-20260805.json
第三步:开启实时防护
# 切换到防护模式
python adr protect --baseline ./baseline/fingerprint-20260805.json
# ADR会启动一个sidecar进程,实时监控Agent的所有行为
现在尝试对Agent进行一些”危险操作”,你会看到ADR的反应:
[ADR ALERT] 14:23:05 | Agent attempted unauthorized API call
Agent: my-agent-app
Endpoint: /api/admin/users (NOT in baseline)
Action: BLOCKED
Reason: Endpoint never accessed during baseline period
[ADR ALERT] 14:23:12 | Unusual output pattern detected
Agent: my-agent-app
Output length: 3,847 tokens (baseline max: 500)
Action: FLAGGED for human review
第四步:运行安全基准测试
ADR内置了一套攻击向量,可以定期测试你的Agent:
# 运行标准攻击向量集
python adr benchmark --vector-set standard
# 输出
=== ADR Benchmark Results ===
Test Suite: standard (47 vectors)
Pass: 41/47 (87.2%)
Flagged: 4/47 (8.5%)
Bypassed: 2/47 (4.3%) ← 这里需要关注!
Bypassed vectors:
- vector-23: Multi-step privilege escalation
- vector-41: Encoding-based prompt injection
那两个被绕过的攻击向量就是你需要手动加固的方向。
常见问题和排错
Q: ADR会影响Agent的性能吗?
A: 在sidecar模式下,每个请求增加约15-30ms延迟。对于大多数应用场景可接受。
Q: 基线需要采集多久?
A: 官方建议至少1小时。如果你的Agent访问模式是周期性的(比如按天的报表生成),建议采集24小时以覆盖完整周期。
Q: 误报多怎么办?
A: 调整 `adr.yaml` 中的 `alert.threshold` 参数。对于开发阶段,建议用 `low`(宁可多报不漏报);生产环境调为 `medium`。
总结
Agent安全不是一个”以后再加”的功能。就像你不会把没有防火墙的服务器暴露到公网一样,你不该把没有安全防护的Agent接入业务系统。ADR提供了一个开箱即用的起点。
更重要的是,ADR代表了安全行业的一个新共识:Agent安全不能靠事后修补,必须嵌入到Agent的生命周期中。 从基线建立到实时监控,再到定期的红队测试——这是一套需要融入开发流程的方法论,而不仅仅是一个”安装即可”的工具。
随着CrowdStrike这样的安全巨头入场,以及Uber ADR这样的企业级工具开源,Agent安全的生态正在快速成熟。现在开始部署,你会在监管要求和客户审计来临之前占据先机。
**延伸阅读:** 关注今天的CrowdStrike AI安全挑战赛,他们的攻击向量库可以和ADR的安全基准测试配合使用。
👇 关注LC智趣厅,每天学点实用的AI安全技能
— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn