跳到主内容

MCP 权限与认证:控制客户端能调用什么

100%
MCP 权限与认证:控制客户端能调用什么

MCP 权限与认证:控制客户端能调用什么

MCP 把工具交给模型去调用,但「谁能调、能调什么、调完留痕吗」必须守住,否则一个被诱导的提示词就能让模型删库、发邮件、改配置。本文讲清 MCP 的权限与认证模型:OAuth 委托、 scope 最小权限、服务端鉴权与审计,帮你把「模型能做事」和「模型乱做事」隔开。这是 MCP 何时该用 之后最该补的工程课。

先把「认证」和「授权」拆开

认证回答「你是谁」,授权回答「你能做什么」。 MCP 里客户端要先拿到凭证证明身份,再由服务端按策略决定这次调用是否被允许。很多事故出自把两者混为一谈——以为「登录过」就等于「什么都能干」。和 智能体权限范围 的思路一致:默认无权限,需要什么显式给什么,而不是默认全开。

认证:OAuth 2.1 委托是主流形态

远程 MCP 服务端通常用 OAuth 2.1:用户在一次授权流程里把访问权委托给客户端,客户端拿到短期令牌,过期再刷新。关键在于「用户知情且可撤销」——授权画面要清楚列出客户端要哪些权限,用户随时能收回。本地 stdio 服务端多靠本机凭证或环境变量,但仍要区分「谁在跑这个进程」。选型时参考 MCP 客户端对比选择,看客户端是否正确处理令牌存储与刷新,别把令牌写死在配置里。

授权:用 scope 做最小权限

授权才是安全的核心。服务端应暴露细粒度 scope(如 files:read 、 files:write 、 mail:send),客户端按本次任务申请最小集合,用户批准后才生效。原则:只读不写、临时不长期、单资源不全局。一个只做代码搜索的 Agent,绝不该拿到 files:write 。这和 MCP 生产部署 的稳健性要求同源——把爆炸半径压到最小,单点失误不至于全局崩。

服务端鉴权与审计:每次调用都要可追

服务端在每次工具调用前都要重新校验令牌与 scope,不能「登录一次管终身」。更关键的是审计:谁、在几点、调了哪个工具、传了什么参数、返回了什么,全部留痕。出事时能还原现场,比事前拦截更现实。审计日志要和 MCP 安全提示注入 的防御叠加——提示注入防的是「被骗去调」,审计兜底的是「调了也能查」。

人类确认:高危动作的最后一道闸

发邮件、删文件、执行 shell 、改生产配置——这类动作不该由模型自主决定。成熟的做法是「分级确认」:低风险只读自动过,中风险给摘要让人点一下,高风险必须显式输入确认。配合 MCP 传输层 的连接可靠性,确认机制才不会成为被绕过的安全纸。把「确认」做成服务端强制策略,而非客户端可选功能。


  1. 拆认证与授权:先确认身份(你是谁),再按策略决定权限(能做什么),默认无权限、显式授予。

  2. 用 OAuth 2.1 委托:远程服务端走标准授权流,令牌短期+可刷新+可撤销,绝不写死在配置。

  3. 细化 scope:按 files:read/write 、 mail:send 等粒度申请最小权限,只读不写、临时不长期、单资源不全局。

  4. 每次调用重校验+审计:服务端对每次工具调用重验令牌与 scope,并留痕谁/何时/调了什么/传了什么参数。

  5. 分级人类确认:低风险自动过,中风险给摘要确认,高风险(发邮件/删文件/改生产)强制显式输入确认。

登录过不等于什么都能干
很多事故源于把认证当授权:以为用户登录过,模型就有权删库发邮件。认证只证明身份,授权要按 scope 显式给、每次调用重验,高危动作强制人确认。

常见问题


MCP 的认证和授权有什么区别?
认证回答你是谁(身份),授权回答你能做什么(权限)。登录成功只证明身份,不代表拥有全部权限;授权要按 scope 显式授予并每次重验。

scope 该怎么设计才安全?
按动作和资源拆细,如 files:read 、 files:write 、 mail:send 。坚持最小权限:只读不写、临时不长期、单资源不全局,一个搜索 Agent 绝不该拿到写权限。

本地 stdio 服务端也要鉴权吗?
要。虽然靠本机凭证或环境变量,但仍要区分谁在跑这个进程,并避免把令牌写进可提交的配置文件泄露出去。

哪些动作必须人工确认?
发邮件、删文件、执行 shell 、改生产配置这类不可逆或高影响的动作,必须分级确认,高风险项强制显式输入确认,不能让模型自主决定。


这篇有帮助吗?
云上的幻象
云上的幻象查看主页

七彩云博客,分享 WordPress 建站实战与 AI 工具测评,覆盖服务器运维、站长工具、软件资源与电商运营干货,专注原创实用的主题插件、网站加速与安全优化教程。

1061文章4评论

相关文章

评论 (0)

欢迎你,新朋友,感谢参与互动!文明发言,理性交流 · 首次评论将在审核后展示