Zentrix Gateway 文档

13. 配置敏感数据(PII)检测

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

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

本章内容:说明如何让平台在请求发往模型或工具之前、以及模型和工具返回结果之后,识别并处置身份证号、手机号、银行卡号、密钥等敏感数据。读完本章,您可以查看内置识别规则、新增企业自己的规则、用试运行核对效果、在流量规则中启用检测,并核对发往上游的报文与原文留存。人名地址等实体、MCP 工具的入参与返回内容、图片中的敏感信息,以及 PDF、Word 等附件中的敏感信息,也在本章说明。

检测分两处配置:一处定义「能识别什么」,一处定义「对哪些调用、检测哪些类型、命中后怎么处理」。

位置作用
:--:--
管理后台 › 护栏 › 护栏规则 › 敏感数据维护内置与自定义识别规则,提供导入、导出与试运行
管理后台 › 流量 › 流量规则 › 内容检测 · 对话内容指定检测范围与命中后的处理方式

识别规则本身不对任何调用生效,只有被流量规则的「敏感信息检测」引用后才参与判定。所需的许可模块为「模型护栏」,在流量规则中添加检测动作还需「动态路由」。

13.1 查看内置识别规则

适用场景:先确认平台开箱能识别哪些数据,再判断是否需要补充企业自己的规则。

操作步骤

  1. 进入「管理后台 › 护栏 › 护栏规则」,选择「敏感数据」页签。
  2. 列表按规则名称、正则、类型、来源显示,规则名称后的标签是所属分组。
  3. 需要按行业查看时,按分组筛选:「通用」「金融」「医疗」「密钥」。

你会看到

  • 内置规则共 25 条,以内置规则为主。「通用」覆盖身份证号、手机号、银行卡号;「金融」覆盖银行账号、纳税人识别号、统一社会信用代码;「医疗」覆盖病历号等;「密钥」覆盖 Access Token、API Key 等。
  • 身份证号、手机号、银行卡号三条规则的「正则」列显示为智能识别,按校验位与号段判定,不是简单字符匹配;校验位不满足要求的 18 位数字不会被识别为身份证号。

注意

  • 内置规则随版本更新,打开后不能修改或删除;需要覆盖企业内部编码时按 13.2 节新增。
  • 本页没有检测总开关,也没有单条内置规则的启停开关。一类数据是否参与检测,只取决于引用它的流量规则「检测范围」是否包含该类型。
  • 统一社会信用代码按 18 位字符结构判定;若业务中大量出现普通 18 位流水号,请按 13.3 节用真实形态的样本核对命中情况,必要时改用自定义正则。

13.2 新增自定义规则与行业模板

适用场景:内置规则覆盖不到企业内部编码(员工工号、客户编号、合同号),或需要按行业成套启用检测。

操作步骤(自定义规则)

  1. 在「敏感数据」页签点击「添加PII策略」。
  2. 填写「策略名称」,例如「员工工号」;在「正则表达式」中填写匹配规则,例如 \bEMP-\d{6}\b。
  3. 在「类型」中下拉选择已有类型,或直接输入新标识(例如 employee_no)后在列表中选择「使用输入的 ID」。
  4. 点击「确认」。

你会看到

  • 页面提示「PII 规则已添加」,列表出现该规则,「来源」为「自定义」,顶部规则总数随之增加。
  • 新类型标识立即出现在试运行的类型列表与流量规则的「检测范围」中。
图 13-1 在「类型」中输入新标识并选择「使用输入的 ID」,即可建立企业自己的数据类型
图 13-2 自定义规则保存后出现在列表中,来源为「自定义」

行业模板:在流量规则的「检测范围 › 模板」中按行业成套引用,例如选「证券」即带入该行业的全部相关类型。模板名在画布摘要中显示为中文,保存前可在顶部「配置检查」确认是否为绿色勾选的「配置正常」。模板随平台版本维护,引用后其内类型随平台更新自动生效。

注意

  • 正则需自行加边界。EMP-\d{6} 会把 EMP-1234567 的前 6 位当作命中,脱敏后仍留下尾数;写成 \bEMP-\d{6}\b 可避免。
  • 规则上线前,按 13.3 节用「应命中、边界值、不应命中」三类样本逐一核对。表达式过宽会造成误报和业务中断,过窄会漏检。
  • 同一类型可对应多条规则;流量规则按类型引用,新增规则会自动并入引用该类型的检测范围。

