使用文档

一个端点,
所有模型。

Tare 是挡在你所有模型前面的一层 OpenAI 兼容网关 —— 我们的,和你自己带来的。一个 base URL、一把 key,每一个 token 都算得清。

安全数据保护(DLP)

数据保护(DLP)

这篇解决什么问题:在请求离开 Tare 之前扫一遍敏感内容,哪些要忽略、哪些脱敏、哪些 拦截、哪些只报警,由你逐类决定。

数据保护(DLP)管的是一组规则。每一次 chat completions、embeddings、图片生成、视频生成调用, 在离开 Tare 之前都会先扫一遍敏感内容:能冒充你身份的密钥,以及不该在没必要的情况下就到达模型 的个人信息。命中之后怎么处理,全由你决定。

直接打本地节点的调用在节点上扫,规则是同一套;节点为此需要什么,那一页有写。

账户级设置和按 key 设置

这两层要分开看:

  • 账户级:控制台 Security 里的账户开关(开 / 关 / 跟随平台默认),以及 What counts as sensitive 里你按类型的处理选择。这一层管整个账号。
  • 按 key:单独挂在某一把 key 上的设置,会盖过账户级。只有带着这把 key 打 Tare 的调用才会 用到它。

多处设置都可能命中时的优先级是:内置默认 ← 平台默认 ← 推荐规则自己的 pin ← 你账户的选择 ← 按 key 单独设置,越靠后越优先。

直接打本地节点的调用没有 key,所以到你账户的选择为止,按 key 的设置不参与。

多处设置都命中时,谁说了算 DLP 的处理决定可能来自五层设置:内置默认、平台默认、推荐规则自己的 pin、你账户的选择、按 key 单独设置。多处同时命中时越靠下越优先,下面那层会盖过上面所有层。直接打本地节点的调用没有 key,到「你账户的选择」为止,按 key 的设置不参与。 多处设置都命中时,谁说了算 内置默认 Tare 出厂,写在代码里 平台默认 平台建议的初始处理动作 推荐规则自己的 pin 你把某条推荐规则单独钉在一个选择上 你账户的选择 在 Security → What counts as sensitive 里逐类选 按 key 单独设置 挂在这把 key 上的 DLP 设置 越靠下越优先——下面那一层会盖过上面所有层。 本地节点没有 key,到「你账户的选择」为止,按 key 不参与。
多处设置都命中时,谁说了算

建议配置顺序

  1. 打开 Security。
  2. 先确认账户级开关:关闭、开启或跟随平台默认。
  3. 在 What counts as sensitive 中逐类确认处理方式。
  4. 对推荐规则先使用「只告诉我」,观察 7/30 天命中量。
  5. 确认影响面后,再把必要规则改成脱敏或拦截。
  6. 如需允许某些测试样例跳过检查,再为指定 key 配置 DLP skip。

四种处理方式

某种内容命中之后走哪一种,由你的设置决定,不写死在类型上。

动作结果适合场景
忽略不处理明确不敏感或误报较多
脱敏替换成占位符后继续请求邮箱、手机号等个人信息
拦截请求失败,不发给上游密钥、私钥、助记词等高风险内容
报警请求原样转发,同时记录事件并通知想先观察影响,不想改变流量
命中之后走哪一条,由你的设置决定 敏感内容命中之后有四种处理方式:忽略(不处理)、脱敏(替换成占位符后继续请求)、拦截(请求失败,不发给上游)、报警(请求原样转发,同时记录事件并通知)。走哪一条不写死在内容类型上,由你在 Security 的 What counts as sensitive 里逐类选择。 命中之后走哪一条,由你决定 命中之后 走哪一条由你的设置决定,不写死在内容类型上 忽略 不处理 明确不敏感或误报较多 脱敏 替换成占位符继续 邮箱、手机号等个人信息 拦截 请求失败,不发给上游 密钥、私钥、助记词 报警 原样转发,记录并通知 先观察影响,不改流量 这四种都不写死在内容类型上,是你在 Security → What counts as sensitive 里逐类选的。 默认建议:先观察,再收紧。直接把大量规则改成拦截,可能会影响正常业务。
命中之后走哪一条,由你的设置决定

默认建议:先观察,再收紧。直接把大量规则改成拦截,可能会影响正常业务。

会检查什么

扫描的是整个请求体,不只固定几个字段:除了结构性字段(model、role、 type、id 这些)和二进制内容(图片/音频/视频的 base64 数据),每一个字符串值都是 候选。

