ARTICLE / 3 MIN READ
MCP 服务接入的权限、审批与审计
以远程 MCP 服务为例,设计工具授权、数据边界和高风险操作的安全闭环。
MCP 让模型应用能够发现资源、读取上下文并调用工具,但工具本质上可能触发任意代码或外部写入。生产接入要把它当成一组新的 API 和权限边界,而不是普通插件。
建立三层权限
第一层是连接权限,决定客户端能否连接服务;第二层是工具权限,决定能看到和调用哪些工具;第三层是业务权限,决定当前用户是否能操作某个租户、订单或文件。
用户身份 -> MCP 客户端 -> 授权服务器
-> 工具清单过滤
-> 参数校验与业务鉴权
-> 执行与审计
工具清单不应把管理员工具暴露给所有会话。服务端根据用户、租户、环境和风险等级返回最小工具集合。
高风险工具必须确认
删除数据、转账、发消息、修改权限和执行命令都应要求明确确认。确认界面显示工具名、目标资源、参数摘要、影响范围和有效期,不能只显示“是否继续”。
授权令牌要短期、最小作用域并可撤销。服务端不要相信模型传入的 user_id、tenant_id 或角色字段,这些字段必须从已验证的身份上下文中获取。
防止间接提示注入
网页、邮件、工单和仓库文件都是不可信输入。将外部内容标记为数据,工具参数采用结构化 Schema,禁止模型把外部文本拼接成新的系统指令。网络访问工具要限制域名、协议、重定向和内网地址,避免 SSRF。
审计事件
每次 tools/list、资源读取、工具调用和审批都写入审计事件,包含 trace_id、用户、客户端、工具版本、参数摘要、结果状态和耗时。敏感参数只保存哈希或脱敏摘要。
上线检查
- 默认拒绝未知工具和未知字段。
- 工具超时、并发和返回大小有硬上限。
- 令牌泄露能被撤销,密钥轮换不会中断全部客户端。
- 审计日志能按用户、工具、资源和时间检索。
- 失败重试不会重复执行不可幂等写操作。
MCP 的价值是标准化连接,不是绕过已有安全体系。把授权、同意和审计做成平台能力,才能放心扩大工具生态。
参考资料:MCP 安全与信任原则、MCP HTTP 授权规范。
GITHUB DISCUSSION
评论与回复
评论保存在 GitHub Discussions,登录 GitHub 后即可参与,发布和回复都在本页完成。
评论区进入视口后自动加载。