导入与导出识别规则:在测试环境调好的规则要搬到生产环境,或需要在多个租户之间保持一致的自定义规则时使用。

  1. 在源环境的「敏感数据」页签选择「导出」,浏览器下载 pii-rules.json。
  2. 在目标环境的「敏感数据」页签选择「导入」,选择该文件并确认。
  • 导入完成后显示「已创建:N;已更新:N」。
  • 文件中的内置规则与目标环境不一致时,对话框列出「这几条内置规则与平台不一致,已跳过,平台规则未改」及「不一致的内容」,其余规则照常导入。
  • 导入中途失败时显示「导入失败。」,可在同一对话框中重试,已导入的部分不会重复创建。
  • 只能导入本页导出的 JSON 文件,格式不符时提示「不支持的文件格式」。导入只迁移识别规则,不迁移流量规则;目标环境仍需按 13.4 节在流量规则中引用相应类型,检测才会生效。

13.3 用试运行核对识别效果

适用场景:规则上线前,或调整正则之后,用一段文本确认命中与处置符合预期。

操作步骤

  1. 在「敏感数据」页签点击「试运行」,打开「敏感数据试运行」对话框。
  2. 在「检测到敏感信息」中选择处置方式:「脱敏后继续处理」或「拦截」。
  3. 选择要检测的类型,可多选;在文本框中粘贴样例,点击「检查」。

你会看到

结论含义额外显示
:--:--:--
未发现风险所选类型均未命中本次检查耗时
已脱敏命中,按「脱敏后继续处理」处理各类型命中处数、脱敏后的文本
已拦截命中,按「拦截」处理各类型命中处数、用户会看到的回复话术
  • 脱敏后的文本中命中片段被替换为 [REDACTED:phone]、[REDACTED:id_card] 一类占位符,便于阅读;实际调用中网关使用加密占位符 [PIIREF:v2:…],见 13.5 节。
  • 普通业务文本(会议安排、订单号)通常显示「未发现风险」,耗时在 60 毫秒以内。
图 13-3 综合样本的试运行结果:结论为「已脱敏」,按类型列出命中处数与脱敏后文本
图 13-4 以「拦截」方式试运行边界样本:结论为「已拦截」,并显示用户会看到的回复话术

注意

  • 试运行不调用模型、不经过网关、不产生调用记录,可以放心核对规则,不影响线上流量和计费。人名、地址、机构名例外,需调用敏感信息识别模型(见 13.6 节)。
  • 试运行按「类型 + 命中处数」汇总。要确认具体哪一段被识别,选「脱敏后继续处理」,对比脱敏后文本中被替换的位置。
  • 新增或修改规则后重新试运行,结果立即反映变化。样本请使用虚构数据,不要粘贴真实个人信息。

13.4 在流量规则中启用敏感信息检测

适用场景:让检测真正作用于指定的模型、模型分组、API 密钥或 MCP 服务。

前提:已确定需要保护的对象;需要人名的场景已按 13.6 节设置识别模型。

操作步骤

  1. 进入「管理后台 › 流量 › 流量规则」,点击「新建规则」,填写规则名称。
  2. 点击「添加条件」,选择匹配范围,例如「模型」并选中需要保护的模型,或「模型分组」并选中需要保护的分组。
  3. 点击「添加处置动作」,在「请求转发前」分组中选「内容检测 · 对话内容」,在「检查阶段」中选择「用户提问」「模型回复」或「两者」,在「检查方式」中勾选「敏感信息」。
  4. 在「检测范围」中选行业模板或单独选择类型,两者可同时使用;重复的类型只检测一次。
  5. 在「命中后的处理」中选择「脱敏后继续处理」或「拦截」。
  6. 点击「保存规则」,在「确认变更」中核对「匹配条件」与「执行动作」,再点击「确认并应用」。

