跳到页面内容
跳到互动练习
互动课堂 / 接口钥匙换班站DAILY / SECURITY TERMS

002 / 身份与访问 / API Key

新钥匙上线了,旧钥匙还在开门?

API 密钥 · API Key

调用方已经换上 K2,泄露出去的 K1 却可能继续有效。别只看“生成成功”:沿着新建、迁移、验证和撤销,把合法服务与旧钥匙副本一起放到时间线上。

开始探索 ↓9–12 分钟
动手实验 · 场景判断 · 实用检查

开发者与兜帽人物都拿着云朵图案的金色钥匙,代码外壳正在碎裂,远处云服务连着货物与金币。画面比喻秘密键泄露后的资源滥用;它不表示所有 API key 都有付款权限或都必须保密。

API 密钥 · 本课场景

API Key 概念寓意:应用调用 API 时常用的机器凭据,泄露后可能被他人冒用访问接口。

开发者与兜帽人物都拿着云朵图案的金色钥匙,代码外壳正在碎裂,远处云服务连着货物与金币。画面比喻秘密键泄露后的资源滥用;它不表示所有 API key 都有付款权限或都必须保密。

按 Esc 或点击画面外侧关闭。打开原图 ↗

本课任务 / API 密钥

先明确具体服务赋予 API key 的含义,再完成不会遗留旧访问路径的凭据交接。

  • 区分项目标识、秘密认证凭据与公开键
  • 逐项核对环境、范围、状态和有效期
  • 比较计划轮换与泄露后的紧急撤销

API key 都证明同一种身份吗?

不是。Google Cloud 标准 API key 把请求关联到计费与配额项目,不认证主体;绑定服务账号的 authorization key 是另一种类型。Stripe 的秘密或受限 key 则用于 API 认证,语义要按具体服务和键类型判断。[1][2]

叫 key 的字符串都要藏起来吗?

先确认用途。Stripe publishable key 被设计为可放在客户端,secret 与 restricted key 必须保密;公开键不是能安全暴露秘密键的理由。管理用的键 ID、显示名与真正用于调用的值也不能混淆。[2][1]

换新键为什么还不算完成?

生成 K2 不会普遍自动迁移所有调用方,也不必然让 K1 立即失效。轮换需要明确替换、分发、使用验证和旧键失效;是否支持重叠窗口、自动到期或即时撤销由提供方决定。[4][2]

亲手探索 / 不同条件,不同结果

让新钥匙接班,也让旧副本失去作用。

在虚构配送 API 中登记符号 K2,分别迁移调用方 A、B,再核对、撤销或加入 K1 泄露事件。两方任务固定为读取沙盒配送单;可另行探测错环境或超范围请求。时钟只由按钮推进,不生成或接收真实 key。

双钥轮换时间线 · API Key

换了新钥匙,旧副本什么时候才失效?

海湾配送 API 的两个调用方最初都引用 K1。逐步准备 K2、迁移、核对使用并撤销 K1,再加入泄露或到期事件,观察可用性与暴露窗口。

旧标记 K1

仍有效

沙盒 · 读写 · 第 4 格到期

泄露记录:未标记泄露

替代标记 K2

尚未登记

尚未登记;下方选择不自动改变当前状态。

教学时钟 / 有效标记
第 0 格 / 1 把有效
有效数量不代表目标请求都获准
调用方配置
A → K1;B → K1
配置引用与成功使用是两件事
迁移记录
本轮尚未核对通过
完整场景假设只有这两个调用方
只改变选项不会推进时间线。下面的操作全部是本地状态推演,没有 provider 调用或真实账户变更。
② 首次登记 K2 时的服务政策

仅首次登记前可改。K2 已登记后不会被这些选项重写;要比较另一种轮换方案,请重置。

③ 仅“对照能否使用”时选择的目标

其余事件一律对照原任务“沙盒读取”,避免误把别的环境可用当成迁移成功。

泄露不自动使它失效;副本也不增加有效标记的数量。

尚未运行。先预测,再检查本地教学模型。

已经执行的轮换事件

只保留最近 8 步;改选项会清除旧结论,但保留真实已推进的本地时间线。重置全部清空。

还没有执行事件。

先按 K2 登记 → A 迁移 → 核对 → B 迁移 → 核对 → 撤销 K1 走一遍。重置后先标记 K1 泄露,再登记 K2:为什么旧副本还在?最后比较提前撤销与到期造成的调用中断。

随手查 / 把理解带回实际工作

理解机制之后,检查这些细节。

实验是简化模型。真实环境需要明确业务规则、验证失败路径,并持续维护配置与证据。

01 / 实用细节

先读服务的认证与权限说明

记录键代表项目、账号还是服务主体,哪些接口接受它,哪些权限由别处执行。不要把 API key 自动当作某个终端用户的登录证明,也不要假设它一定是 JWT、一定能自带 scope 或一定有到期时间。[1][2]

02 / 实用细节

环境、权限和调用限制分开核对

按服务支持的能力限制所需 API 与操作,分开测试和生产凭据。Stripe 的沙盒与正式环境有各自键和对象,Google Cloud 提供 API/应用限制;这些机制各有语义,不能用一套通用字段替代厂商核验。[2][1]

03 / 实用细节

秘密从受控位置交给真正的调用方

秘密键不要进入前端包、源码、日志、截图或聊天。通过受限的秘密管理方案交付给服务端,仅保留查问题所需的非秘密标识;环境变量也可能被错误页面或诊断输出泄露,不是自动安全的保险箱。[3][5]

04 / 实用细节

计划轮换要检查仍在用旧键的服务

在提供方允许的重叠期内配置新键,逐步切换调用方,观察失败率和旧键使用记录,再使旧键失效。本练习有 A、B 两个已知调用方,只迁移一方还不完整;真实定时任务、旧部署和离线客户端也要纳入清单。[2][4]

05 / 实用细节

已经泄露,不能等到日历上的轮换日

把暴露当作可能受损,尽快按提供方流程使受影响秘密失效、替换并调查异常调用。删除仓库中的字符串无法撤回已有副本;紧急撤销可能中断合法服务,应把恢复与止损放进同一响应计划。[3][4]

06 / 实用细节

用拒绝结果确认交接真的结束

分别验证新键在批准范围内成功、旧键在撤销或到期后失败,以及错环境和超范围请求被拒绝。日志记录键标识、时间、目标与结果,不记录秘密值;配额或限流只能限制部分影响,不能代替撤销。[4][5]

从模拟,到验证

找一个获准的环境,实际检查一次。

勾选用于本页自查,不会自动标记整课已学会。练习与清单刷新后重置。

本页已检查 0 / 5 项

实际检查清单
30 秒场景小测

网页中暴露了计费接口的 API 密钥,优先做什么?

能解释原因,再标记学会。

小测结果同步错题本;“已学会”沿用原有本地学习记录。

资料与依据

  1. Google Cloud · Manage API Keys ↗

    标准键与授权键的区别、项目关联、键 ID 及限制

  2. Stripe · API Keys ↗

    公开/秘密/受限键、沙盒与正式环境、轮换和失效

  3. Stripe · Protect Secret API Keys ↗

    秘密交付、环境变量泄露、暴露与受损后的处置

  4. OWASP · Secrets Management ↗

    创建、轮换、撤销、到期及活动凭据核验

  5. OWASP · Logging ↗

    安全事件字段、认证授权结果与不应记录的秘密

本页场景、人物与数据均为教学示例。互动选择不会上传;收藏、已学会与错题沿用当前浏览器本地存储。来源正文核对日期:2026-10-08。