2026年3月的一个凌晨,我被一通告警电话从床上拽了起来。电话那头,值班同学的嗓子是哑的:“出事了,日志接口在外面裸奔。”
那段时间我正好带着团队做 AI 网关的安全加固,听到这句话,脑子里的第一反应不是“完了”,而是“终于来了”。我们一直在等 AI 安全领域出现一个标志性事件,一个能说服老板、说服研发、说服所有觉得“AI 功能跑通就万事大吉”的人的案例。结果,X 手事件以这种“深夜突袭”的方式,自己撞上来了。
所谓 X 手,圈内习惯用一个化名来称呼那家提供多模型聚合服务的平台。它做的事情本身很常见:把多家大模型 API 统一封装成一套接入层,用户只需要一个 key,就能转发到不同模型,省去在每个厂商后台来回切换的麻烦。这种模式效率高,也很受开发者欢迎,但问题恰恰出在这里——所有用户请求都会经过这个网关,而网关背后的请求日志,成了这场事故的震中。
这次事件之后,很多团队的技术分享会都开始聊同一个话题:如果被别人用一条 curl 命令把日志拉走,我们扛得住吗?说实话,大部分团队扛不住。这不是技术能力的问题,而是过去两年 AI 应用跑得太快,安全建设完全没跟上。这篇文章我尽量不写成“事故通报”,而是按我们团队的复盘框架,把 X 手事件拆开来讲:它到底是怎么发生的,暴露了哪些长期被忽略的风险面,以及我们可以从哪些步骤开始真正把防线补上。内容会比较实操,适合正在做 AI 应用、LLM 网关、数据安全或者想给团队做 AI 安全自查的人参考。
1. 事件复盘:一次“深夜突袭”暴露了什么
1.1 从一场夜间告警说起
复盘任何安全事件,第一步永远是还原时间线。X 手事件被安全研究人员发现,其实不是靠什么高端 0day,而是典型的“配置暴露 + 自动化扫描”路径。研究人员在用常规互联网资产测绘时,发现该平台某个对象存储桶返回了非预期内容,顺手看了一眼桶的访问策略,发现居然允许匿名 List 操作。更致命的是,存储桶里面放的还不是普通备份文件,而是网关层的用户请求日志,时间跨度超过半年,字段包括完整 prompt、模型输出、调用方 IP、部分认证信息。
之后的路径就非常顺滑了:匿名列出对象 => 批量下载日志 => 本地分析 => 发现大量明文敏感内容 => 按流程做负责任披露。整个链条里没有任何一道利用门槛,没有提权,没有内网渗透,攻击面就是那把“忘了关”的门。
很多人听到“对象存储桶权限配置错误”会觉得是老生常谈,但这起事件的真正冲击点在于:存储桶里面装的东西,在 AI 应用架构里几乎是“全量敏感数据”的代名词。传统业务日志最多泄露账号、手机号这些结构化字段,而 AI 请求日志里是用户和模型之间的完整对话——可能是一段业务代码、一份内部制度、一段客户合同,甚至是一轮战略讨论。把这些内容一次性拖走,足够对一家公司做深度画像和定向攻击。
从事件披露到各安全群炸锅,只用了几个小时。很多从业者一开始抱着“这是他们内部人的失误,我们不会这样”的心态,但随着更多细节浮出水面,大家发现 X 手踩的坑,大多数团队都踩过或正在踩。这也是我决定把这次复盘写详实的原因:侥幸心理,才是 AI 安全最大的漏洞。
1.2 这不是“个别漏洞”,而是默认不安全的必然
如果只把 X 手事件归结为“运维手滑把存储桶权限设错了”,那这次复盘就白做了。往深一层看,所有问题都指向三个“默认不安全”:
第一,默认开放。很多 AI 网关在早期为了快速上线,会把调试接口、日志导出接口、内部管理 API 放在公网环境下,方便远程排查。这种“先通了再说”的模式,在用户量小的时候确实省事,但一旦业务跑起来,就会成为持续暴露的暗雷。X 手的日志存储桶大概率也是早期遗留配置,业务团队后来完全忘了它的存在。
第二,默认全量记录。为了做模型调优、问题追踪和成本核算,网关层几乎都会记录完整的请求和响应。这个设计本身没问题,问题在于很多团队“只记录、不治理”,没有建立日志分级、脱敏和留存时限机制。我在不少团队看到过类似情况:数据库里有加密和权限控制,日志文件里却躺着不经过任何处理的明文 prompt。
第三,默认不审计。安全审计这件事,在传统 Web 应用里已经是标配,但在 AI 网关里经常被忽略。谁在什么时间点访问了日志?有没有人用内部可视化后台导出过大量数据?这些操作在 X 手事件披露之前,基本没有被完整追踪。
这三个“默认”叠加在一起,导致的不是某一次的侥幸失败,而是长期处于“随时会出事”的状态。X 手的遭遇,只是概率必然中的一次显性化。
| 问题维度 | 典型表现 | 真实后果 |
|---|---|---|
| 默认开放 | 日志桶、调试接口、后台公网可达 | 匿名者可绕过认证直接读取数据 |
| 默认全量记录 | 记录完整 prompt、输出、认证信息 | 泄露即高烈度敏感数据大量暴露 |
| 默认不审计 | 无访问日志、无导出审计、无告警 | 泄露发生数月后才被发现 |
2. 为什么 AI 安全不能靠运气:四个核心风险面
2.1 请求日志是比数据库更危险的数据资产
过去我们做数据安全,重点关注的是数据库、配置文件、用户身份信息这些资产。到了 AI 时代,请求日志的重要性已经超过传统数据库,但很多人还没有建立起这个认知。
为什么?因为数据库里的数据再敏感,至少是结构化、可分类、可脱敏的。而 LLM 请求日志的特点是“非结构化+高语义浓度”。一段 prompt 里可能包含用户上传的合同全文、研发人员贴的源码、HR 输入的候选人评估、销售填写的客户报价。这些东西不像身份证号一样有固定格式,因此很难用传统规则自动识别和打标,更容易被当成“反正就是文本,无所谓”而绕过保护。
X 手事件里,泄露的日志时间跨度很长,这意味着攻击者可以做完整的时序分析:看出某家公司在哪个阶段开发了什么功能、用过哪些模型、内部工具链长什么样,甚至能还原该公司与 AI 系统的交互方式,为后续社工或定向渗透积累信息。
所以,AI 安全的第一课应该是:重新盘点资产,把网关请求日志提升到最高敏感级别来管。我见过太多团队把安全重心放在模型接口鉴权上,却忽略了下游日志系统——这就像给家门上了十把锁,却在院子里堆满了写着银行密码的纸条。
2.2 意图偏离:提示词注入已经从“攻击”变成“产业”
X 手事件的技术细节里,还有一个词被反复提起:意图偏离。它的意思是,用户通过精心构造的输入,让模型偏离设计者预设的安全规则,输出本不该输出的内容,或者触发本不该触发的工具调用。
这类攻击在早期看起来像是“ChatGPT 越狱”的娱乐化玩法,但这两年已经明显产业化。攻击者的目标不再只是让模型说几句不该说的话,而是把它当成突破业务防线的跳板——比如诱导客服机器人泄露订单信息、诱导代码助手生成带后门的代码片段、诱导文档分析机器人输出内部文件内容。
X 手日志里被安全研究人员发现的“意图偏离”样本,一方面证明了通用型大模型在安全对齐上的能力上限,另一方面也说明,把安全责任完全丢给模型厂商是致命的。模型厂商能保证其底座模型在标准评测集上的安全表现,但你的业务场景会引入大量自定义工具、私有数据、上下文拼接逻辑,这些环节的攻击面,模型厂商是看不到也不需要负责的。
应对意图偏离,不能只靠“模型自己懂事”。必须在网关层建立独立的输入输出检测机制,在模型能力之外再加一道保险。这道保险不需要识别所有语义陷阱,只要把明显偏离业务意图的请求拦下来,就能过滤掉绝大多数批量攻击。
2.3 供应链与第三方依赖失控
X 手事件还有一个被讨论得比较少的侧面:它是被“外部研究人员”用常规测绘工具发现的,而不是被内部监控发现的。这意味着,该平台的资产暴露情况,第三方比内部团队更清楚。
这在 AI 应用里尤其常见。一个典型的 AI 应用,可能依赖以下组件:多个大模型 API、向量数据库、RAG 框架、AI Gateway SDK、对象存储、消息队列、可观测平台。每一层都有自己的配置项,每一层都可能是日志和权限配置的失控点。研发团队往往只知道自己的代码逻辑,对于底层 SDK 的默认行为、网关的日志策略、对象存储的访问控制,基本处于“用了但没细看”的状态。
供应链安全的一个残酷现实是:攻击者不需要攻破最坚固的那面墙,只需要找到一面没粉刷的侧墙。X 手事件中,真正的“侧墙”就是那个外包或者早期环境遗留的存储桶。它可能不属于任何当前责任人,但所有人都默认它不会出事,这种无人区就是攻击者的游乐场。
2.4 多智能体协同:单点错误会被放大成系统性风险
X 手事件里,还涉及一个未来会更频繁出现的问题:多个 AI 智能体互相协作时,单个智能体的错误决策会被放大。比如,一个 Agent 从邮件中提取信息,交给另一个 Agent 生成回复,如果第一个 Agent 被提示词注入操控,它传给第二个 Agent 的内容就带上了攻击者注入的指令。
这种场景在传统应用安全里很难找到对应物,因为传统 API 的参数传递是确定的,而 Agent 之间的“数据”和“指令”往往是混在自然语言里传递的。攻击者可以只通过构造一个看似无害的输入,在 Agent 之间植入一段“隐藏指令”,影响后续一系列决策。
目前,业界对多智能体安全还没有统一标准,但可以确定的是:依赖单点输出的信任模型已经过时了。每个 Agent 的输入输出都应当被视为不可信边界,交给下游之前要做清洗和合法性校验。X 手事件只是“日志泄露+意图偏离”的单一事件,但把它当成多智能体系统安全的提前预警,并不为过。
3. 从事件到能力:构建可落地的 AI 安全防线
3.1 数据资产分类与日志脱敏
很多人问,我们的 AI 网关也有日志,该从哪里开始改造?我的建议是:先别急着上复杂产品,先把“日志里有什么”彻底搞清楚。
第一步是做数据资产分类。把日志涉及的数据分成四级:公开数据(可以任意存储)、内部数据(仅限授权用户)、敏感数据(要求脱敏和加密)、机密数据(要求最小化留存并严格审计)。我们当时做了一个简单的分类表,列在规范文档里,上线前让研发逐个打标。
第二步是设计脱敏策略。LLM 日志脱敏是个难点,因为 prompt 是自然语言,没办法靠简单的正则覆盖全部。我的经验是分三层处理:第一层脱敏结构化的认证信息(token、key、手机号、邮箱等);第二层通过命名实体识别模型识别人名、地名、组织名,做实体级掩码;第三层是对包含高敏感关键词(比如合同、薪酬、密码、密钥)的请求做完整隐藏,只保留元数据。
下面是我们用 Python 写的一个简化版脱敏脚本思路,适合集成到网关日志写入前:
import re import hashlib SENSITIVE_PATTERNS = [ (r'Bearer\s+[A-Za-z0-9\-._~+/]+', '[TOKEN_REDACTED]'), (r'\b\d{11}\b', '[PHONE_REDACTED]'), (r'\b[\w\.-]+@[\w\.-]+\.\w+\b', '[EMAIL_REDACTED]'), ] HIGH_RISK_KEYWORDS = ['合同', '密码', 'token', 'secret', '内部制度', '薪酬'] def redact_prompt(text: str) -> str: for pattern, replacement in SENSITIVE_PATTERNS: text = re.sub(pattern, replacement, text) if any(kw.lower() in text.lower() for kw in HIGH_RISK_KEYWORDS): return f'[HIGH_RISK_CONTENT] sha256={hashlib.sha256(text.encode()).hexdigest()}' return text # 示例:网关在写入日志前调用 redact_prompt # log_body = redact_prompt(raw_request_body)这套脚本的价值不在于代码本身,而在于把“日志脱敏”从一个口头的 awareness 变成一条强制执行的 pipeline。凡是进日志系统的内容,必须经过 redact,否则禁止写入。
3.2 输入侧与输出侧的防护机制
对付意图偏离,行业正在形成的共识是构建“输入侧+输出侧”双重闸门。
输入侧,在请求到达模型之前做检测。这个检测不能只靠关键词黑名单,因为提示词注入的变体太多了。我们的做法是:先用轻量级分类模型评估“恶意意图得分”,再叠加规则策略层。比如,如果请求中同时出现“忽略之前的指令”和高风险操作关键词,就直接拒绝,不进入模型。这个策略层的好处是可解释、可灰度、误杀可控。
输出侧,在模型返回结果给用户之前同样做检测。很多团队容易忽略这一步,但输出侧的检测非常关键,尤其是 RAG 场景——因为模型可能基于向量库检索出的“被污染文档”输出敏感内容。输出侧主要检测两类问题:一是 PII 泄露,二是与业务意图不符的异常指令。一旦命中,可以兜底改写、拦截展示或转人工审核。
提示:输入输出检测不要追求 100% 的准确率,目标是拦截批量攻击和自动攻击。攻击者手工一条条构造的时间成本很高,只要把自动化路径堵住,大部分风险就消解了。
3.3 访问控制、加密与审计追踪
X 手事件最让人后怕的不是数据被拿走,而是被拿走了很久都没有人知道。因此,访问控制和审计追踪必须作为基础设施,而不是性能优化项。
访问控制方面,我强烈建议对 AI 网关的管理面与数据面做隔离。数据面的 API Key 只允许调用模型和读取业务数据,管理面的配置和日志导出功能必须走独立的身份认证。任何对日志系统的访问,一律默认拒绝,按需放行。
加密方面,日志系统不再只看“传输加密”和“存储加密”两项指标。对于高敏感日志,还应采用“字段级加密 + 应用层解密”,即使存储桶权限配置错误,拿到手的也是密文和伪装值。X 手事件中,如果日志在写入前做过字段级加密,那泄露的影响面会小好几个量级。
审计追踪方面,至少要覆盖三个操作的记录:谁导出过日志、谁执行过批量删除、谁修改过访问控制策略。这些审计记录本身也要做防篡改处理,可以直接对接外部的 SIEM 或对象存储的不可变版本功能。
3.4 运行态监控与告警
最后一道防线是运行态监控。X 手事件中,安全研究人员是通过外部测绘发现异常的,说明该平台内部没有任何“日志被匿名读取”的感知能力。这个盲区必须通过监控补上。
重点监控以下几类事件:
- 对象存储和日志系统的匿名访问尝试,包括 List、Get 操作的异常源 IP。
- 日志系统访问量的突发增长,比如凌晨 3 点有人拉取 100GB 数据。
- 请求日志中出现大量“忽略指令”等注入特征词的频率变化。
- 模型服务出现意图偏离评分明显升高的时段。
告警不一定要强绑定复杂的 AI 算法,我们的经验是,先从基线统计和阈值规则做起,再做异常检测模型。稳定的安全体系靠的是确定性的覆盖和快速响应,而不是一个能解释一切的“智能大脑”。
4. 实操复盘:一次应急响应演练的完整过程
4.1 发现与初步取证
光说不练没有用。X 手事件之后,我们组织了一次内部应急响应演练,模拟的场景几乎复刻了事件主干:某对象存储桶意外允许匿名 List,安全值班人员收到外部测绘工具触发的告警。
演练第一步是确认告警真实性。我们安排人员直接去现场看对象存储策略,用一条 curl 命令确认问题是否存在:
curl -s -X GET "https://storage.example.com/bucket-name?list-type=2" | head -50如果返回了对象列表,说明确实存在匿名列举风险。这时候不能急着关闭桶,应该先做取证快照。我们要求运维对当前的桶策略、对象列表、访问日志做全量导出,并记录导出时间与操作人。这一步的意义在于:万一后续需要追责或法律举证,快照信息就是第一现场。
演练中最容易翻车的点是:现场同学发现风险后,下意识就把桶权限改成私有,导致访问日志被清掉,后续分析无从下手。所以我们在复盘时反复强调:先取证,后止血。
4.2 隔离与止血
确认风险后,第一时间要做的不是排查历史,而是隔离。我们按以下顺序执行:
- 立即撤销桶的匿名访问策略,改为私有读写。
- 吊销疑似泄露的所有 AK/SK,重新签发新的密钥。
- 如果日志系统中存在 API Key 之类的认证信息,立即批量轮换相关密钥。
- 对网关服务配置临时限流,防止攻击者在大规模拉取后继续攻击下游模型。
这里要特别说一个细节:日志泄露之后,直接受害者其实不只是数据主体,还有模型服务商。因为被泄露的 API Key 可能被用来恶意调用模型,产生高额账单或输出违法内容。所以,密钥轮换不是“锦上添花”,而是“必选项”。
我们的演练时间线里,从告警确认到完成密钥轮换,要求不超过 30 分钟。这个时间窗口需要平时反复推演,不能指望事发当天再临时翻文档。
4.3 根因分析与修复
止血完成后,进入根因分析阶段。我们做了“五个为什么”的层层追问:为什么存储桶允许匿名访问?因为创建桶时用了公共读写模板。为什么会用这个模板?因为早期调试文件需要公网访问,图省事选择了最简单的方式。为什么这个桶一直没被发现?因为资产清单里没有登记它,没有归属团队。
根因走到这里,答案已经和“某个运维手滑”没有关系了。它暴露的是资产管理流程的缺失。所以我们把修复动作拆成四个层面:
- 基础设施层:对全量存储桶做权限基线扫描,凡是生产环境桶,必须私有读写。
- 软件工程层:在 IaC 代码中增加存储桶 ACL 的默认安全配置,禁止使用通配授权。
- 流程层:将所有云资源纳入 CMDB 登记,明确归属团队和生命周期负责人。
- 检测层:为对象存储启用访问日志和告警,对所有匿名访问尝试实时告警。
注意:修复动作不能只关掉那一个桶。要基于根因做“类漏洞排查”,把全站同类配置都过一遍,否则只是把这次爆掉的雷拆了,旁边还埋着一颗一模一样的。
4.4 复盘与加固
演练的最后一步是写事件报告和加固清单。我们用的模板包括:事件概述、时间线、影响范围、根因分析、修复动作、预防措施、待办事项和负责人。
加固清单里比较容易被忽略的几条,我列在这里供大家参考:
- 对 AI 网关的日志系统做一次数据流梳理,确认从生成、传输、存储、使用到销毁的每个环节都有负责人。
- 建立“日志留存期限”制度,默认只保留 30 天。业务需要更长时间的,必须单独审批并加密存储。
- 至少每个季度做一次对象存储权限的自动化扫描和人工抽检。
- 将 AI 安全事件响应纳入红蓝演练,确保安全、运维、研发三条线都清楚自己的角色。
这些动作看起来平淡无奇,但真正执行过的团队都知道,能把“平淡无奇”的标准动作全做到位,就已经超过绝大多数同行了。
5. 常见问题与排查技巧实录
5.1 日志已经暴露了一圈,怎么办
如果确认日志已经被外部读取,首先要做的不是恐慌或删日志,而是按以下顺序处置:
- 立即断开可访问路径,包括关闭匿名访问、限制来源 IP。
- 保留当前证据快照和访问日志。
- 评估泄露内容的敏感等级,如果涉及大量个人隐私或机密信息,尽快启动数据主体通知流程。
- 对日志中的所有密钥类信息执行批量轮换。
- 建立对外响应口径,统一由安全负责人和信息合规负责人发布消息,避免各团队口径不一致。
在实际处理中,很多团队会陷入“先删日志以缩小影响”的误区。这个想法可以理解,但会带来两个问题:一是可能破坏证据链;二是如果删除不彻底,反而会引起更多猜测。正确的逻辑是:先控制、再取证、然后修复、最后评估影响。
5.2 提示词注入防不住怎么办
有团队问我们:模型是同一家的,别人跑得好好的,为什么我们的提示词注入攻击拦不住。答案通常是:拦截点选错了。
只依赖模型自带的安全对齐,相当于把安全交给第三方,一旦业务场景中有自定义工具和私有数据,模型根本没有足够上下文判断哪些是“攻击指令”。所以,防注入一定要落在网关层,而且要在“输入前”和“输出后”各做一道检测。
另外,很多防护策略过于依赖精确匹配关键词,这会被对抗样本轻易绕过。我的建议是:先用分类模型做语义判定,再用规则做精确拦截,两条路并行。如果团队没有算法资源,可以先从规则开始,但设计规则时要考虑变体,比如“忽略之前的指令”和“请无视历史设定”实际上是一类攻击,要在规则里归并处理。
5.3 模型输出出现“意图偏离”怎么定位
当模型输出出现偏离业务意图的情况时,很多人的第一反应是换模型或者调 prompt 模板。但对安全而言,更重要的是定位是“模型本身的问题”还是“外部注入的问题”。
一个实用的排查方法:把同样的 prompt 拿到一个没有工具调用、没有外部上下文的干净环境里跑一遍。如果干净环境下模型输出正常,说明问题出在上下文或工具链路中,很可能是 RAG 检索到了被污染的文档,或者工具返回了恶意内容。如果干净环境下模型依然异常,则可能是模型自身安全对齐不足,需要考虑在网关层增加输出侧拦截。
我们之前排查过一个案例:客服机器人会在收到特定关键词后输出内部赔付规则。一开始以为是模型被越狱,后来发现是向量库里有一篇被上传的“测试文档”,里面明明白白写了这些规则。这类问题靠换模型解决不了,必须对 RAG 的上传源做内容安全审核。
5.4 零信任改造成本高,怎么分步落地
X 手事件之后,很多团队的老板会提出“我们也要零信任,赶紧搞一下”。但零信任不是买个产品就能落地,盲目追求一步到位反而会让业务反噬。
我的建议是分三步走:第一步,先做最小权限,把日志、存储桶、管理后台这些高风险资产的访问权限全部收敛,这是成本最低、见效最快的。第二步,对高敏感操作强制执行二次认证和审批流,比如日志导出、权限变更。第三步,再考虑引入统一身份和动态信任评估,覆盖所有内部系统。
每一步都要有明确的里程碑和验收标准。与其喊一个空泛的“零信任”口号,不如先以“敏感操作可追溯、匿名访问不存在”作为第一个落地目标,至少 X 手事件这类事故可以被直接杜绝。
| 问题 | 初判方法 | 处置建议 |
|---|---|---|
| 存储桶匿名泄露 | 用 curl 验证 List 操作 | 先取证,再关闭权限,后轮换密钥 |
| 提示词注入频发 | 分析攻击样本,归类变体 | 网关层加输入/输出检测,模型层不背全部责任 |
| 模型输出意图偏离 | 干净环境对照测试 | 检查 RAG 和工具链,再评估模型安全对齐 |
| 零信任建设卡壳 | 复盘关键资产访问路径 | 先最小权限,再二次认证,最后动态信任 |
6. 从一次演练到长期机制
6.1 建立日常运行的安全节奏
X 手事件之后,我把团队的安全工作做了一个重新定位:安全不是“上线前的一个检查项”,而是“和版本迭代同步运行的常驻节奏”。
具体来说,我们形成了三个固定动作:每周一次自动化安全扫描,覆盖对象存储权限、密钥泄露、匿名接口;每两周一次安全评审,针对新上线的 AI 功能和数据流;每月一次全员安全意识分享,把最新的攻击样本和事件复盘发给研发和产品一起看,让大家理解安全约束背后的逻辑,而不只是被动执行。
这套节奏不需要太多额外人力,但对团队的安全意识提升帮助很大。尤其是把案例展示给研发之后,很多原本觉得“日志里存点 prompt 没关系”的同事,会主动考虑字段级加密和脱敏。安全意识的改变,比任何安全产品都重要。
6.2 攻击者视角是演练的核心
在组织 AI 安全演练时,我们最常用的一种方法是“红队视角走查”:让团队成员模拟攻击者,从互联网资产测绘开始,逐步尝试发现暴露面。这个动作不需要真的进行破坏性攻击,只要把攻击者可能走的路径走一遍,就能暴露大量问题。
我们第一次做这种走查时,很快就找到了一个遗留的调试接口,接口返回的是原始请求体,里面包含完整 prompt。这个接口没有任何认证,只是通过一个很少有人知道的路径访问。如果没有用攻击者视角走查,可能这个接口会一直存续到被真正攻击的那天。
我强烈建议每个做 AI 应用团队的成员,都把自己当成一个“想搞垮自家业务的黑客”,每隔一段时间尝试回答一个问题:如果要拿到我们最核心的 AI 数据,我会从哪里下手?答案往往会让你后背发凉,但这就是最真实的安全驱动力。
最后再分享一个小技巧:X 手事件之后,我们团队把 AI 安全相关的复盘文档全部放在了内网知识库里,并要求所有新人入职第一周必须阅读。这些文档不是写给安全专家看的,而是写给每个写代码、配环境、申请云资源的同事看的。AI 安全从来都不只是安全团队的事,让每个参与系统建设的人都理解“为什么不能图省事”,比事后追责有用得多。