Zentrix Gateway 文档
用户手册

14. 配置内容检测与安全围栏

完整版章节。内容按 2026.10 主线代码核对;具体入口以当前许可、账号权限和交付环境为准。

返回概览 · 完整版目录 · 下载完整 PDF

内容检测是「流量规则」中的一个动作:规则匹配到调用后,按动作中选择的检测方式检查请求输入和模型输出,并按配置拦截、记录或放行。检测所用的词库、问答和内部系统白名单在「管理控制台 → 护栏」中维护,敏感数据规则见第 13 章。本章另外说明平台级的 SSRF 出站防护和入口 Web 应用防护。

前提说明
角色租户管理员或「安全管理员」;「SSRF 出站防护」仅平台管理员可见
许可模块「护栏」页及其检测数据需要「模型护栏」;在「流量规则」中添加内容检测需要「动态路由」;SSRF 出站防护和 Web 应用防护属于「基础功能」
依赖配置风险类目与提示注入检测需要「内容安全」模型;必答需要「问答语义匹配」模型;人名、地址、机构名需要「敏感信息识别」模型;三者都在「管理控制台 → 系统设置 → 全局设置」的默认模型中设置

14.1 维护词库、问答与内部系统白名单

词库。 进入「管理控制台 → 护栏 → 词库」,页面按「内置黑名单」「自定义黑名单」「白名单」分页签显示词库。

  • 内置黑名单按六类组织:政治敏感与国家安全、违法暴恐与虚假谣言、色情低俗与不良价值观、歧视偏见与仇恨言论、隐私侵权与商业合规、高风险领域应用限制。中文词条共两万多条,类目参照 GB/T 45654 对齐扩充;另附除政治类以外的英文词库。列表名称显示为“类别(中文)”或“类别(英文)”。内置词库随版本更新,可以查看、搜索和导出,不能修改。
  • 选择「新建词库」,填写「名称」,在「类型」中选择「自定义黑名单」或「白名单」,在「分类」中选择六类之一。
  • 打开词库后选择「添加词条」,填写「词条」和「别名」。别名用逗号分隔,与词条命中同一条规则。
  • 「导入」接受 UTF-8 编码的 .txt 文件:每行一个词条,词条后可接一个制表符和逗号分隔的别名;单次最多 20,000 条,同一文件中的重复词条会被跳过,导入后页面提示导入与跳过的条数。「导出」生成同格式的 .txt 文件。
  • 白名单中的词条用于豁免黑名单命中,降低正常业务用语的误报。

问答。 进入「管理控制台 → 护栏 → 问答」,维护必答题库。命中时网关直接返回预设答案,不再调用模型。

  • 列表列为「标准问」「分类」「分组」「相似问」「来源」,可按分组和分类筛选。
  • 选择「新建问答」,填写「标准问」「答案」,按需「添加相似问」,并填写「分类」「分组」「来源」。未分类的问答对所有分类生效。
  • 「导入」接受 .jsonl 或 .txt 文件,「导出」生成 safety-qa-items.jsonl。
  • 平台内置七千多条问答,带「平台内置 · 随版本更新」标签,只读。
  • 问答阈值随流量规则设置,见 14.2 节。识别意思相近的问法依赖「问答语义匹配」模型。

内部系统白名单。 进入「管理控制台 → 护栏 → 内部系统白名单」,选择「新建名单」。在「新建白名单」中填写「名称」,并按需填写「内部域名」「代码仓库」「存储桶」「内网主机」「镜像源」「敏感数据位置」,每行一条。列表显示各栏条目数、「被引用」和「最近更新」;被规则引用的名单不能删除,需先在规则中取消引用。

名单供 14.3 节工具调用防护的模型判断使用:判断模型把名单中的目标视为公司内部系统,不在名单中的一律视为外部;从「敏感数据位置」向外拷贝视为外泄。名单是判断模型的依据,不是确定性的放行规则。

14.2 在流量规则中添加内容检测

