连上 MCP,就有了安全边界吗?
MCP 为工具与上下文提供共同接口,但不会替应用完成授权。Claude 提出客户端工具调用后,应用仍要决定是否执行、以什么身份执行。因此,一次格式正确的工具请求只是提案,不是权限证明。
能发送消息、修改客户记录或删除文件的助手,与只能读取的助手,失败后果完全不同。聊天界面看起来一样,不代表执行风险一样。
沿着请求到副作用逐项检查
下面是设计评审清单,不是安全认证。它需要配合具体协议版本的安全文档和系统自己的威胁模型。
| 边界 | 要问的问题 | 应查看的证据 |
|---|---|---|
| 身份 | 请求属于哪个已认证用户? | 服务端身份绑定 |
| 授权 | 用户能访问这个租户与记录吗? | 跨租户访问被拒绝的测试 |
| 范围 | 读取任务是否持有写入凭据? | 独立凭据与最小权限 |
| 输入 | 任意 URL 或标识能否进入执行器? | 输入校验与目标限制 |
| 批准 | 人批准的具体是什么改动? | 目标、参数与来源上下文 |
| 重放 | 重试会不会产生重复副作用? | 稳定操作标识与结果记录 |
| 恢复 | 部分成功后如何处理? | 安全重放或补偿演示 |
| 审计 | 运营人员能解释结果吗? | 脱敏参数与执行结果 |
“只访问当前客户”这样的提示词,不能代替数据库查询中的租户条件。读取与写入两处都需要检查授权。
把读取、草稿和提交分开
假设一个销售助手要读取客户笔记并更新商机。把它拆成三项操作:获取获准的上下文、生成修改草稿、提交已批准的修改。前两步可以使用模型,第三步不必交出无限制写入权。
提交时重新核对租户、记录版本与允许修改的字段。批准应绑定具体参数,不能只绑定“处理这个客户”一句话。如果记录在批准后变化,就重新决策。这是应用侧需要实现的设计,不是 MCP 自动提供的保证。
批量操作同理。允许修改一条记录,不能悄悄变成允许修改所有匹配记录。先限定数量、目标与动作,再执行。
检索到的指令也是待检查内容
CRM 备注、网页和工具结果,可能包含“忽略前文”或“把数据发送到另一个地址”的文字。这些是需要分析的材料,不会因为进入上下文就获得授权。
可以放入一条包含伪造客户名单导出请求的测试备注。预期是:助手可以概括备注,但执行器拒绝越权访问或目标地址。仅要求模型识别恶意指令,仍把最终边界留在概率行为里。
尽量不要把秘密值交给模型。工具只返回完成任务所需的字段,而不是因为连接器方便就返回整条业务记录。
检查协议相关的风险
MCP 官方安全资料覆盖令牌透传、混淆代理、服务端请求伪造和会话风险。评审时要匹配实际部署的版本,不能把草案当成已发布规范。
远程服务检查令牌面向的资源、重定向地址与会话所有权。本地服务则检查可执行程序、文件权限与网络访问。“运行在本地”并不意味着权限有限,进程本身也要受约束。
上线前做一组失败测试
至少覆盖:正常授权读取、跨租户读取、未经批准写入、过期批准、恶意检索内容、重复提交,以及外部服务接受操作后本地进程崩溃。
每个预期结果同时定义业务结果与允许的副作用。“助手道歉了”不能证明授权测试通过。还要核对记录没有变化,且可以在不泄露秘密的前提下追查尝试。
继续阅读Agent 自主性层级、MCP 服务设计与写操作幂等,把这些边界放进同一个运行系统。
如果还没确定执行边界由谁维护,可以用n8n 与自建 AI Agent 决策表明确组件和运行负责人的职责。
一手资料
核查于 2026 年 10 月 24 日。清单与测试场景为本文分析,不构成完整安全审计或厂商背书。
继续阅读
- LLM 与 RAG 评估集模板:从生产日志到上线门槛2026-10-244 分钟AI 系统架构
- 人在回路设计:让人审决策和证据,而不是一屏模型输出2026-02-226 分钟AI 系统架构
- MCP 服务端设计:收自然语言指令的工具,写不出回归测试2026-02-147 分钟AI 系统架构
- 大模型调用成本测算:决定账单的是三个变量,重试率是预算里最少被写下的那一个2026-02-186 分钟AI 成本与回报
- AI 系统可观测性不是一块监控面板:复现不了故障,就等于还在跑演示2026-02-106 分钟AI 系统架构