密钥类(云凭据、私钥、平台令牌如 ghp_…/sk_live_…/xox…、 数据库连接串、加密钱包私钥与恢复词、认证令牌,以及仅凭变量名就能看出是密钥的值)在任何开启了 防护的 key 上默认就会检查。

个人信息(邮箱、手机号、身份证号、银行卡号、护照号,以及若干其他有固定格式的类型)默认走 脱敏,不拦截:调用照样放行,值被替换掉。

IP 地址和 MAC 地址默认关闭:日志、工单和客服对话里到处都是这两样,默认脱敏会把大量正常流量 改坏,换不来什么真实收益。

姓名/地点/机构名识别也默认关闭,原因不一样:它每次调用都要真的花 CPU 时间。你的流量需要就打开。

下图中的默认处理以开启 DLP 为前提;你可以按内容类型修改处理方式。

扫描的是整个请求体里的字符串值 每一次 chat completions、embeddings、图片与视频生成调用,在离开 Tare 之前都会扫描整个请求体里的每一个字符串值;除了 model、role、type、id 这类结构性字段和图片音频视频的 base64 二进制。命中后按扫描内容分三类:密钥类(默认就查)、个人信息(默认脱敏、不拦截)、默认关闭类(IP·MAC、姓名/地点/机构名)。这里说的「默认」以开启 DLP 为前提,关闭或跟随平台默认时按账户设置走。 扫描的是整个请求体里的字符串值 扫描整个请求体 除了 model·role·type·id 与 base64 二进制,每个字符串值都是候选 密钥类 默认就查 云凭据、私钥、平台令牌 个人信息 默认脱敏,不拦截 邮箱、手机号、身份证号 默认关闭 要用得自己打开 IP·MAC、人名地名 以上「默认」以开启 DLP 为前提;你可以按内容类型修改处理方式。 旧版身份证号、裸的护照号、裸的 9 位数字也默认脱敏——难的是「认不认得出来」。 只有旁边出现「身份证」「SSN」「passport」这类语境词才触发。
扫描的是整个请求体里的字符串值

旧版身份证号、裸的护照号、裸的 9 位数字和其他个人信息一样默认脱敏。这里真正难的一步是 「认不认得出来」,不在「要不要检测」。一个裸的 9 位数字,或者一个没有校验位的 15 位老身份证 号,单看数字本身和普通数字没区别,所以只有旁边真的出现「身份证」「SSN」「passport」这类语境 词才会触发识别。

命中之后会怎样

  • 拦截:调用被拒绝,返回 400,不计费,什么都不会发出去。错误信息会说明发现了 什么、大致在哪(字段、行号、一小段开头),外加命中位置前后各约 25 个字符的上下文。命中的 内容本身、以及这段范围里恰好出现的其他敏感信息,都会被换成 [TYPE_REDACTED]。 助记词、私钥、上下文相关密钥这几类连这点上下文都不给,错误信息只会说出类型。同一份证据也会 带进 Call Traces 的失败记录和审计事件里。
  • 脱敏:命中的文本在请求继续之前被替换成占位符,比如 [EMAIL_REDACTED]。调用 正常计费,没有报错也没有特殊响应头,模型收到的就是脱敏后的版本。
  • 报警:请求原样转发,调用在 Recent events 里记成「检测到」,并往你的告警通道发一条通知, 同一类内容在静默窗口内只发一次。

在控制台 Security → What counts as sensitive 里,每种内置类型都会列出平台建议什么、你 自己选什么(忽略 / 换成占位符 / 让请求失败 / 报警)。同一块里还有整个账户的开关(开、关、跟随 平台默认)。人名、地名、机构名默认不查,要在那里打开。

推荐规则

除了内置的这些,偶尔还会有新的检测规则发布到一份持续维护的共享清单里,比如刚发现的一种新密钥 格式。这些规则会不会真的作用到你的流量上,完全由你决定,有四个选项:

选项效果
不启用这些规则永远不会作用于你的流量
只告诉我(默认)照常运行并计数命中,但从不改动或拒绝请求,Security 页会显示「如果开了会怎样」
自动隐藏命中会被脱敏,和内置的个人信息类型一样
直接拦截把上限抬到 BLOCK,但只对本身就是按拦截发布的规则生效。一条按脱敏发布的规则仍然只会脱敏

新租户默认在只告诉我:在你自己选别的之前,你的流量不会有任何变化。

