# 你的 Agent 权限比员工还大:在网关层治理 MCP 工具

> 治理 MCP 的四个模式:聚合为单一端点、工具级 ACL 与模型权限同平面、凭证不下发到客户端、以及工具调用审计。

规范链接: https://www.gatellm.io/zh-CN/blog/mcp-tool-governance/

> 把 MCP 服务器聚合到一个端点、把工具级 ACL 放到与模型权限同一平面,以及为什么服务器凭证不该到达 Agent。 (2026-09-15)

标签: AI, MCP, AI Agent, 安全, 平台工程

大多数公司的 MCP 落地都遵循同一条曲线。第一周:有人把 coding agent 接到了文件系统服务上,效果神奇。第四周:已经有十五个 MCP 服务器 —— 数据库、内部 API、工单系统、部署工具 —— 散落在每个开发者的配置文件里。第八周:平台工程问出两个没人能回答的问题。

*谁能调用哪个工具?* 以及 *出事的时候,审计轨迹在哪里?*

按 agent 逐个配置的做法,把凭证散落到各台笔记本上,并且随着某人的 dotfiles 被 `git pull`,策略也在漂移。MCP 的能力恰是它的风险面:一个能发起退款的工具,不是你想靠「约定」来治理的工具。

解法是像对待模型访问一样对待工具访问 —— 一个权限平面,放在网关。四个模式可以达成这一点。

## 模式一:一个端点,多个服务器

把所有外部 MCP 服务器聚合到网关的一个端点上。每个服务器只配置一次 —— 端点、认证头、标签、优先级 —— 每个 MCP 客户端只连一个地方,带一把网关 key。

立竿见影的收益是运维层面的。接入新服务器变成一次网关配置变更,而不是对组织内每一份 agent 配置发一个 PR。下线一个被污染或已废弃的服务器变成一次变更,而不是在一堆笔记本上做排查。而「这个组织里到底哪些 MCP 服务器可达」这个问题,终于有了权威答案 —— 因为网关在结构上就是一个收口点。

## 模式二:工具级 ACL,与模型权限并列

只有聚合还谈不上治理。第二个模式才是策略真正落脚的地方:按工具做访问控制,并且表达在与「谁可以调哪个模型」同一套系统里。

把它们放到同一平面的理由是:它们回答的是同一个问题 —— *这个调用方,在这个上下文里,能不能执行这个动作?* 把模型策略与工具策略拆到两个系统,必然导致两者漂移,而且这种漂移在事故把它暴露出来之前是不可见的。

实践中要紧的有两点:

- **新工具默认拒绝。** 某个服务器新增一个工具时,它不应该自动对「所有能连到这个服务器的人」可用。新能力是一次策略变更,而策略变更应该经过评审。
- **用标签,而不只有白名单。** 按敏感度或环境给工具分组,可以让策略表达「预发环境只允许只读工具,没有例外」,而不必逐个枚举工具名。

## 模式三:凭证留在网关

第三个模式是安全团队最关心的:服务器凭证应当由网关持有,永远不下发给 agent。

在常见的「按 agent 配置」形态下,每个开发者的机器上都放着数据库密码、工单系统 API token 和部署密钥 —— 因为 agent 需要它们去调工具。这是一个巨大且需要持续轮换的密钥面,而它存在的主要理由,只是为了让一台笔记本能够以自身身份,去直接访问它本不该直接对话的东西。

把凭证收在网关会把这个关系倒过来:agent 用自己的身份向网关认证,网关再去挂上游凭证。撤销某个人对某个工具的访问,从此是一次身份变更,而不是在每台机器上协同做一次密钥轮换。

## 模式四:审计每一次工具调用

最后,记录调用 —— 不只是模型流量,还有工具流量。一次创建、修改或删除东西的工具调用,恰恰是审计员一定会问起的那类事件,而事后从散落的客户端日志里重建它,过程相当不愉快。

要记录的内容是枯燥的那部分:谁调的、调了哪个工具、打到哪个服务器、什么时候、结果如何。不枯燥的部分是:把它记在跟模型调用同一个地方,于是一个查询就能回答「这个 agent 上周二做了什么」,而不是三个。

## 先做哪一步

如果你还处在落地早期,返工最少的顺序是:先做聚合(它是其余一切的前提),再把凭证移到网关,然后打开工具级策略,最后接审计。每一步都独立有用,而且都不需要 agent 侧做任何改动。

值得保留的那个不太舒服的判断是:你的 agent 工具面,是一个没经过访问评审就出现的授权边界。像对待模型平面那样对待它 —— 一个网关、一套策略系统、一条审计轨迹 —— 是唯一能撑过前几个服务器的版本。

