vijayvedula/warden

GitHub: vijayvedula/warden

Warden 是一个 MCP 代理层,通过策略引擎对 AI Agent 的工具调用进行门控、审批和防篡改审计记录,解决自主 Agent 在生产环境中的行为治理与可追溯性问题。

Stars: 3 | Forks: 0

# Warden

CI Security scan OpenSSF Scorecard License: FSL-1.1-ALv2 Release v0.1.0 Docs

**一个用于 AI agent 的动作控制平面。** Warden 作为 **MCP 代理**, 位于 agent 及其工具服务器之间。每一个 `tools/call` 都会根据策略进行校验—— **允许 / 拒绝 / 需要批准**——必要时会暂停以等待人工介入, 并被记录在一个**防篡改的审计链**中。

What Warden is: a proxy on the action boundary that verifies a signed identity, applies policy, and records every call as allow / block / hold

Click to watch it interactively  ·  all explainers

Or jump straight to one: Accountable Authorization · Reference Architecture · Threat Model · Platform Integration

其核心论点是:在 agentic 时代,核心的制约因素是*信任,而非能力*。 能力是实验室的博弈;而悬而未决的开放性问题是如何让自主的 agent 在有限的权限、 可验证的行为和可追溯的责任下进行**行动**。Warden 就是 agent 动作的*刹车* 和*黑匣子记录器*。 ## 快速开始 ``` cargo build # 1. 独立演练 —— 无需 API key,无需外部服务器。 ./target/debug/warden demo # 2. 验证防篡改审计链(然后编辑一行并重新运行以查看其被捕获)。 ./target/debug/warden audit verify --audit .warden-demo/audit.jsonl ``` 该演示驱动一个模拟的 agent 经历 允许 / 预算 / 拒绝 / 暂停等待批准(批准*以及*拒绝)的过程, 随后打印审计轨迹并验证哈希链。 ## 将其作为真实的 MCP 代理使用 将你的 MCP 客户端指向 Warden 而非工具服务器;Warden 会将真实的服务器作为其上游启动: ``` ./target/debug/warden proxy \ --upstream "python3 examples/echo_mcp_server.py" \ --agent prod-agent \ --policy warden.policy.toml ``` 允许的调用会转发至上游;拒绝的调用在到达上游之前就会被拦截;被暂停的调用则会等待 `warden approve`/`warden deny`。 所有操作都会被追加到 `.warden/audit.jsonl` 中。 ``` warden approvals list # pending held actions warden approve --by alice # release one warden deny --by security warden audit tail # what agents did warden audit verify # prove the record wasn't altered ``` ## 策略 首条匹配的规则生效;否则将应用 `default`。参见 [`warden.policy.toml`](warden.policy.toml)。 ``` default = "allow" [[rules]] tool = "delete_database" decision = "deny" [[rules]] tool = "wire_funds" when = { arg = "amount", op = "gt", value = 1000 } # condition on a tool arg decision = "require_approval" [[rules]] tool = "write_file" decision = "allow" max_per_run = 20 # per-run budget [[rules]] tool = "admin_*" # wildcard match decision = "require_approval" ``` ## 工作原理 ``` agent -- tools/call --> Warden --+- policy: allow -----> upstream MCP server -> result |- policy: deny ------> blocked (tool error) \- require_approval --> held -> human -> allow/deny | \- every decision > tamper-evident audit chain ``` - **策略引擎** (`policy.rs`) —— 基于工具、参数条件和单次运行预算进行 允许/拒绝/需要批准 的决策。 - **批准队列** (`approvals.rs`) —— 以文件为后盾,因此独立的审查者进程可以处理被暂停的操作。 - **审计链** (`audit.rs`) —— 每个条目的哈希值都涵盖了其内容以及前一个条目的哈希值;篡改任何历史条目都会破坏整条链(大可一试)。 - **网关** (`gateway.rs`) —— 拦截/决策/转发/记录 的循环。 - **上游** (`upstream.rs`) —— 基于 stdio 的真实 MCP 服务器,或是进程内的演示服务器。 ## 在你的平台上采用 Warden 唯一的耦合点是一个已签名的 token(RFC 8693 委派: `sub` = 负责人,`act` = 执行链,外加 RBAC/ABAC/ReBAC/scope)。 任何平台只需通过将其原生身份映射到该 token 即可完成集成——纯粹的 数据映射,无需涉及策略逻辑。[**warden-agent-sdk**](sdk/python/) 就提供了这种粘合剂: - **身份适配器** —— Databricks (OBO + Unity Catalog)、AWS Bedrock (STS AssumeRole + 会话标签)、Google ADK / Vertex (工作负载身份)、Azure AI Foundry (Entra ID + OBO)。 - **编排垫片** —— LangGraph, Google ADK:只需一行代码即可将 agent 的 MCP 客户端指向 `warden proxy`。 - **一致性测试套件** —— 只有通过 `warden token verify` 的 token 才是有效的; 该套件会根据这一基本事实检查官方及社区适配器。 各平台可运行的采用示例位于 [`examples/`](examples/) 中。有关完整的映射,请参阅 [docs/platform-integration.md](docs/platform-integration.md);有关云原生操作, 请参阅 [docs/twelve-factor.md](docs/twelve-factor.md)(所有配置均通过 `WARDEN_*` 环境变量完成;参见 [`.env.example`](.env.example))。 ## 用户指南 **[Warden 用户指南](https://vijayvedula.github.io/warden/guide/)** 是一份完整的、 可导航的手册——涵盖概念、入门、集成模型, 以及**针对每个提供商的独立的端到端指南**: - [LangGraph](https://vijayvedula.github.io/warden/guide/providers/langgraph.html) · [AWS Bedrock](https://vijayvedula.github.io/warden/guide/providers/aws-bedrock.html) · [Databricks](https://vijayvedula.github.io/warden/guide/providers/databricks.html) · [Google ADK](https://vijayvedula.github.io/warden/guide/providers/google-adk.html) · [Azure AI Foundry](https://vijayvedula.github.io/warden/guide/providers/azure-ai.html) 该指南是一个由 [`docs/guide/`](docs/guide/) 构建并发布到 GitHub Pages 的 [mdBook](https://rust-lang.github.io/mdBook/),与解析文档并列。 ## 路线图(信任层楔石) - **恢复 / 撤销** —— 针对可逆工具调用的补偿性操作。 - **更丰富的策略** —— 频率窗口、消费预算、数据等级条件、OPA/Rego。 - **多租户控制平面** + 托管的批准 UI。 - **更多适配器** —— OpenAI Agents SDK, CrewAI, AutoGen; TS/JS token 构建器。 - **外部锚定的审计** —— 针对签名锚点的公共透明度日志。 ## 解析说明 简短的**动画解析说明**(独立的 HTML 幻灯片)。可在 **[解析说明索引](https://vijayvedula.github.io/warden/)** 浏览全部内容,或直接跳转查看: **核心** - [平台](https://vijayvedula.github.io/warden/warden-overview.html) — Warden 是什么及其解决的问题 - [可追溯授权](https://vijayvedula.github.io/warden/accountable-authorization.html) — 以 token 作为接口的信任模型 - [参考架构](https://vijayvedula.github.io/warden/reference-architecture.html) — 各个组件如何协同工作 - [威胁模型](https://vijayvedula.github.io/warden/threat-model.html) — Warden 防御什么,以及它不防御什么 **集成**(配合可运行的 [`examples/`](examples/) 查看) - [平台集成](https://vijayvedula.github.io/warden/platform-integration.html) — 映射到任何平台的单一耦合点 - [Warden × Databricks](https://vijayvedula.github.io/warden/integration-databricks.html) · [× AWS](https://vijayvedula.github.io/warden/integration-aws.html) · [× Google](https://vijayvedula.github.io/warden/integration-google.html) · [× LangGraph](https://vijayvedula.github.io/warden/integration-langgraph.html) ## 许可证 在 **[Functional Source License 1.1 (FSL-1.1-ALv2)](LICENSE)** 下源代码可见。 - **免费使用**于任何目的——个人、内部和商业—— **除竞争性使用外**(提供替代 Warden 或实质上与其相同的产品或服务)。 - **每个版本在发布两年后都会变为 Apache-2.0**(即 [未来许可证](LICENSE-APACHE)),因此 Warden 走在一条通往完全开源的保证之路上。 FSL 属于*源代码可见*(目前不属于 OSI 认定的“开源”许可证),并会按照该时间表转换为开源——具体原因请参见 。 贡献均在同一许可证下被接受;请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
标签:AI代理, MCP, Python安全, Streamlit, 可视化界面, 审计日志, 策略引擎, 网关代理, 网络安全挑战, 访问控制, 通知系统