在「管理控制台 → 路由策略 → 流量规则」中新建或编辑规则,选择「+ 添加动作」→「内容检测」。动作卡片标题为「内容检测(护栏)」,在「检测方式」中选择一种方式;需要多种方式时再次添加「内容检测」,每种方式一张卡片。规则编辑器的通用操作见第 15 章。

检测方式主要配置依赖
PII 敏感数据「检测范围」(模板与单独类型)、「命中后的处理」,见 13.4 节人名、地址、机构名需要「敏感信息识别」模型
词库在「模板」中选择引用的词库(可多选),以及 14.3 节的规避写法设置无模型依赖
必答在「必答条目」中选择引用的问答(可多选)「问答语义匹配」模型,未设置时不可选,保存会被拒绝
风险类目在「模板」中选择风险分类(六类,可多选)、「提示注入模式」「内容安全」模型,未设置时不可选
工具调用防护见 14.3 节规则的「调用类型」须限定在「模型调用」「MCP 调用」「API 服务」之内;其中模型判断只作用于模型调用

内容安全模型。 在「管理控制台 → 系统设置 → 全局设置」的默认模型区域选择「编辑」,在「内容安全」一行选择模型,并在「模型类型」中选择「通义千问安全护栏」「阿里安全推理护栏」「结构化判断模型」或「自定义内容安全检测服务」。保存时平台用一句违规样例和一句安全样例实际调用核对,核对失败不保存。所选模型不识别某些风险分类或提示注入时,规则编辑器会在对应字段下方说明,选择这些分类不会命中。

风险类目与提示注入。

  • 「提示注入模式」用于越狱与提示词注入检测,默认「拦截」,可改为「仅记录,放行」或「放行,不做处理」。
  • 风险分类命中后的处置在规则出口「检测到风险内容」中选择:「拦截」「仅记录,放行」或「放行,不做处理」。新加入的分类默认启用,语义判定阈值为 0.5,明确命中与疑似命中均为拦截。
  • 需要逐类设置处置或阈值时,在规则编辑器的「YAML 编辑」中修改 action.guard.riskCategories 各项的 exactAction、suspectedAction、semanticThreshold。阈值越低,检测越敏感,误报也越多。
  • 内容安全模型只给出“安全、有争议、不安全”三档判断时,阈值不高于 0.5 拦截有争议及以上的内容,高于 0.5 只拦截不安全的内容。

内容检测动作选择风险类目时的配置

必答阈值。 相似度达到高阈值时返回预设答案;介于低、高阈值之间时记录审计并继续后续检测;低于低阈值时不代答。规则未设置阈值时,高、低阈值均为 0.75。阈值在「YAML 编辑」中设置 action.guard.qaThresholdHigh 与 action.guard.qaThresholdLow,取值 0–1。必答只作用于请求输入。

在 YAML 编辑中设置必答阈值

检测阶段。 内容检测默认检测「输入+输出」。需要只检测输入或只检测输出时,在「YAML 编辑」中将 action.guard.stage 改为 input 或 output。

图片内容与多轮对话。 在「YAML 编辑」中配置 action.guard.image 后,输入中的图片先由图片理解模型转写为描述和图中文字,再与上下文一起按词库、敏感数据和风险类目等检测项判定。model.gatewayModelId 选择支持图片输入的模型,allowedFetchHosts 填写允许网关拉取图片的内网主机名,未填写时只拉取公网图片。所选模型为外部服务时,图片会发送至该服务。action.guard.multiTurn 提供三项检测:reassembleShortMessages(拆分输入检测,将连续短消息按用户消息顺序拼接后检测)、cumulativeOutput(多轮回答合并检测)和 sessionEscalation(会话多次命中限制:window 取 m10、m30、h1、h6、h24,threshold 取 2 到 20,response 取 reject_session 或 treat_suspected_as_exact,duration 的取值同 window)。以上均默认不开启。验证规则时,可在「验证规则」的「消息」中为每条消息「附图」并选择「检测方向」。无法读取内容的文件(PDF 等文档类附件、以文件编号引用而非直接携带字节的图片)不做检测,照常放行并在「路由策略命中」中留「未检测」记录。判定细节见《Zentrix Gateway 路由策略用户手册》第 5.2 节。

