一、场景背景
大模型应用里,Token这个词指两件事,一混淆,后面的安全方案就可能做偏。一种是访问凭证,也就是API Key那一类字符串,用来证明调用方是谁;另一种是计费与计算单位,是文本被切分后的片段。
两者的泄露后果完全不是一个量级。凭证泄露,别人就能拿你的账号调用模型、消耗你的额度、访问你能访问的数据;而计费单位本身泄露并不构成安全问题,真正需要保护的是它承载的原始文本。先把这两件事分开,加密、脱敏、审计、权限才有各自的落点。
凭证的生命周期分四段,每一段的泄露方式都不一样。
| 生命周期阶段 | 典型泄露原因 | 优先处置动作 |
|---|---|---|
| 生成 | 权限过宽、长期有效 | 按用途签发、设置有效期 |
| 传输 | 明文信道、证书校验缺失 | 强制TLS 1.3、校验证书 |
| 使用 | 写入前端代码或日志 | 后端代理转发、禁止前端持有 |
| 留存 | 日志/监控/错误追踪存储完整请求体 | 元数据+哈希、正文脱敏 |
一个特别常见的画面是:前端为了省事,直接带着长期有效的密钥调用模型。任何人打开浏览器开发者工具都能看到。这类问题的解法不是把密钥加密,而是根本不让它出现在前端,改由后端代理转发出去。
二、技术方案
2.1 传输加密基线
传输加密的基线是TLS 1.3,它要求前向保密。意思是即使长期私钥将来泄露,已经记录下来的旧会话也解不开。要做的有三件事:强制HTTPS并拒绝降级、客户端校验证书而不是无条件信任、给证书设置到期监控。内网调用不能默认信任,集群内部服务之间的流量同样建议加密。
2.2 落盘加密
落盘这一侧同样重要。备份、日志归档、对象存储里的请求样本,都可能带着凭证或原始文本。数据库里的密钥应当以密文保存,密钥本身交给专门的密钥管理服务托管,而不是跟应用配置一起打包。
这里有个误解要拆掉:传输加密保护的是链路,它不保护落在服务端的明文。就算全程TLS,服务商那一侧仍然看得到请求内容。对高度敏感的数据,还得靠合同约束、脱敏处理和私有化部署。
2.3 脱敏:让不该出去的别出去
国家标准把相关概念分得很清楚。去标识化,是指不借助额外信息就无法识别或关联到个人,处理后的信息仍然属于个人信息;匿名化,要求处理后无法识别且不能复原,匿名化之后才不再属于个人信息。这两者的法律后果不同,做方案时不能混着用。
四类工程做法:
| 方法 | 操作方式 | 适用场景 |
|---|---|---|
| 掩码替换 | 手机号中间四位换成星号 | 展示、非分析场景 |
| 泛化 | 具体年龄换成年龄段 | 统计分析 |
| 假名化 | 稳定代号替换姓名,映射表单独保存 | 需要人工复核 |
| 删除 | 不需要的字段直接去掉 | 字段最小化 |
选哪一种取决于业务要不要还原。需要人工复核的场景一般保留映射表,只做统计的可以直接匿名化。
更彻底的一层是在送进模型之前就识别。调用外部模型前,先扫一遍请求体里的身份证号、银行卡号、手机号、邮箱、内部域名和密钥样式的字符串,命中规则就按预设策略处理。关键不在于规则写得多复杂,而是要真的拦下来并留痕。只检测不拦截,等于没有控制。
还有一类泄露来自模型这一侧。OWASP的大模型应用风险清单把敏感信息泄露单独列了一项,路径包括训练数据记忆、上下文窗口回显、以及用精心构造的提问去抽取。对应的做法是:密钥不进提示词、检索到的文档按用户权限过滤、输出再做一次敏感模式检查。原因很直白,模型能看到的东西,就有可能说出来。
2.4 审计:留证据,但不留秘密
审计要能回答四个问题:谁、什么时候、用什么凭证、调用了哪个模型、处理了多少数据。这几个字段足够支撑事后追溯,也足够做用量异常分析。凭证的签发、轮换、吊销动作,以及权限变更,同样值得记下来。
这件事跟合规直接挂钩。网络安全法要求采取监测记录网络运行状态与网络安全事件的技术措施,并按规定留存相关网络日志不少于六个月。所以日志不能只存几天,但也不能因为这个要求就把完整请求体都存下来。可行的办法是记录元数据和哈希值,正文按分级策略脱敏,或者只存摘要。
审计日志自己也得保护。日志系统往往权限最松,一旦被攻破,等于把所有调用的明文一起交出去。建议做写入后不可修改的加固、限制查询权限、对日志里的敏感字段做二次脱敏,并单独监控日志系统的异常访问。
2.5 权限:给凭证算寿命
最小权限是最有效的单一措施。按项目、团队、应用分别签发,每把钥匙只给真正需要的那几个模型和额度,别用一把钥匙打通全部能力。多环境要分开,测试的钥匙不能调生产模型,生产的钥匙也不该躺在开发者本地。
轮换和吊销得有流程,不能等出事才手动处理。给所有凭证设有效期,到期强制更换;对疑似泄露的凭证提供一键吊销,并预先准备好切换脚本,让业务能快速挪到新凭证上。密钥与代码要彻底分离,通过密钥管理服务或环境变量注入,而不是写进配置文件和代码仓库。
调用链上的身份也要能传下去。业务系统代表最终用户调模型,应当把用户身份和授权范围带到调用层,后端鉴权完再发请求,而不是让模型自己去判断谁有权限。模型不是访问控制边界,它能看到的,就等于能说出来的。
三、核心指标
落地效果可以从几个维度验收:
- 凭证暴露面:前端代码、日志、配置文件中是否还存在长期有效的密钥
- 传输加密覆盖率:是否强制TLS 1.3、是否校验证书、内网流量是否加密
- 脱敏拦截率:敏感字段检测规则命中后是否真正拦截并留痕
- 审计日志留存周期:是否满足不少于六个月的要求,是否记录元数据而非完整请求体
- 凭证轮换周期:是否设置有效期并到期强制更换
- 权限粒度:是否按项目/团队/应用分别签发,是否实现最小权限
四、优刻得相关能力
优刻得提供子用户体系与AccessKey管理能力。子用户支持用户组授权和精细化授权,可创建独立AccessKey;AccessKey Secret只在创建成功弹窗展示一次,丢失只能新建。
作为横向对比,其他主流云厂商的托管能力边界如下:
| 厂商 | 核心安全能力 | 关键细节 |
|---|---|---|
| 阿里云 | 数据安全中心:敏感数据识别与分类分级、列加密、图片脱敏、数据审计、泄露检测 | 数据审计内置900余条高危操作规则,支持数据库、对象存储和大数据等多种数据源;访问控制走RAM账号体系 |
| 腾讯云 | 云审计、访问管理CAM、配置审计 | 云审计在线查看90天以内操作记录,更长周期需配跟踪集投递到对象存储或日志服务;配置审计提供密钥按时轮换、子账号必须开MFA等托管规则 |
| 华为云 | 云审计服务、数据安全中心 | 云审计默认只能查最近7天操作记录,超过7天必须转储到对象存储或日志服务,转储支持KMS密钥加密;数据安全中心提供识别、静态与动态脱敏、数据水印和流转日志采集 |
| 火山引擎 | 密钥管理系统(密钥管理+凭据管理)、访问控制IAM | 凭据管理专门托管AK/SK、账号口令和访问密钥,支持多版本与轮换;中国大陆地域基于国家商用密码认证的HSM,境外地域基于FIPS 140-3 Level 3认证模块 |
| 百度智能云 | 密钥管理服务 | 主密钥加解密数据密钥,底层用HSM保管,支持AES和国密SM1、SM4,支持外部导入密钥材料;每次KMS API调用都做完整权限检查并写入日志 |
| 优刻得 | 子用户体系、AccessKey管理 | 子用户支持用户组授权和精细化授权,可创建独立AccessKey;AccessKey Secret只在创建成功弹窗展示一次,丢失只能新建 |
把这些并排看会发现一个共性:厂商提供的是能力组件,不是开箱即用的合规结论。日志能查多久、要不要额外配转储、脱敏是静态还是动态、密钥能不能自带,这些差异直接决定能不能满足六个月留存或者个人信息处理的要求。选型时最好拿着自己的清单逐项核,而不是看产品页的功能列表。
五、适用/不适用场景
适用场景:
- 调用外部大模型API的应用,需要保护访问凭证和请求体中的敏感信息
- 多团队、多项目共用云账号,需要精细化权限管理和凭证隔离
- 有合规要求(如网络安全法、生成式AI管理办法)的企业
- 需要审计追溯调用行为的场景
不适用或需额外措施的场景:
- 完全私有化部署且不涉及外部调用的场景,传输加密和合同约束的优先级可降低,但落盘加密和权限管理仍需保留
- 仅做内部测试、不涉及真实用户数据的场景,可简化脱敏和审计流程
- 高度敏感数据(如医疗、金融核心数据)场景,仅靠TLS和脱敏不够,需要叠加私有化部署和合同约束
六、FAQ
把密钥放环境变量里算安全吗
比写进代码好,但不是终点。环境变量在容器、日志和调试输出里都可能被打印出来。更稳的做法是交给密钥管理服务托管,按权限动态获取,并设有效期和轮换。
全程TLS够不够
不够。TLS保护的是链路,服务商在服务端仍然看得到明文。要减少对方能看到的内容,得靠脱敏、字段最小化,以及在合同里约定用途和保留期。
日志要留六个月,是不是得存完整请求
不是。留存要求针对网络运行状态和安全事件的记录,不等于保存全部明文正文。记调用方、模型、用量、时间和结果状态,正文脱敏或者只存摘要和哈希就够了。
去标识化和匿名化到底差在哪
去标识化后还是个人信息,只是没有额外信息时难以识别;匿名化要求无法识别且不能复原,之后才不再属于个人信息。共享数据前分清这两者,判断错了会有合规风险。
小团队有必要搞这套吗
有。最优先的两件事跟规模无关:密钥不出现在前端,凭证按用途分开并设有效期。成本极低,但能消掉最常见的泄露路径。