任何一条规则都可以单独指定选项,不受账号整体设置影响。Security 页上每一条规则都会显示「过去 7/30 天命中过你的流量多少次」,方便在真的打开强制生效之前先看看影响面有多大。

主动跳过某次检查

有时候看起来像密钥的内容其实真的不是(一份测试用的样例、一段已经确认安全的脱敏示例)。如果 这把 key 开了这个功能:

  • 一个请求头,X-DLP-Skip: all(或者逗号分隔的具体类型),跳过整个请求的检查。 只会被读一次,从不转发给上游。
  • 一段内联标记,放在某条消息的最开头,[[dlp:skip:<secret>]](或者 [[dlp:skip:<secret>:EMAIL,PHONE_CN]] 指定具体类型),只跳过这一条消息的检查。 这个 secret 从控制台生成一次、只显示这一次;标记里的 secret 对不上时会被当成普通文本照常 扫描,不会被静默放行。标记本身会在模型看到之前被剥除。

默认跳过只免除脱敏,不免除拦截。即使这把 key 开了跳过,真正的密钥照样会被拦下,除非这把 key 被专门配置成连拦截也一起跳过。打开那个选项是实打实地降低防护:任何能设置请求头或标记的 人,都能借此把真实密钥不受检查地推过去。

用接口配置这些

只认登录会话。任何 API key(含母钥)来调都是 403:

方法路径做什么
GET/PUT/v1/dlp/policy读或改采纳策略:pack 模式、上限、各类型的动作
GET/v1/dlp/pack分页、可筛选地列出推荐规则
GET/v1/dlp/pack/summary每条规则最近 N 天会命中你多少次调用
PUT/DELETE/v1/dlp/pack/{ruleKey}/pin把某条规则单独钉在一个选择上,或取消钉住
POST/v1/dlp/pack/{ruleKey}/feedback反馈某条规则判得不对或太吵
GET/v1/dlp/notices最近的采纳相关通知
GET/PUT/v1/dlp/keys/{keyId}/skip读或改某把 key 的跳过设置
POST/DELETE/v1/dlp/keys/{keyId}/skip/secret生成或清空这把 key 的跳过口令。明文口令只在这次响应里出现,之后拿不到

Security 页那个概览数字(多少把 key 开了防护)来自 GET /v1/api-keys/dlp-summary, 直接给出汇总值,不用逐把 key 拉一遍再数。

扫描来不及跑完时

超大或刻意构造的输入可能让某条规则超时。响应取决于超时的是哪一半:

  • 如果是可选的姓名/地点/机构名识别跑不完,这一部分会被跳过,其余检查照常生效;这只是某次调用 少了一层增强能力,不构成让它失败的理由。
  • 如果是必须跑的规则(内置的,或者被单独指定了选项的推荐规则)跑不完,整次调用会被拦截,不 计费,错误信息会请你缩短输入。一条规则跑不完就放行,等于给了一种绕过它的办法:把超时当成 「默认没问题」,防护本身就形同虚设。
扫描来不及跑完时,两种后果 超大或刻意构造的输入可能让某条规则超时。响应取决于超时的是哪一半:可选的那层(姓名/地点/机构名识别)超时会被跳过,其余检查照常生效;必须跑的规则(内置的,或被单独指定了选项的推荐规则)超时则拦下整次调用,不计费。 扫描来不及跑完时,两种后果 某条规则跑不完(超时) 超大或刻意构造的输入都可能触发 可选的那一层 姓名/地点/机构名识别 跳过它,其余检查照常生效 必须跑的规则 内置的,或被钉住的推荐规则 拦下整次调用,不计费 一条规则跑不完就放行,等于给了一种绕过它的办法: 把超时当成「默认没问题」,防护本身就形同虚设。
扫描来不及跑完时,两种后果

相邻但不在这里的两个控制

DLP 是内容层面的防护,看的是一次调用里面有什么。还有两个相关的控制不在这一节,各自记在对应 功能自己的文档里:

  • 限定一把 key 只能从哪些来源 IP 调用,见 API Key。
  • 账号级的审计日志:不管是谁改的,价格、路由、计费模式、凭据这些变更都会记下来,见 审计日志。

下一步

  • 看一次调用留下了什么记录:读 Call Traces。
  • 让命中内容触发通知:读 告警。
  • 了解节点上的同一套规则:读 本地节点。
文档最后更新于 2026 年 10 月 17 日 23:03(UTC+8)