跳到主要内容

安全护栏

AISIX AI 网关会在两个方向上对 MCP 工具调用执行安全护栏:在工具调用发生前检查工具调用的参数(输入),并在工具结果返回客户端前检查结果内容(输出)。MCP 工具调用使用与模型流量相同的安全护栏链,因此用于内容策略的安全护栏也可以检查 Agent 的工具流量。被阻断的调用会以 MCP 协议错误返回,并且不会发送到上游 MCP Server。

本页说明安全护栏如何作用于 MCP 路径。创建安全护栏和选择执行模式请参见内置关键词安全护栏;由服务提供方支持的安全护栏请参见流量控制下的对应服务提供方页面。与模型路径共用的作用域和执行模式语义请参见安全护栏行为

安全护栏如何作用于 MCP

网关只会对 tools/call 请求执行安全护栏。MCP 握手和 tools/list 不包含工具内容,因此不会被扫描。

对于每个工具调用,AISIX 会解析一次安全护栏链,并在输入和输出两个方向运行:

  • 输入。 AISIX 会在调用工具之前扫描工具调用参数。如果安全护栏阻断,请求会被拒绝,AISIX 不会联系上游 MCP Server。
  • 输出。 AISIX 会在工具结果返回客户端之前扫描结果。如果安全护栏阻断,AISIX 会拦截结果并改为返回协议错误。

MCP 工具调用没有模型,因此模型作用域的安全护栏不会作用于 MCP。环境、调用方 API Key 或团队作用域的安全护栏会生效。这遵循安全护栏行为中说明的通用作用域匹配规则:通过 Admin API 创建的自托管安全护栏会作用于整个环境;AISIX Cloud 还可以进一步把安全护栏限定到调用方 API Key 或团队。当没有匹配的安全护栏时,工具调用不会增加额外延迟。

会扫描哪些内容

  • 输入tools/call 请求中的参数对象。AISIX 会把参数交给与模型路径相同的输入检查流程。
  • 输出:工具结果中的文本内容。AISIX 会解析结果的 text 内容块并扫描其中的文本,而不是扫描序列化后的 JSON 外层结构,因此外层字段名不会造成误报,被转义的字符也无法绕过拦截。协议级错误结果(没有 result 数据内容的 MCP error)没有可扫描的工具输出,会被直接放行。

网关只在传输过程中检查这些内容,不会存储 MCP 工具参数或结果。内容捕获与安全护栏检查是不同的能力边界。

阻断响应

当安全护栏阻断某个工具调用或工具结果时,AISIX 返回的是 HTTP 200 加 JSON-RPC 错误封装,而不是模型路径中的 HTTP 422。MCP 客户端期望收到 JSON-RPC 响应,因此阻断会以客户端可处理的协议错误呈现:

{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32600,
"message": "tool call blocked by content policy (guardrail 'block-secrets')"
}
}

错误信息会标明触发的安全护栏,以及被阻断的是输入参数(tool call)还是输出结果(tool result)。网关会把被阻断的调用记录为用量事件,并设置安全护栏阻断标记,因此可以在遥测中看到这些阻断。

输出侧默认阻断

如果工具结果无法按预期 JSON 响应解析,AISIX 会阻断该结果,而不是返回未经过扫描的内容。只要调用挂载了安全护栏,就不会返回安全护栏无法检查的工具输出。

完整 MCP 错误格式和其他 MCP 状态行为请参见响应头与错误码

验证

  1. 在环境作用域挂载一个关键词安全护栏,并设置一个容易触发的词,例如阻断 secret。创建命令请参见内置关键词安全护栏
  2. 使用允许访问某个工具的调用方 API Key 连接 MCP 客户端,然后在工具参数中包含被阻断词并调用该工具。

预期结果: 工具调用返回 HTTP 200 和 JSON-RPC error 封装(code 为 -32600),上游 MCP Server 不会收到请求。参数和结果都干净的调用会正常返回。把安全护栏切换为监控模式后,同样的调用会被放行,但仍会记录命中信息;详见使用监控模式

在 AISIX Cloud 中为 MCP 配置安全护栏

在 AISIX Cloud 中,可以通过 Dashboard 创建和挂载安全护栏,而不是使用 Admin API:

  1. 打开环境,进入 Guardrails,然后创建安全护栏。
  2. 将作用域设置为 Whole environment。这会检查环境中的所有模型请求和所有 MCP 工具调用。
  3. 不要对 MCP 工具调用使用 Specific models 作用域:MCP 工具调用没有模型,因此模型作用域安全护栏不会运行。

该环境中的任何调用方 API Key 发起 MCP 工具调用时,其工具参数和结果都会被检查。更多信息请参见 AISIX Cloud

下一步