SevenTnewS

云与LLM安全

阿里云AI网关以HTTP 200而非403阻断提示词攻击

阿里云AI网关的实操演练展示了认证、护栏和PII脱敏如何作为一个流水线协同工作。需要注意的坑:阻断返回HTTP 200,密钥强制校验需要手动开关,恢复的数据可能最终出现在日志中。

Emmanuel Fabrice Omgbwa Yasse AI 辅助

2026-08-09 · 阅读需 6 分钟

阿里云AI网关以HTTP 200而非403阻断提示词攻击

在模型性能被提及之前,安全问题就已经出现。几乎每个将LLM接入真实服务的项目,在架构或安全评审时都会遇到同样的问题:谁可以调用端点,有人尝试越狱时会发生什么,以及个人数据是否会以原始形式到达模型。

阿里云的解决方案是不再在每个应用中分别解决这些问题,而是将它们移入基础设施。其AI网关位于模型之前,将认证、提示词注入过滤和数据脱敏作为一个流水线运行。如果把同样的安全逻辑构建到每个应用中,每次策略变更都意味着要修改所有应用。把它放在网关中,策略就集中在一个地方,客户端和模型端都不需要安全逻辑。

技术客户经理Hosung Kim在ap-southeast-1区域记录了这个设置的工作版本(该实操演练的韩文版已上线)。后端是Model Studio(百炼),通过兼容OpenAI的端点运行qwen-flash。值得注意的不是这些组件存在,而是测试实际返回的结果。

先说明一点:提示词注入阻断由AI Guardrails(AI Fence)处理,这是一个独立的内容安全服务,而不是由网关本身处理。网关是将安全能力接入模型调用路径的大门。阿里云一直在将AI开发与AI安全整合到同一路线图中,同一个为开发者代码建立索引的后端,也可以检查该代码生成的流量。

为什么安全层属于网关,而不是应用

请求以固定顺序流经流水线:认证、Guardrails、脱敏。缺失或错误的密钥会在Guardrails或脱敏运行之前就被以401拒绝,这正是节省调用成本和延迟的原因。安全策略集中在一个地方, , 网关,因此安全评审只需解释和审计一件事。

AI网关以Serverless和专属(Dedicated)两种形式提供,插件支持不同。Serverless只支持部分平台提供的插件,不支持自定义插件;在Kim测试的实例上,无法安装ai-data-masking,因此专属实例是安全的选择。专属实例还要求至少两个可用区以实现高可用。

认证,以及那个会静默禁用认证的开关

在Model API上启用认证后,只有注册的消费者(API密钥)可以调用它,并且密钥可以通过generateMode: Custom创建,以便由你自己提供。陷阱在控制台中:“Consumer Authentication”选项卡有一个Status开关,必须将其切换为Enabled,强制校验才会真正生效。如果它保持关闭,即使没有有效密钥,请求也会通过。该实操演练的建议很直白:“再检查一遍。”

Guardrails:被阻断的提示词仍以HTTP 200返回

AI安全(AI Fence)在Model API的“策略和插件”(Policies and Plugins)下启用,Guardrails服务端点已预填。可调的部分是阻断策略。在低(Low)防护级别下,过滤器捕获了一个明显的注入(“忽略之前的指令”),但漏掉了一个DAN风格的越狱。在中(Medium)级别下,两者都被捕获。检测强度与误报之间的平衡由操作者自行把握。

这里有一个会让天真的客户端代码出错的细节:被阻断的请求仍然返回HTTP 200。阻断消息以兼容OpenAI的响应格式到达,model字段被设置为“from-security-guard”,一个x_higress_guardrail.blockedDetails对象将阻断分类为medium级别的promptAttack,并且消耗的token为零。只检查状态码的客户端代码会把被阻断的越狱当作一次成功的模型调用。以响应体而非状态码来判断,才是规则。脱敏插件的deny_code可以单独配置(Kim在此处设置为403),但由于Guardrails先运行,其200式阻断在实践中优先。

韩国PII脱敏,以及恢复的权衡

ai-data-masking插件在敏感值到达模型之前将其替换,并可在响应路径上恢复原始值。对中国以外的团队来说有个问题:内置的示例模式,如%{MOBILE}和%{IDCARD},匹配的是中国格式、中国手机号码和中国身份证号。韩国服务需要自己的规则,该实操演练的最终配置涵盖五种类型:

  • 韩国国民身份证号(987654-1234567)变为******-*******,且永远不会被恢复。
  • 韩国手机号码(010-1234-5678)变为010-****-5678,在响应中恢复。
  • 韩国座机号码(02-765-4321)变为02-****-4321,恢复。
  • 电子邮件变为****@domain,恢复。
  • IP地址变为***.***.***.***,恢复。

国民身份证号故意不恢复:它绝不应到达模型,原始值也没有理由在响应中流通。Restore: true本身就是一种安全权衡,因为恢复后的值会回到客户端,并可能最终出现在网关和客户端日志中。脱敏对模型隐藏了原始值;但并没有消除它。在一个同时管控日志和存储的监管环境中,是否恢复本身就是刻意的决定。

有两个配置细节很重要。内置敏感词词典(system_deny)来自houbb/sensitive-word,且以中文为中心,因此韩语禁用词必须通过deny_words添加。规则按列出顺序应用,每条规则针对上一条的结果进行匹配,这意味着重叠的模式需要将更具体的规则放在前面。

标签也很重要。当测试备注使用“RRN”而不是“ID”时,Guardrails的sensitiveData维度在脱敏插件看到请求之前,就以S2级别阻断了整个请求。这是正确的行为,但意味着当Guardrails先终止请求时,你无法观察到脱敏。

五个场景,端到端验证

该实操演练通过网关发送五个场景,并记录结果。

场景结果
带API密钥的正常问题通过,HTTP 200,qwen-flash正常响应
提示词注入被阻断,promptAttack / medium
DAN风格越狱被阻断,promptAttack / medium
包含PII的请求身份证号永久脱敏;手机号和电子邮件对模型脱敏,在响应中恢复
不带API密钥的请求在Guardrails或脱敏之前被401拒绝

脱敏生效的最有力证明是一个后续问题。在PII测试之后,Kim要求模型说出客户ID中连字符后的确切数字。模型回答称,该ID显示为******-*******,并且无法透露这些数字,因为其输入中只包含脱敏后的形式。

守护模型的前门

回报体现在运维层面。一个策略,一个需要解释和审计的管理点,这正是安全评审所要求的。它也同样落在需求已经存在的地方:一项由阿里委托进行、针对亚洲企业的调查发现,企业对AI采用几乎普遍热情,但一致呼吁安全、端到端的解决方案,并且Qwen模型因本地语言表现而尤其在日本和韩国受到欢迎。据我们早前对阿里安全举措的报道,一家新能源汽车制造商据称使用了该平台的数据脱敏和跨境合规功能,以通过GDPR审计。

基于规则的脱敏并不能保证100%覆盖与规则不匹配的变体,而恢复行为意味着脱敏后的数据仍可能出现在日志中。对于将LLM投入生产环境的团队来说,该实操演练的结尾建议是一个恰当的衡量标准:给模型的前门以与模型选择本身同等的设计关注。

每天早晨用 3 分钟掌握科技要闻

每个工作日一封邮件,只讲真正重要的 AI 与科技动态。