你会看到

  • 「内容检测 · 对话内容」节点按所选检查阶段出现在「请求转发前」或「收到上游响应后」;选「两者」时两处共用同一个节点,摘要显示所选模板名称与命中后的处理方式。
  • 「确认变更」中的「匹配条件」为所选模型或分组,「执行动作」为模板名称与处理方式。
图 13-5 画布摘要以中文显示模板名称与命中后的处理方式
处理方式行为调用方看到的结果
:--:--:--
脱敏后继续处理请求方向:命中片段替换为加密占位符后再发往上游,模型回复中的占位符在返回调用方前还原为原值,只有该调用方的请求能还原;响应方向:命中片段替换为不可还原的 [REDACTED:<类型>] 后再返回正常响应;调用方自己发出的敏感信息在回复中显示原值,模型新生成的敏感信息显示为 [REDACTED:<类型>]
拦截终止本次调用,不转发上游(请求方向)或不返回原文(响应方向)HTTP 403,正文为回复话术

注意

  • 检测作用的方向由节点的「检查阶段」决定:「用户提问」只检测请求,「模型回复」只检测响应,「两者」双向检测。一条规则只有一个检查阶段。
  • 一次请求命中多条检测规则时,同一类型取更严格的处理:拦截高于脱敏。
  • 流量规则按优先级依次匹配。若排在前面的规则设置了命中后结束匹配,本规则不会参与评估;保存前请在「确认变更」中核对命中顺序。
  • 流量规则另有条件「请求含敏感信息」,用于按请求是否含某类敏感数据分流或拒绝(见第 15.7 节)。同一条规则中,条件「请求含敏感信息」与动作「敏感信息检测」不能同时使用,编辑器会提示「条件里已有「请求含敏感信息」,同一条规则不能再做敏感信息检测;两者都需要时,请拆成两条规则。」
  • 人名、地址、机构名只能由敏感信息识别模型识别,不能用作「请求含敏感信息」条件;要对这类信息脱敏或拦截,请在动作「敏感信息检测」的检测范围里选择。

13.5 核对脱敏效果与原文留存

适用场景:确认上游确实拿不到敏感原文,并核对调用记录里留存了什么。

操作步骤

  1. 用一条含虚构敏感数据的请求调用该服务:
   curl https://<网关地址>/api/v1/agent-gateway/openai/v1/chat/completions \
     -H "Authorization: Bearer <YOUR_API_KEY>" \
     -H "Content-Type: application/json" \
     -d '{"model":"<模型名>","messages":[{"role":"user","content":"测试数据:身份证号110101199003077774;手机13800138000;员工工号EMP-123456;会议室A-301。"}]}'
  1. 进入「管理后台 › 观测中心 › 运行总览 › 请求」,打开这条请求。
  2. 在「请求」页签查看「客户端请求」与「发往上游的请求」,再切到「路由与改写」核对命中的规则与处置。

你会看到

  • 「发往上游的请求」中,身份证号、手机号、工号等命中片段被替换为 [PIIREF:v2:…] 密封占位符;非敏感内容(如「会议室A-301」)保持不变。
  • 调用方收到的回复中,模型复述的占位符已还原为原值。还原适用于 OpenAI Chat、OpenAI Responses、Anthropic Messages、Gemini 四种协议的模型调用,不区分 API 密钥、智能体等调用方;其他协议(如 Completions、向量)请求中的命中替换为不可还原的 [REDACTED:<类型>]。
  • 同一调用方的同一内容始终换成同一个占位符,反复出现的内容在上游看到的占位符不变。模型思考过程中的占位符保留原样,不还原;工具定义不检测。
  • 被拦截的请求状态为「已拦截」、失败阶段「策略拦截」,不计费。
图 13-6 「发往上游的请求」:敏感片段已替换为占位符,上游看不到原值
留存位置内容
:--:--
发往上游的报文与响应只有占位符,不含命中原值
网关留存的回复报文与语义缓存还原之前的回复,只有占位符;含占位符的回复不进语义缓存
命中记录与审计记录数据类型、命中次数、规则与处置方式,不含原文
客户端请求报文按「系统设置 › 全局设置 ›「数据留存」页签」的正文留存设置留存