多条规则叠加。 一次请求命中多条带内容检测的规则时,检测项合并执行:检测阶段取并集,同一分类或类型取更严格的处置与更低的阈值,必答阈值取较低者。

14.3 规避写法识别与工具调用防护

规避写法。 词库匹配前,网关对词条和待检文本执行相同的归一化,始终开启:转小写、全角转半角、繁体转简体、字母变体与同形字归一、连续三次及以上的重复字符压缩为一个,并跳过空白、零宽字符和常见分隔符号。拼音全拼和声母缩写按疑似命中记录。

词库卡片上另有四项设置:

设置作用默认值
「字符插桩命中后」只有经过归一化才命中时的处置「拦截」
「编码解码」识别 Base64、Hex 和 URL 编码片段,解码后再匹配关闭
「解几层」解码层数,可选 1–3 层,层数越多 CPU 开销越大2 层
「解码后命中」只有解码后才命中时的处置「拦截」

词库检测卡片上的规避写法设置

两项处置均可选「拦截」「仅记录,放行」或「放行,不做处理」。业务通过网关传输 Base64 附件或签名时,开启「编码解码」可能产生误报,建议先在受控范围选择「仅记录,放行」观察,核对误报后再改为「拦截」。

工具调用防护。 工具调用防护对模型发起的工具调用、MCP 调用和 API 服务调用生效,规则的「调用类型」须限定在这三类之内。它由「匹配规则」和「模型判断」两部分组成,可单独或同时配置:

  • 「匹配规则」(对模型调用、MCP 调用、API 服务均生效):先于模型判断执行,只做字面匹配,不调用模型。选择「添加匹配规则」后填写:「名称」;「工具」(支持 * 通配,如 *_file);「检查位置」(「模型发出的调用参数」或「工具返回的结果」,API 服务分别检查请求体与响应体);「字段」(留空表示检查全部字段,多层用点号分隔,如 args.content);「匹配方式」(「正则」或「关键词」,关键词不区分大小写与全角、半角)和「匹配内容」;「例外」(只豁免与例外重叠的那一处命中)。每条规则可填写示例后选择「测试」,查看「命中」「未命中」及命中的字段与片段。每个工具调用防护最多 32 条匹配规则,匹配内容不超过 4096 字节。代码执行类场景建议同时启用模型判断。规则中的工具名在近 30 天没有出现过时,保存前提示核对工具名。
  • 「模型判断(仅作用于模型调用)」:由判断模型判定工具调用是否危险,策略的调用类型不含模型调用时不显示。配置项:「检测范围」(「仅检测执行命令类工具」为默认,或「全部工具调用」);「额外工具名」(追加需要审查的工具名,支持 * 通配);「拦截类别」(共十一类:从网上下载脚本直接运行、把敏感数据发到公司外部、大批量或不可恢复的删除、改生产环境、改共享基础设施、扩大权限、暴露密钥或令牌、逃出隔离环境、破坏审计或监控、修改流量目标、改写历史记录);「自定义类别」(选择「添加自定义类别」,填写「名称」「判定标准」,并各至少填写一条「正例」「反例」,各最多 8 条,可选择「测试」核对判对数;最多 32 个);「判断模型」(选择了拦截类别或自定义类别后必须选择;选择「评测」可运行内置评测用例,查看准确率与误拦数,每条用例会实际调用一次所选模型);「内部系统白名单」(引用 14.1 节的名单)。
  • 「命中后」:「仅记录」(默认)或「拦截」。
  • 「向调用方返回拦截说明」:默认勾选,「命中后」为「仅记录」时不可用。

