.env 文件
粘进提示词里”帮忙调试”。一份检索到的文档携带了内嵌的 API
密钥。一个模型在被要求”展示配置”时,把一个 AWS 访问密钥
直接回显给客户端。一个智能体构造了一次工具调用,把一个有效
令牌烤进了参数里。上述每一种都是一条让凭据逃逸的路径——逃进
上游提供商的日志、逃进客户端的对话记录,或逃进一个第三方
工具。
本页介绍如何用 OrcaRouter 的 防护栏 和
智能体防火墙 来防御 llm secret
leakage——无需修改你的应用代码。
检测发生在网关上,位于每一个被绑定密钥的前面——因此单一策略
就能覆盖每个提供商、每个模型、每个智能体,无需任何 SDK 改动。
1. 密钥从哪里泄露
一条凭据可以在一个请求的三个不同点逃逸:在提示词中(input)
在提示词中(input)
凭据在模型还没运行之前就已在请求里——一个被粘贴的密钥、
一段
.env 片段、一份检索到的 RAG 块里的一个令牌。不加检查
地放任,它就会到达上游提供商并可能落入对方的日志。用
Secrets Blocker 输入防护栏拦下它
(§2)。在响应中(output)
在响应中(output)
模型把一个密钥发回你的客户端——它从上下文里反刍出一个密钥,
或臆造出一个凭据形态的字符串。用一条输出密钥规则捕获它
(§3)。
在工具调用参数中
在工具调用参数中
你的智能体构造了一次工具调用,参数里带着一个令牌。防火墙的
sanitize 判定会在调用派发之前,从参数中脱敏匹配的子串
(§4)。
2. Secrets Blocker——拦下提示词中的凭据
Secrets Blocker 是 secrets 类别下的一个防护栏预设,运行 在 input 阶段。它扫描请求中的凭据形态——AWS 访问密钥、 OpenAI 风格的密钥,以及 GitHub 令牌——并在调用离开网关之前 将其 block。凭据永远到不了模型。 在控制台里编写它一次,附加一个密钥,那个密钥发出的每一个请求 都会被筛查:创建防护栏
在控制台中,打开
/console/guardrails,点击 New guardrail,
然后应用 secrets 类别下的 Secrets & API-Key Blocker
预设。它会为常见的凭据形态种下一组输入阶段的 block 规则——
从那里可以自由编辑。[JWT] / [AWS_ACCESS_KEY] 标记),一条覆盖 jwt、
aws_access_key 和 api_key_openai 的 pii 规则是基于实体的
替代方案;参见 防护栏参考。
3. 拦截模型输出中的密钥
一个密钥也可能在响应里离开——模型从它的上下文里回显出一个 密钥,或发出一个凭据形态的字符串。在 output 阶段添加一条 规则,在模型的回复返回给客户端之前对其进行筛查。 secrets 类别为此正好附带一个 Code Secret in Output 预设: 针对 PEM 私钥、AWS 访问密钥和 OpenAI 风格密钥令牌的输出阶段 block 规则。输出 mask(用一个带类型的标记替换一个匹配,而不是拒绝整个
响应)当前仅适用于非流式响应。对于输出中的凭据,在流式流量上
block 动作才是可靠的选择。在依赖它之前,先在防护栏的
Test 标签里证明你的阶段/流式组合。
4. 从工具调用参数中清理密钥
当你的智能体构造一次工具调用时,一条凭据可能随参数一起搭车。 防火墙的 sanitize 判定会从工具调用的参数中脱敏匹配的 子串并转发清理后的调用——在response 和 mcp 执行面上,
那里有可供改写的调用时参数。
一条 sanitize 规则在它的 sanitize_json 配置里点名要脱敏哪些
检测器——一组内置的预设外加可选的自定义正则。被命中的
内容会被替换为 [redacted:<preset>](自定义匹配则替换为
[redacted:custom]):
aws_access_key、
aws_secret_key、openai_key、anthropic_key 和 bearer_token
(外加用于 PII 的 email、ssn_us 和 credit_card)。一条
sanitize 规则必须至少点名一个预设或自定义模式——一个空的
sanitizer 在保存时会被拒绝。
Secrets Blocker 防护栏(§2)
仍然是你针对请求体中凭据的主要防御——防火墙 sanitizer 是针对
专门出现在工具调用参数内部的密钥的动作层补充。
5. 把三道防御叠加起来
| 密钥在哪里 | 拦下它的那一层 | 动作 |
|---|---|---|
| 在提示词中 | Secrets Blocker(输入防护栏) | block |
| 在模型的回复中 | 输出密钥规则(输出防护栏) | block |
| 在工具调用参数中 | 防火墙 sanitizer | sanitize |
6. 观察触发了什么
每一条触发的防护栏规则都会向工作区 Matches 信息流记录一次 匹配(match)——规则类型、动作、阶段,以及一个详情字符串 (GET /api/guardrail/match,Member)。命中的子串仅当
“Log raw content” 开启时才被记录,而它默认关闭——这是
隐私保守的姿态,因此 Matches 信息流自身不会变成密钥堆积的
地方。对凭据规则保持关闭,除非你确实需要那个子串用于分类排查。
防火墙的 sanitize 决策会落入防火墙 Events 信息流
(GET /api/workspace/firewall/events,Developer+),其中密钥和
规则 blob 永不被记录。
7. 下一步去哪里
防护栏参考
规则类型、PII 实体、预设、测试沙箱,以及完整的评估框架。
防火墙规则参考
匹配语言——工具 glob、参数子句和 sanitizer。
PII 暴露
姊妹内容威胁:提示词和响应中的个人数据。
数据外泄
当一条泄露的凭据成为一次出站外泄调用的载荷。
防护栏 vs 防火墙
哪个平面拦下哪类泄露,以及它们如何组合。
安全智能体基线
一并开启这些防御的起始姿态。