## 相关页面
- [首页](https://www.gatellm.io/zh-CN/index.md)
- [定价](https://www.gatellm.io/zh-CN/pricing.md)
- [成本计算器](https://www.gatellm.io/zh-CN/calculator.md)
- [关于](https://www.gatellm.io/zh-CN/about.md)
- [预约演示](https://www.gatellm.io/zh-CN/demo.md)
- [常见问题](https://www.gatellm.io/zh-CN/faq.md)
- [对比 AI 网关](https://www.gatellm.io/zh-CN/compare.md)
- [对比 LiteLLM](https://www.gatellm.io/zh-CN/compare/litellm.md)
- [对比 OpenRouter](https://www.gatellm.io/zh-CN/compare/openrouter.md)
- [对比 Alibaba Cloud AI Gateway](https://www.gatellm.io/zh-CN/compare/alibaba-cloud.md)
- [对比 Azure API Management](https://www.gatellm.io/zh-CN/compare/azure-apim.md)
- [对比 Apigee](https://www.gatellm.io/zh-CN/compare/apigee.md)
- [对比 Cloudflare AI Gateway](https://www.gatellm.io/zh-CN/compare/cloudflare.md)
- [对比 Kong AI Gateway](https://www.gatellm.io/zh-CN/compare/kong.md)
- [对比 Portkey](https://www.gatellm.io/zh-CN/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway 对比](https://www.gatellm.io/zh-CN/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter 对比](https://www.gatellm.io/zh-CN/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey 对比](https://www.gatellm.io/zh-CN/compare/litellm-vs-portkey.md)
- [场景方案](https://www.gatellm.io/zh-CN/use-cases.md)
- [降低调用成本](https://www.gatellm.io/zh-CN/use-cases/reduce-cost.md)
- [做到高可用](https://www.gatellm.io/zh-CN/use-cases/high-availability.md)
- [多租户隔离](https://www.gatellm.io/zh-CN/use-cases/multi-tenant.md)
- [合规与审计](https://www.gatellm.io/zh-CN/use-cases/compliance-audit.md)
- [从症状排障](https://www.gatellm.io/zh-CN/use-cases/troubleshooting.md)
- [混合多供应商模型栈](https://www.gatellm.io/zh-CN/use-cases/mixed-model-stack.md)
- [在 Office 里自托管用 AI](https://www.gatellm.io/zh-CN/use-cases/self-hosted-office-ai.md)
- [Token 用量可见与归因](https://www.gatellm.io/zh-CN/use-cases/token-ops.md)
- [Token FinOps: AI 支出分摊与管控](https://www.gatellm.io/zh-CN/use-cases/token-finops.md)
- [MCP 工具治理](https://www.gatellm.io/zh-CN/use-cases/mcp-tool-governance.md)
- [给模型统一加联网搜索](https://www.gatellm.io/zh-CN/use-cases/web-search-grounding.md)
- [多 Key 轮询与备用](https://www.gatellm.io/zh-CN/use-cases/multi-key-pooling.md)
- [限制接入的客户端](https://www.gatellm.io/zh-CN/use-cases/client-admission-control.md)
- [强制模型使用策略](https://www.gatellm.io/zh-CN/use-cases/enforce-model-policy.md)
- [客户端不暴露模型选择](https://www.gatellm.io/zh-CN/use-cases/automatic-model-tiering.md)
- [一套协议接任意模型](https://www.gatellm.io/zh-CN/use-cases/one-protocol-any-model.md)
- [Office / Microsoft 365 加载项](https://www.gatellm.io/zh-CN/office-addin.md)
- [术语表](https://www.gatellm.io/zh-CN/glossary.md)
- [模型目录](https://www.gatellm.io/zh-CN/models.md)
- [SDK 与框架集成](https://www.gatellm.io/zh-CN/integrations.md)
- [AI Coding Agent 与 Harness](https://www.gatellm.io/zh-CN/coding-agents.md)
- [安全与合规](https://www.gatellm.io/zh-CN/security.md)
- [隐私政策](https://www.gatellm.io/zh-CN/privacy-policy.md)
- [服务条款](https://www.gatellm.io/zh-CN/terms.md)
- [Cookie 政策](https://www.gatellm.io/zh-CN/cookies.md)
- [数据处理协议 (DPA)](https://www.gatellm.io/zh-CN/dpa.md)
- [子处理方清单](https://www.gatellm.io/zh-CN/subprocessors.md)
- [安全问卷预答库 (CAIQ/SIG/VSA)](https://www.gatellm.io/zh-CN/trust.md)
- [事故响应与支持服务](https://www.gatellm.io/zh-CN/sla.md)
- [漏洞披露政策](https://www.gatellm.io/zh-CN/vulnerability-disclosure.md)
- [开源许可声明](https://www.gatellm.io/zh-CN/open-source-licenses.md)
- [版本支持与生命周期 (EOL)](https://www.gatellm.io/zh-CN/lifecycle.md)
- [技术博客](https://www.gatellm.io/zh-CN/blog.md)
- [一张一万美元的账单:五种降低 LLM 成本又不让应用变笨的做法](https://www.gatellm.io/zh-CN/blog/reduce-cost.md)
- [厂商的目录价不是你的成本:把真正的 FinOps 用到 Token 支出上](https://www.gatellm.io/zh-CN/blog/token-finops.md)
- [llms.txt](https://www.gatellm.io/zh-CN/llms.txt)