注意

  • 占位符按调用方还原:同一调用方的同一内容始终换成同一个占位符,只有该调用方的请求能还原。同租户其他调用方把占位符原文贴进自己的请求时不会还原;占位符不设有效期。模型思考过程中的占位符保留原样,不还原;模型改写或拆散了占位符时,回复中同样保留原样。
  • 若业务不允许请求正文落库,请在「管理后台 › 系统设置 › 全局设置 ›「数据留存」页签」中调整正文留存范围再上线。该设置对本租户全部调用生效,调整前请评估对排障的影响。
  • 操作审计只记录配置变更(谁在何时改了哪条规则),不含请求正文。脱敏占位符与租户和调用方绑定,不能跨租户互换使用。

13.6 识别人名、地址与机构名

适用场景:需要识别企业内人名、住址、机构名这类没有固定格式的实体。

前提:需先在「系统设置 › 全局设置 ›「常规」页签 › 默认模型」中为「敏感信息识别」选定模型。该项是全租户共用的平台基础设施,列表中标「平台基础设施,不按分发」。

操作步骤

  1. 进入「管理后台 › 系统设置 › 全局设置」,在「默认模型」区域点击「编辑」。
  2. 在「敏感信息识别」一行选择模型,点击「保存」。
  3. 回到「敏感数据 › 试运行」,在类型中选择「人名」「地址」「机构名」,粘贴样例后点击「检查」。

你会看到

  • 配置生效后,脱敏文本中人名、地址、机构名被替换为对应类型的占位符;流量规则编辑器中显示「敏感信息识别模型:<模型名>」。
  • 未配置模型时,流量规则的检测范围提示「还没有设置敏感信息识别模型,人名、地址、机构名不可选」;试运行提示「还没有设置敏感信息识别模型」。
  • 所选模型不可用或已停用时,规则编辑器提示「敏感信息识别模型已不可用,请重新选择」或「敏感信息识别模型已停用」。

注意

  • 上线前先确认识别模型可用。识别模型缺失或不可用时,这三类实体无法被识别,依赖它们的规则不能按预期处置。
  • 识别模型的调用在模型分组用量中显示为「平台内部调用:敏感信息识别」。
  • 该配置影响所有引用这三类的规则,仍有规则在使用时不能清空,页面会列出需要先处理的规则。所选模型的上游为外部供应商时,待检文本会发送给该供应商,请选用部署在企业内部或符合数据合规要求的模型。

13.7 MCP 工具的入参与返回内容

适用场景:MCP 工具会把客户档案、订单信息等敏感数据带进带出,需要对调用参数与返回结果同样检测。

前提:已有可调用的 MCP 服务并已签发 MCP 令牌;规则的「调用类型」需限定为 MCP 调用。

操作步骤

  1. 新建流量规则,添加条件「具体能力」并选中目标 MCP 服务,再添加条件「调用类型 = MCP 调用」。
  2. 添加「内容检测 · 对话内容」,勾选「敏感信息」,「检测范围」选模板「通用」,「命中后的处理」选「脱敏后继续处理」或「拦截」。
  3. 需要同时拦截危险操作时,在同一规则中再添加「内容检测 · 工具调用」,见第 14.8 节。
  4. 保存规则并「确认并应用」。

你会看到

位置脱敏后继续处理拦截
:--:--:--
调用参数(请求方向)命中片段替换为不可还原的 [REDACTED:<类型>] 后再转发给上游工具拒绝本次调用,返回 execution denied: CONTENT_POLICY_BLOCKED
工具返回结果(响应方向)命中片段替换为不可还原的 [REDACTED:<类型>] 后再交给调用方不下发原文,返回拦截说明
  • 只出现在工具返回中、调用参数里没有的敏感数据(例如工具按编号查询返回的客户档案)同样会被检测和处置。
  • 被拦截的调用在 MCP 服务的「调用情况」中显示「失败 · 内容策略拦截」,放行的显示「成功」。
图 13-7 同一规则对 MCP 调用同时启用敏感信息检测与工具调用防护
图 13-8 MCP 服务的「调用情况」:被拦截的调用显示「失败 · 内容策略拦截」