「命中后」选择「拦截」时:模型发出的调用命中,网关去掉该调用并通知模型改用其他方式;MCP 调用参数或 API 服务请求体命中,拒绝本次调用;工具返回结果或 API 服务响应体命中,替换为「该内容已被拦截」。对模型发出的调用,网关向同一目标重新请求并提示模型换一种做法;同一次调用被拦截 3 次后不再重试,网关移除被拦截的工具调用,并提示联系管理员。命中记录在「概览 → 路由策略命中」中显示依据(匹配规则名称或类别名称),匹配规则命中可在「更多」中选择「在策略中添加例外」。

14.4 失效处理、拒答话术与流式输出

失效处理。 规则出口「组件不可用时」的「护栏检测出错」决定检测无法完成时的处理,可选「放行,继续网关路由」或「拒绝本次调用」。以下情况按该设置处理:

  • 网关上的护栏配置已过期;
  • 规则引用的词库、问答条目或敏感数据模板在网关上缺失;
  • 内容安全模型或敏感信息识别模型未设置或暂时不可用;
  • 送检内容超过单次检测上限,有一部分未送检;
  • 命中原文证据未能保存。

问答语义匹配模型不可用时只退回原句匹配,不按此项处理。该项由规则逐条设定,保存规则前逐条确认;高风险、强监管或包含敏感数据的正式业务设为「拒绝本次调用」。多条规则叠加时,只要有一条为拒绝,就按拒绝处理。按拒绝处理时,非流式调用返回 HTTP 503,输入检测阶段出错时不再请求模型;流式输出在出错处中止。

拒答话术。 拦截时返回给调用方的拒答话术默认为“很抱歉,我无法回答您的问题。”。需要自定义时,在「YAML 编辑」中设置 action.guard.refusal.default,并可在 action.guard.refusal.byCategory 中按风险分类覆盖,分类话术优先。拒答内容应说明请求无法继续及内部支持渠道,不应暴露检测规则、阈值或绕过方法。非流式请求被拦截时,网关返回 HTTP 403。

流式输出。 检测阶段包含输出时,流式响应同样受检,网关边检测边放行:

  • 词库、敏感数据正则等规则层检测逐段进行。网关只扣住每段末尾可能与后续文字组成命中的一小段,长度取决于规则引用的词库中最长的词条和敏感数据规则的最大匹配长度,匹配长度不受限的正则会把扣留范围延伸到句末;其余文字检测通过即放出。
  • 风险类目、人名等需要模型判断的检测按句进行,每句经模型判定通过后放出,判断时只携带提问和最近一段前文。模型调用失败时重试一次,仍失败则按「护栏检测出错」处理。
  • 每路流式响应同一时刻至多有一次模型判断在途,判断期间到达的句子合并到下一批送检。启用模型判断时,判断模型的并发约等于同时进行的流式响应数,可据此预留判断模型的容量。
  • 命中脱敏时,扣住的片段替换后放出,前后文字不变。
  • 命中拦截时,网关在命中处中止,按调用协议发送终结帧:Chat Completions 为 finish_reason: content_filter 加 [DONE],Responses 与 Anthropic Messages 为 event: error;拒答信息放在终结帧根上的 safetyIntervention 字段(kind: stream_cut)。已放出的内容保留。
  • 中止后网关继续读完上游输出,按上游实际用量计费。
  • 单段连续扣留达到约 64 KiB 时,网关对扣留内容做一次完整检测后放出;跨度超过该上限的命中词在流式下检测不到,非流式没有这一限制。
  • 模型的思考内容和工具参数只检测、不改写,需要改写时按中止处理。

14.5 上线验证与命中通知

内容检测上线前至少覆盖以下样例:允许内容、各风险分类样本、敏感数据样本、零宽与同形字规避、编码内容、必答问题、检测组件不可用、输入命中、输出命中,以及流式与非流式两种调用。

  1. 先用「敏感数据试运行」(13.3 节)和流量规则的「验证规则」(第 15.3 节)核对判定。
  2. 用测试调用触发规则,在请求详情的「护栏」区核对结论与命中说明,例如「已拦截」及命中的词库名称。
  3. 验证记录至少包含规则名称、检测方式、阈值、预期处置、实际处置、请求标识和责任人。

