API Key 安全和用量监控:从防泄露到异常告警
简答:API Key 不应放进前端、移动端、公开仓库、日志或 URL 查询参数。更稳妥的做法是由后端或密钥管理器保存 Key,按应用、环境和成员拆分,并同时监控请求数、Token、模型、错误率、来源 IP 与时间段;一旦发现异常,立即撤销旧 Key、检查用量并完成轮换。
定义:API Key 安全和用量监控,是通过安全存储、权限限制、用量统计、预算告警和轮换应急,降低密钥泄露、未授权调用与意外费用风险的一套管理方法。
先做这张自查表:API Key 应该放在哪里
本站为第三方指南,非某服务官方,以其官网为准。截至2026年10月23日,具体平台的控制台名称、字段和限额能力可能不同;如果你使用的是第三方 API Router 或 OpenAI Compatible 网关,应以该平台当前界面和文档为准,未核实的控制台路径不要直接套用。
| 场景 | 推荐做法 | 应避免的做法 |
|---|---|---|
| 本地开发 | 使用环境变量或本地密钥文件,并把密钥文件加入忽略规则 | 把 Key 直接写进源码、Notebook 或截图 |
| 后端服务 | 使用环境变量、Secret Manager 或其他密钥管理服务 | 把 Key 编译进程序或写入容器镜像 |
| 浏览器、移动端 | 由自己的后端转发请求,客户端只拿业务侧短期凭证 | 把长期 API Key 放在 JavaScript、APK 或 App 配置中 |
| 团队协作 | 按成员、项目、应用或环境创建独立 Key | 多人共用个人 Key,导致无法区分用量和责任 |
| 请求传输 | 优先使用 HTTPS 和服务商要求的认证请求头 | 把 Key 放进 URL 查询参数、日志或错误上报内容 |
Google Cloud 官方建议为 API Key 添加 API 限制和应用限制,删除不再使用的 Key,隔离不同成员或应用,并定期轮换;OpenAI 官方也明确建议不要把 Key 部署在浏览器或移动端,而应通过后端服务器保存和调用。可分别查看 Google Cloud API Key 管理建议 与 OpenAI API Key 安全建议。
按环境和用途拆分 Key,再设置最小权限
不要只创建一个“万能 Key”供所有工具使用。建议至少拆分为开发、测试和生产三个环境;如果同时接入 Claude、GPT、Gemini、DeepSeek 或其他模型,再按照应用或团队继续拆分。这样做的直接价值是:异常调用时可以快速定位范围,撤销一个 Key 时不会同时影响所有服务。
- 开发 Key:只用于本地调试,设置较短有效期,避免连接生产数据。
- 测试 Key:只开放测试所需的模型或接口,并设置较低的日、月预算。
- 生产 Key:仅由后端服务使用,限制来源 IP、模型范围或项目范围,并设置轮换负责人。
- 团队 Key:不要多人复制同一串密钥;如果平台支持项目、成员和服务账号,应使用平台提供的隔离机制。
能限制时,优先同时限制“能访问哪些 API”与“从哪里访问”。Google Cloud 文档将这两类限制分别称为 API restrictions 和 application restrictions,并建议生产环境尽量配置限制。对于第三方路由平台,是否支持模型白名单、IP 白名单、项目隔离或有效期,需要逐项查看其当前文档,不能默认具备。
如果你使用 OpenAI API,官方文档还建议为项目 Key 设置过期时间并建立替换流程:先创建新 Key,更新服务并验证调用成功,再撤销旧 Key。具体能力和权限以当前账户界面为准。
用量监控要看哪些指标:不要只看余额
“还有多少余额”只能回答预算问题,不能判断 Key 是否被盗用。建议为每个 Key、项目或应用建立一份最小监控清单:
- 请求数:按小时、天和模型统计,观察是否突然增加。
- Token:记录输入、输出和总 Token;长上下文、工具调用和推理类请求可能让 Token 快速上升。
- 模型分布:检查是否出现平时没有使用过的模型,或请求从低成本模型突然切换到高成本模型。
- 错误率:分别统计 400、401、403、404、429、5xx 和超时,避免把权限错误误判成流量问题。
- 来源信息:记录请求时间、项目、Key 标识的脱敏值、来源 IP、地域和调用应用;日志中不要记录完整 Key。
- 并发和速率:观察短时间内的请求峰值、并发数和 Token 速率,识别脚本化滥用或配置失控。
- 费用或额度:按日、月和项目查看消耗,并设置多个预算阈值。
OpenAI 的 Usage Dashboard 支持按项目查看用量,并可导出活动或费用数据;部分接口响应也会返回输入、输出和总 Token。流式 Chat Completions 请求可以通过 stream_options.include_usage 请求最终用量块,但如果流被中断,可能收不到最后的用量块,因此不能把“缺少最终统计”理解为“没有消耗”。详情可参考 OpenAI API 用量与成本查看说明。
如何建立正常基线和告警规则
没有统一适用于所有项目的异常阈值,建议先连续观察一段时间,再按自己的业务基线配置告警。可以采用下面的低成本方法:
- 记录工作日和非工作日的每小时请求数、Token、错误率和来源 IP。
- 为每个项目分别记录常用模型和平均请求规模,不把所有应用混在一起计算。
- 先配置四类告警:预算达到阈值、请求量突增、出现陌生 IP、401/403/429 或 5xx 错误率升高。
- 告警信息只包含项目名、脱敏 Key 标识、时间、指标和处理链接,不包含完整密钥或完整 Authorization 头。
- 每次告警都记录“确认正常”“限流调整”“撤销 Key”或“误报”等处理结果,用于之后调整阈值。
预算告警和硬限制不是一回事。以 OpenAI 项目设置为例,官方说明显示,消费告警用于通知,硬限制才可能在达到已跟踪的消费额度后停止受影响的请求,而且执行并非瞬时完成,记录的消费可能略高于配置值。使用其他平台时,也应确认它的“额度”“软提醒”“硬停止”分别代表什么。
如果没有现成监控面板,可以在自己的后端记录结构化日志,并将请求数、Token、错误率和延迟汇总到监控系统。Google Cloud 的官方监控文档支持基于指标或日志创建告警策略,可作为自建监控方案的参考,但不代表第三方 API Router 一定提供相同功能。
发现 Key 泄露后的应急流程
一旦 Key 出现在公开仓库、前端代码、聊天记录、工单、日志或截图中,不要等待确认是否已经被调用,按“止损优先”的顺序处理:
- 立即撤销或禁用:在服务商控制台删除泄露 Key;如果支持禁用,先禁用再准备替换。
- 检查用量:查看泄露时间之后的请求数、Token、模型、IP、地域、错误率和费用变化,保存必要记录。
- 创建替代 Key:使用新的 Key 更新后端、环境变量、部署平台和 CI/CD 密钥。
- 验证服务:用最小请求验证认证、模型权限和额度,再恢复业务流量。
- 清理传播路径:从仓库历史、构建产物、日志、截图和工单中移除密钥;仅删除当前文件不等于历史记录已经安全。
- 复盘权限:重新检查 IP、模型、项目、有效期、预算和告警设置,并为下一次轮换指定负责人。
OpenAI 官方给出的处理建议包括删除受影响的 Key、检查 API 用量并联系支持;Google Cloud 官方则建议保留正在使用的 Key、删除不再需要的 Key,并通过监控和日志发现未授权使用。应急过程中不要把完整 Key 贴到工单、截图或聊天中。
一套可以今天执行的最小方案
如果你目前没有专门的密钥管理系统,可以先完成以下六步:
- 把代码里的 Key 改为环境变量,例如
OPENAI_API_KEY或项目自定义变量。 - 把
.env、配置文件和导出的日志加入忽略规则,提交前执行敏感信息扫描。 - 为开发、测试、生产分别创建 Key,不再多人共用同一串密钥。
- 关闭或删除不用的 Key,能设置有效期就不要永久有效。
- 每天查看请求数、Token、模型、错误率和来源 IP;每周检查 Key 清单。
- 设置预算提醒,并预先写好撤销、替换、验证和复盘流程。
如果使用第三方网关或 API Router,重点核对四件事:Key 是否能单独撤销、是否能按项目查看用量、是否支持模型或 IP 限制、额度告警是提醒还是硬停止。当前无法从公开资料核实 crazyrouter.cyou 的具体控制台字段和监控能力,因此不对其页面路径、套餐、价格或状态作推断。
需要把多个模型接口统一到一个兼容入口时,可在完成 Key 分组、预算和日志脱敏后,再根据实际工具需求选择犀速 AI;使用前仍应以其官网公开说明和当前控制台为准。
常见问题
API Key 可以直接放在前端 JavaScript 里吗?
不建议。浏览器代码、移动端安装包和前端网络请求都可能被用户查看或提取。更安全的方式是让前端请求自己的后端,由后端保存 Key 并调用 AI API。
多人可以共用一个 API Key 吗?
不建议。共用 Key 会降低用量追踪和责任定位能力,也会让轮换和撤销影响范围变大。应按成员、项目、应用或环境创建独立 Key;具体平台是否支持项目级 Key,以其官方文档和当前界面为准。
只设置月度预算,就能保证不会超支吗?
不能直接假设。预算可能只是提醒,也可能支持硬限制;有的平台还会存在统计和执行延迟。设置后应确认它是软阈值还是硬停止,并同时监控请求数、Token 和模型。
发现 Key 泄露后,先改代码还是先删 Key?
先撤销或禁用泄露 Key,再创建新 Key 更新后端和部署环境。随后检查泄露时间后的用量、来源 IP、模型和费用,最后清理仓库历史、日志和截图中的敏感内容。
用量监控至少要记录哪些字段?
至少记录时间、项目或应用、脱敏 Key 标识、模型、请求数、输入和输出 Token、错误码、延迟、来源 IP 或地域。不要记录完整 API Key、Authorization 头或用户隐私内容。
相关阅读
参考资料
- Google Cloud:Best practices for managing API keys(docs.cloud.google.com)
- Google Cloud:Manage API keys(docs.cloud.google.com)
- OpenAI Help:Best Practices for API Key Safety
- OpenAI Help:Reviewing API usage and costs
- OpenAI Help:Managing projects in the API platform
- Google Cloud:View and manage metric usage(docs.cloud.google.com)
- Google Cloud:Manage alerting policies by API(docs.cloud.google.com)