注意

  • MCP 服务详情页不提供独立的护栏页签,入参与返回的检测统一在流量规则中配置。工具页签会提示:如需禁用部分工具或只允许调用指定工具,请在流量规则中按「工具名」条件配置。
  • 返回内容被脱敏替换的调用仍计为成功调用,且「调用情况」不单独标注命中的护栏类型;排查时以请求详情与命中记录为准。
  • 调用前需在成员侧「获取连接配置」签发令牌,令牌到期后重新签发。

13.8 检测图片中的敏感信息

适用场景:调用方随请求附带截图或照片(开户截图、证件照片等),需要识别图中的身份证号、手机号。

前提:一个支持图片输入的视觉模型;所选模型的上游为外部供应商时,图片会发送至该供应商,请评估合规要求。

操作步骤

  1. 打开已有「内容检测 · 对话内容」动作的流量规则,确认已勾选「敏感信息」并设置命中后的处理。
  2. 在护栏段打开「检测图片内容」,在「图片理解模型」中选择视觉模型。也可以点击「YAML 编辑」,在 action.guard.content 下指定视觉模型,再点击「应用到画布」:
   action:
     guard:
       content:
         pii:
           action: block
         image:
           model:
             modelId: <视觉模型 ID>
  1. 点击「保存规则 › 确认并应用」。保存时平台会用内置测试图实际调用所选模型,核对它能读出图中文字;核对不通过时给出具体原因,规则不保存。
  2. 用含测试敏感信息的截图与普通通知图片各调用一次,核对结果。

你会看到

  • 规则保存成功并下发;读回规则定义时 action.guard.content.image.model.modelId 完整保留,规则详情正常渲染出「请求进入 → 条件判断 → 请求转发前 / 收到上游响应后 → 处理结果 → 异常处理」的节点结构。
图 13-9 在 YAML 编辑中为护栏动作指定图片理解模型

注意

  • 图片检测依赖视觉模型先把图片转写为「描述 + 图中文字」,再用同一规则的检测项判定。图片过小、模糊或为纯图形时模型读不出文字,图中敏感信息不会被识别,规则也无法通过保存时的核对;上线前请用真实业务截图验证一次。
  • 未开启「检测图片内容」时图片不参与检测,图中的敏感信息会原样发给上游。附件里的文字不依赖这个开关,见 13.9;附件中的图片(扫描页、内嵌图片)只在开启后检测。
  • 图片检测不单独设置阈值,判定结果与文本检测共用同一规则的处置方式。

13.9 检测附件中的敏感信息

适用场景:员工经 Claude Code、Codex 或自研应用,把含身份证号、姓名的 PDF、Word、Excel 文件作为附件随请求发给模型,需要在文件发出前识别并处置其中的敏感信息。

前提:流量规则已添加「内容检测 · 对话内容」并勾选「敏感信息」(13.4 节)。附件检测没有单独的开关,规则启用敏感信息检测后,附件即参与检测;识别人名、地址、机构名还需先设置敏感信息识别模型(13.6 节)。

检测的附件格式

格式读取的内容
:--:--
PDF逐页读取文字;没有文字的页(如扫描页)按图片处理
Word(.docx)正文、文本框、修订中插入与删除的文字、页眉页脚、脚注尾注与批注
PowerPoint(.pptx)各张幻灯片与备注
Excel(.xlsx)各工作表的单元格内容与批注
CSV、纯文本、Markdown、RTF全文

附件出现在用户消息中,或出现在工具返回的结果中(例如 Claude Code 用 Read 工具读取本地 PDF 后发出的附件),按同一方式检测。

操作步骤

  1. 打开流量规则,在「命中后的处理」中选择「脱敏后继续处理」或「拦截」。
  2. 需要检测 PDF 扫描页与文档中的图片时,按 13.8 节为该规则配置图片检测。
  3. 点击「保存规则 › 确认并应用」。
  4. 用一份含虚构身份证号的 PDF 作为附件调用一次,核对结果。