输入、输出两个方向在 OpenAI 兼容入口与网关原生入口都执行;只挂内容检测、不指定转发目标的增强规则同样作用于输出方向。请求阶段命中或非流式回答命中时返回 403,error.message 为规则配置的拒答话术,error.details 中 reason 为 safety_intervention 的条目带命中类别、检测方向与规则标识;流式回答命中时以终结帧结束,拒答话术位于 safetyIntervention。检测服务不可用且规则选择阻断时同样返回 403,但原因码与说明不同于命中。引用的租户词库、问答集尚未发布成功时,保存或配置发布会失败并在路由策略页指出缺少的对象。完整说明见路由策略用户手册 5.2 节与错误参考。

命中通知不在内容检测中配置,入口为「管理控制台 → 运行与排障 → 告警规则」。需要逐次通知时,在「告警规则」页签目录的「内容护栏」分类中,为需要的「内容风险类别 · 入口」行绑定通知渠道(「通知渠道」列),再打开行末「操作」列的通知开关;词库、问答与内容风险判定的命中按所属类别通知,敏感数据命中不外发。需要按统计窗口告警时,选择「新建告警规则」→「网关策略事件:拦截、故障转移等」,设置统计窗口与阈值。接收渠道在「通知渠道」页签维护。详见第 22.2 节。

告警规则目录中的内容护栏通知行

14.6 SSRF 出站防护与 Web 应用防护

SSRF 出站防护。 平台管理员进入「管理控制台 → 平台扩展 → SSRF 出站防护」,页面为「平台 SSRF 出站防护」,包含三项设置:

设置默认说明
「SSRF 出站防护」关闭开启后,平台发起的出站请求先检查目标地址:私网、回环、链路本地、云元数据地址(如 169.254.169.254 及常见元数据主机名)、CGNAT 与 IPv6 本地地址等不可访问。地址在建立连接时重新解析并检查,用于防御 DNS 重绑定
「HTTP 出站防护」关闭开启后出站只允许 HTTPS
「内网出站放行名单」关闭名单有独立开关。关闭时,企业 IAM 换票等平台代发请求可访问普通内网地址;开启后只允许访问「部署内置放行(只读)」中的地址和手动添加的地址

放行名单的每一项必须写成 host:port,例如 172.16.0.1:8443;回环、链路本地和云元数据地址不能加入名单。添加后选择「保存放行名单」。各项设置保存后立即生效,无需重建服务;运行时尚未完成更新时,页面显示「目标设置已保存,运行时仍在收敛。」。

防护作用于模型供应商调用、MCP 服务地址(注册探测与工具调用转发)、外部智能体地址、告警通知发送以及 IAM 等平台代发请求。MCP 地址被拦截时,页面提示「出于安全策略,平台拒绝访问这个地址(指向内网或被禁止的网段)。请改用可对外访问的地址。」。「内网出站放行名单」只作用于企业 IAM 换票等平台代发请求;开启「SSRF 出站防护」后,位于内网的模型供应商与 MCP 服务地址会被拒绝。接入不受信的模型供应商或 MCP 服务前,平台管理员应先确认现有模型端点与 MCP 服务是否位于内网,再开启防护。

Web 应用防护。 控制台入口和网关入口可启用 OWASP 核心规则集(CRS 4.x,偏执等级 1)。网关入口不检查请求体,只检查 URI 与请求头,避免提示词和模型响应被误判;控制台入口检查请求体。该功能没有控制台页面,由部署人员通过部署配置项 LP_WAF_ENGINE_MODE 设置:

取值行为
Off(默认)不检测
DetectionOnly仅检测,命中只记录
On拦截命中的请求

命中记录归属到部署指定的边缘租户(LP_WAF_TENANT_ID,未指定时为最早创建的启用租户)。当前 Helm 部署不读取该配置项。


上一章:13. 配置敏感数据(PII)检测 · 下一章:15. 路由策略与流量保护

On this page