API Key 是什么:区分凭据、权限与余额

第一次看到 API Key、OPENAI_API_KEY 或工具的密钥输入框时,先弄清它们各自是什么。本篇用虚构例子说明安全存放、权限边界和泄露后的处理顺序。

内容更新 2026-07-26

先看结论

API Key 是交给服务验证的秘密凭据,不是模型、账户密码或余额;谁能使用它,取决于该 Key 的权限及服务限制。

先理解这些

  • API 是程序向服务请求功能的接口。Key 是服务识别请求、检查权限并把用量归到相应账户或项目的凭据;实际可做的事受权限和平台限制。
  • 可以把 Key 想成项目门禁卡:给“虚构 FAQ 测试”单独发卡,方便追踪和撤销;卡本身不存储模型或充值余额。不同 Key 也可能共用项目额度。
  • OPENAI_API_KEY 等名字是程序约定的变量名,不证明其中装的是 OpenAI 官方 Key。Key 的签发方、请求地址和使用工具必须对应。
  • ChatGPT/Claude 订阅与各自 API 的计费分开。工具允许订阅登录,不等于同一个订阅自动为任意 API 请求付费;第三方 Key 也不是官方账号密码。

接入前只确认三件事

Secret 指部署平台保存的机密变量;keyring 指系统凭据存储。支持方式按具体工具文档选择,不能给所有工具统一塞一个 .env 文件。

问题应得到的答案
谁签发、发往哪里?Key 签发平台与经过核对的公开 API 地址对应;不用来登录别的平台
谁付费、能做什么?所属账户/项目、必需接口与模型权限、当前计费和限制
存哪里、怎样撤销?工具支持的凭据存储或受保护服务器环境,以及签发平台的撤销入口

一个不用真实密钥的小练习

  • 能解释 Key、变量名、模型标识和余额为何不同。
  • 知道代码与求助材料都不应包含真实值;只用 <REDACTED> 表示已配置。
  • 知道泄露后应撤销旧凭据,而不是只删消息或改文件名。
以下内容全部为教学占位符,不是可用凭据:
变量名:OPENAI_API_KEY
占位值:<EXAMPLE_API_KEY>
用途标签:faq-demo-dev
模型标识:<MODEL_ID_FROM_YOUR_SERVICE>

问题:哪一个要由服务签发?哪一个只是程序读取时使用的名字?
参考答案:真实 API Key 由服务签发;OPENAI_API_KEY 只是变量名。
上述占位值不能用于认证;模型标识也不是密钥。

求助时提供结构,不提供秘密

请只根据以下脱敏信息检查配置思路,不读取设备、账号或任何凭据文件。
工具及版本:<TOOL_AND_VERSION>
运行环境:<SERVER / LOCAL_CLI / OTHER>
认证方式:<SUBSCRIPTION_LOGIN / OFFICIAL_API_KEY / THIRD_PARTY_API>
密钥签发方:<PROVIDER>
公开文档地址:<PUBLIC_DOC_URL>
密钥状态:已配置;内容一律为 <REDACTED>

请说明:应使用哪种受支持的存储方式;需要哪些最小权限;
如何在不打印秘密的前提下检查配置;泄露后到哪里撤销。
不要索取真实 Key 的任何片段、Cookie、完整配置或原始日志。
涉及付费验证,只说明前提与检查标准,不替我执行。

容易误解的安全边界

  • 环境变量不是加密保险箱:拿到进程权限的程序仍可能读取它;不要转储整个环境。
  • .env 和 .env.local 是文件命名惯例,不保证当前程序会自动加载。Node.js 的 process.env 读取的是进程环境,加载规则要看运行时或框架。
  • .gitignore 不会让已跟踪文件自动消失,也不是权限控制。环境文件不应成为前端构建产物或随包分发。
  • 预算提醒不等于硬限额:OpenAI 的 spend alert 只通知;明确启用组织或项目 hard limit 才会阻断适用请求,而且执行有传播延迟。以当前设置与该机制的规则为准,不承诺分毫不超。
  • 不要仅凭 sk- 前缀识别签发方,也不要承诺泄露“几秒必被盗”;一旦公开就应按暴露处理。

参考依据

适合谁看

  • 工具要求填写 API Key,但你只有聊天产品的订阅账号。
  • 为个人测试或项目选择密钥存放方式。
  • 想在不发送真实 Key 的情况下请人协助配置。

试着做一次

  1. 先做下方纸面练习,确认你分得清变量名、占位符和真实凭据;理解概念无需注册、充值或发送测试请求。
  2. 真正接入前确认服务签发方、工具支持的认证方式及费用承担者。按用途或环境管理 Key,命名如 faq-demo-dev;团队不要共用个人 Key。
  3. 在平台支持的范围内只授予任务所需权限;弄清限制是提醒阈值还是硬停止,不把“已设预算”当不会超支的保证。
  4. 优先使用工具文档支持的系统凭据存储或服务器 Secret。代码项目需要环境文件时,先保护文件并排除 Git;代码只引用变量,不输出内容。
  5. 要实际验证接入时,按对应工具教程进行一次经过费用确认的虚构短请求;只看脱敏结果和用量,不为了证明 Key 存在而打印它。具体流程见 /article/1a1api-integration。

需要解决的问题

  • 把 OPENAI_API_KEY 当成密钥本身,或不知道它只是环境变量名。
  • 以为换一把 Key 就会获得更多模型或新的独立余额。
  • 密钥曾出现在截图、聊天、浏览器代码或 Git 提交中。

遇到困难时

  • 怀疑泄露:立即在签发平台撤销旧 Key,检查异常用量,再创建最小权限替代项并更新受影响工具。不要为了保持服务继续使用已泄露的旧 Key。
  • 密钥曾提交 Git:仅删除当前文件或加 .gitignore 不足以撤销历史暴露;先作废密钥,再按仓库协作规范处理历史与副本。
  • 工具不能读取凭据:只核对存储方式、变量名和进程是否加载,不把真实值、片段、长度或完整配置发给协助者。
  • Key 正确仍报错:模型、余额、请求路径和网络是不同层,按 /article/api-error-codes 继续判断,不立即换平台或反复充值。