你会看到

  • 选择「脱敏后继续处理」时,命中的附件改为脱敏后的文字发给模型,文字以「[附件 第 1 个附件,已由网关脱敏,原文件未发送]」开头,原文件不发出;未命中的附件原样发送。后续轮次重复提交同一附件时,改写后的文字保持一致。
  • 附件中图片(扫描页、文档内嵌图片)里的命中无法打码,即使选择「脱敏后继续处理」,也按「拦截」处置。
  • 选择「拦截」时,本次调用被拒绝,外部客户端经 API 调用时返回 HTTP 403。
  • 「运行总览 › 规则命中」中,命中依据显示为「附件文字 · 第 1 个附件 · 第 3 页」,附件图片中的命中显示为「附件图片文字 · 第 1 个附件 · 第 2 页」;「附件摘录」显示命中位置前后各 60 字的脱敏文字。依据与摘录只标注附件序号,不显示文件名,也不保存附件全文。
  • 在「运行总览 › 会话」打开这场会话,对应消息中显示脱敏后的附件文字,并带「已由网关脱敏,原文件未发送」标注;原文件不落库,不能下载。

识别范围

  • 身份证号、手机号、银行卡号等按识别规则判定的类型(含自定义规则与词库)覆盖附件全文。
  • 人名、地址、机构名等需要模型识别的类型,以及内容判断模型的风险判断,每次请求只覆盖全部附件文字按出现顺序的前约 1 万字(32 KiB)。超出部分不做模型识别,照常放行,并在规则命中中另记一条「未检测 · 附件超出模型识别范围」;这一情形不按「判断模型不可用时」处置。

上限与不检测的情形

情形处置
:--:--
单个附件超过 20 MiB、超过 300 页(幻灯片、工作表分别按张数、个数计),或提取出的文字超过 4 MiB按规则的「判断模型不可用时」处置(第 14.9 节),规则命中显示具体原因,如「检测不可用 · 附件已加密」
附件已加密同上
单个附件解析超过 3 秒、解析失败,或网关同时解析的附件过多同上
旧版 Office 格式(.doc、.xls、.ppt)放行,规则命中记「未检测 · 旧版 Office 格式」
其它格式(如压缩包、电子书或无法识别的类型)放行,规则命中记「未检测 · 文档格式不支持」
以文件编号引用的附件(文件先上传给模型供应商,请求中只带编号)放行,规则命中记「未检测 · 文件以编号引用提交」
附件只有图片,且规则未配置图片检测放行,规则命中记「未检测 · 附件只有图片」

注意

  • 附件改为脱敏文字后,模型拿不到原文件的版式与图片。对版式要求高的任务,请先人工去除文件中的敏感信息再提交。
  • 以文件编号引用的附件内容不经过网关,无法检测;需要检测时,请调用方随请求直接携带文件内容。旧版 Office 文件请先另存为 .docx、.xlsx、.pptx 或 PDF 再提交。
  • 上述上限为平台固定参数,不能按规则调整。

能力说明

不提供的能力替代做法
:--:--
检测总开关、单条内置规则的启停用流量规则的「检测范围」控制哪些类型参与检测(13.4 节)
按数据等级配置处置规则按分组组织;用不同流量规则区分检测范围与处理方式(13.4 节)
在护栏页逐条修改行业模板内容模板随版本维护;用「单独类型」追加或另建自定义规则(13.2 节)
还原模型回复、工具调用中新出现的敏感信息不提供;响应方向与工具调用的脱敏不可还原(13.5 节)
还原 Completions、向量等其他协议请求中的命中不提供;需要还原时改用 OpenAI Chat、OpenAI Responses、Anthropic Messages 或 Gemini 协议(13.5 节)
检测旧版 Office(.doc、.xls、.ppt)与其它格式的附件另存为 .docx、.xlsx、.pptx 或 PDF 后提交(13.9 节)
检测以文件编号引用的附件随请求直接携带文件内容(13.9 节)
对附件全文做人名、地址、机构名识别每次请求只识别附件文字的前约 1 万字;超出时拆分附件分次提交(13.9 节)
调整附件的大小、页数与解析时长上限为平台固定参数(13.9 节)
出生日期等无固定格式的实体类型新增自定义正则规则(13.2 节),或使用人名、地址识别(13.6 节)
多轮拼接与流式检测的窗口参数调整为平台固定参数,见第 14.10 节

---

上一章:12. 外部智能体、技能、插件与外部注册中心 · 下一章:14. 配置内容检测与安全围栏