安全围栏与语义审计
安全围栏是工作空间级的调用策略:网关按策略检查每次调用的配额、模型、客户端和请求内容,命中后告警、掩码、剥离、阻断或封禁,并在 安全事件 页留下记录。配额管理、模型访问控制、客户端访问控制从团队版起可用;敏感信息检测、提示词注入检测、意图安全检测需要企业版。策略和事件都由当前账号管理员在工作空间的 安全围栏、安全事件 页管理,普通成员看不到这两个页面。
策略类型与版本
| 策略类型 | 检查什么 | 可选动作 | 拦截时的 error.code |
最低版本 |
|---|---|---|---|---|
| 配额管理 | 统计周期内的信用点或 Token 用量,可另设 RPM、TPM | 阻断、告警 | 返回 429,见预算、配额与限流 | 团队版 |
| 模型访问控制 | 实际调用的模型 | 阻断 | guardrail_model |
团队版 |
| 客户端访问控制 | 来源 IP、请求声明的工具名、User-Agent |
阻断、告警 | guardrail_client |
团队版 |
| 敏感信息检测 | 请求或回答中的个人信息、凭证和敏感关键词 | 请求侧:阻断、告警、掩码;响应侧:阻断、告警 | guardrail_sensitive |
企业版 |
| 提示词注入检测 | 用户输入中试图改写模型指令的内容 | 阻断、告警、剥离 | guardrail_injection |
企业版 |
| 意图安全检测 | 请求意图是否属于高风险类型 | 封禁、阻断、告警 | guardrail_context |
企业版 |
- 版本按订阅判断:没有有效订阅的组织按个人版处理。个人版能看到两个菜单,但页面显示「当前版本不支持使用此功能」;个人账户不能直接订阅,需要先创建团队或企业组织,再在 订阅充值 页开通。
- 降级后存量策略继续生效:当前版本不包含某类策略时(例如从企业版降到团队版),已创建的这类策略仍会在网关上拦截或掩码请求。页面会提示这一点,你可以停用或删除它们,但不能新建或修改。
- 事件保留期:安全事件默认在团队版保留 30 天、企业版保留 180 天,超过保留期后无法在列表或详情中查到。
图 1:当前订阅版本不包含安全事件时,页面显示「当前版本不支持使用此功能」和升级入口。 截图为演示数据,点击图片可查看原图。
新建策略
在 安全围栏 切到对应类型的页签,点右上角的新建按钮(例如「新建配额管理策略」),按三步完成:
- 生效对象:「对象类型」选「工作空间」「部门」「组织成员」或「API Key」,并选择具体对象。模型访问控制不能选「工作空间」。
- 策略规则:填写「策略名称」(至少 2 个字符)和该类型的规则,再选「执行动作」。策略类型由所在页签决定,保存后不能更改。
- 生效时间:选「立即生效」或「定时生效」,以及「永久有效」或「指定失效时间」。最后点「保存草稿」(不生效)、「保存并启用」或「保存并设置定时生效」。
只有状态为「已启用」且处在生效时间内的策略才会执行。列表中可以随时停用、启用、编辑或删除策略。
| 生效对象 | 覆盖哪些调用 |
|---|---|
| 工作空间 | 本工作空间的全部调用 |
| 部门 | 创建人的主部门恰好是所选部门的 API Key,不含子部门 |
| 组织成员 | 所选成员创建的全部 API Key |
| API Key | 所选的 API Key |
同一次调用适用多条策略时,所有策略同时执行,不是只取最具体的一条。例如工作空间级和某个 API Key 上的敏感信息策略都会检查;工作空间配额和成员配额是两个独立上限,任一触顶都会拒绝。
图 2:编辑策略的第一步「生效对象」:选择对象类型和具体部门,配额策略还要选择配额模式。 截图为演示数据,点击图片可查看原图。
各类策略的规则
配额管理 与 模型访问控制 分别见预算、配额与限流和模型授权。
客户端访问控制
每条策略选一种「控制对象」,再选「允许名单」或「拒绝名单」:
| 控制对象 | 匹配什么 | 写法 |
|---|---|---|
| IP / CIDR | 网关识别到的请求来源 IP | IPv4、IPv6 或网段,例如 10.0.0.0/8 |
| 工具 / function | 请求体 tools(或 functions)中声明的函数名 |
支持 * 通配;请求没有声明工具时不检查 |
| 客户端 / SDK | 请求头 User-Agent |
支持 * 通配,整串匹配,区分大小写,例如 company-agent/* |
工具名使用允许名单时,请求声明的每一个工具都必须在名单内;使用拒绝名单时,任意一个工具命中即违规。
敏感信息检测
- 检测类别:身份证号、手机号、银行卡号、护照号、电子邮箱、家庭住址、车牌号、统一社会信用代码、内部凭证,以及按关键词识别的财务数据、健康数据、商业秘密。新建时默认勾选身份证号、手机号、银行卡号和内部凭证。身份证号、银行卡号和统一社会信用代码会校验校验位。
- 自定义规则:「自定义信息类别与脱敏规则」中每条填写类别名称、正则表达式和可选的脱敏风格,最多 50 条。
- 检测方向:「请求」「响应」或「请求与响应」。响应侧只做规则检测,动作只能是阻断或告警。
- 检测引擎:「规则」或「混合」。「混合」还会用语义模型识别套取敏感数据的意图;语义命中没有可定位的文字,动作为掩码时会改为阻断。
- 检测范围:默认「仅用户输入」,只检查用户消息;「整段对话(含助手回复与工具返回)」检查得更全,误报也明显更多,建议先用「告警」观察。
- 脱敏风格:「整体替换」(默认,替换为
[REDACTED])、「保留部分位」(如手机号138****5678)、「哈希化」(替换为[SHA256:…],同一个值结果相同)。财务数据、健康数据、商业秘密匹配的是关键词而不是具体数值,不能选掩码,否则保存失败。
提示词注入检测
- 检测类别:直接指令覆盖、直接注入、系统提示词泄露、角色扮演越狱、分隔符与格式逃逸、编码混淆、多语言绕过、载荷拆分、间接注入、对抗性后缀、越权指令、工具劫持。
- 检测引擎:「规则」「语义」或「混合」。
- 灵敏度:「低」「中」「高」,越高越严格:「高」拦截最多,误报也最多;「低」只拦截把握最大的请求。新建时默认「高」。
- 剥离:把命中的片段替换为
[REMOVED]后继续转发;只有语义命中、没有可定位片段时改为阻断。注入检测只检查请求,不检查回答。
意图安全检测
- 高风险意图类型:敏感数据泄露、破坏性操作、欺诈、系统越权、恶意代码植入。
- 置信度阈值:0.5~1,默认 0.9,风险概率达到或超过阈值才算命中。
- 封禁:动作选「封禁」时还要填「自动解封时间(小时)」,范围 1~8760,默认 24。
- 保存前必须勾选「开启并同意用于跨会话安全分析」。
适用接口:敏感信息、提示词注入和意图安全检测只作用于 /v1/chat/completions、/v1/messages 和 /v1/responses。向量、图像、音频、视频和重排序接口只执行封禁、模型访问控制和客户端访问控制检查。语义检测服务暂时不可用时,语义部分不会拦截请求,规则检测照常执行。
调用方看到什么
| 执行动作 | 网关行为 | 调用方看到 |
|---|---|---|
| 告警 | 放行请求,记录安全事件并发送通知 | 正常响应 |
| 掩码 | 把命中内容替换后再转发给模型 | 正常响应,模型收到的是掩码后的内容 |
| 剥离 | 把命中的注入片段替换为 [REMOVED] 后转发 |
正常响应 |
| 阻断(请求侧) | 不调用模型 | 403 Request blocked by guardrail policy,error.code 为 guardrail_<类型> |
| 阻断(响应侧,非流式) | 丢弃模型的回答 | 403 Response blocked by guardrail policy,error.code 为 guardrail_sensitive。上游已经生成回答,这次调用照常计费 |
| 阻断(响应侧,流式) | 响应已经开始输出,无法再返回 403,改为掩码 | 回答照常输出,命中内容被掩码 |
| 封禁 | 拒绝本次请求,并封禁这把 API Key | 本次 403 Request blocked by guardrail policy(guardrail_context);之后 403 Subject is blocked by an active security ban(guardrail_subject_banned) |
- 报错原文不包含策略名称和命中内容,同样的请求重试会得到同样的结果。各报错的处理方法见401 / 403:鉴权与权限。
- 开启响应侧检测后,流式回答每段末尾约 64 字节会稍晚发出,用于识别被拆在两段之间的号码。
- 封禁在这条安全事件入库后建立,作用于这把 Key 在本工作空间的全部请求,期间每次被拒绝都会记一条「主体处于封禁状态」事件。到达「自动解封时间(小时)」后自动解除,也可以提前手动解除,见下文。
查看和处置安全事件
安全事件 页顶部的「今日事件」「今日阻断」「待处置」「当前封禁」可以一键筛选;列表支持按事件、请求、链路或主体搜索,并按事件类型、严重级别、处置状态和时间筛选,「导出」按当前筛选条件下载。
打开一条事件,详情包括:
| 区块 | 看什么 |
|---|---|
| 基本信息 | 发生时间、事件类型、触发策略、触发主体、执行动作、严重级别、处置状态、模型、客户端。「触发主体」显示 API Key 名称和创建人,创建人是 Key 的创建者,不一定是实际调用者 |
| 触发时间线 | 「请求到达」→「围栏命中」(请求侧或响应侧,规则命中、语义命中及分数,或配额触顶)→「执行动作」。实际动作与配置不同时会写明原因,例如「响应已开始流式输出,阻断无法执行」「语义命中无字符位置,掩码降级为阻断」 |
| 匹配详情 | 命中规则、触发阈值、置信度、检测器和请求 ID |
| 取证原文 · 已脱敏 | 敏感信息和注入检测在请求侧命中时,显示命中位置附近的原文,敏感值已脱敏,查看行为会写入审计;配额、模型、客户端类事件不采集请求内容 |
| 处置时间线 | 每次处置的动作、状态、备注、操作人和时间 |
点「查看关联访问日志」可以直接打开这次请求的日志详情。
处置:在「处置备注」中写明结论后,点「确认事件」(变为「已确认」)、「标记误报」(「误报」)或「完成处置」(「已解决」)。封禁类事件还有「解除主体封禁」,执行后状态变为「已解决」,几秒内撤销这把 Key 在本工作空间的封禁。在列表中勾选多条事件可以批量处置,单次最多 500 条,超出部分需要再执行一次。处置只改变事件状态,不修改策略;误报较多时请回到安全围栏调整策略。
常见问题
同一个问题为什么只生成了一条事件?
答: 为避免列表被刷屏,敏感信息和提示词注入检测在 5 分钟内对同一策略、同一 Key、同一类别的命中合并为一条事件;配额触顶按统计周期合并。合并只影响事件记录,每次请求的拦截或掩码照常执行,每个被拦截的请求在日志中都有记录。
成员报告请求被拦截,账号管理员怎么找到对应事件?
答: 请成员提供调用时间、API Key 名称和报错中的 error.code,账号管理员在安全事件中按时间范围和事件类型筛选。能在日志中找到这次请求时,把日志详情顶部的 Request ID 粘贴到安全事件的搜索框,即可定位到对应事件。

