Compliance Studio
处理泄露的 API 密钥
当 k-ID API 密钥在源代码控制、日志或客户端代码中暴露时的处理步骤。
如果 k-ID API 密钥已经暴露(提交到代码仓库、粘贴到公开频道、写入日志或随客户端代码发布),请尽快删除并替换该密钥。在删除之前,任何持有该密钥的人都可以以您的产品身份调用 k-ID API。
仅从代码中移除密钥或重写 git 历史是不够的。分支、克隆、缓存或 CI 日志中可能已经存在副本。让泄露的密钥失效的唯一方法是在 Compliance Studio 中删除它。
1. 确定密钥
确认该密钥属于哪个产品和哪个环境。
当前格式的 API 密钥以表示环境的前缀开头:
| 前缀 | 环境 |
|---|---|
kgs_live_ | 生产 |
kgs_test_ | 测试 |
要在 Compliance Studio 中找到该密钥,请打开可能相关的产品,进入开发者设置标签页,并在测试和生产之间切换。API 密钥部分会显示每个密钥的开头几个字符,请将其与泄露的值进行比对。在当前格式之前创建的密钥会标有旧版,并显示较少的字符。
生产密钥
生产密钥泄露后,他人可以访问您的生产数据。如果密钥出现在公开场所,请立即删除它(第 3 步),之后再进行替换,即使您的集成会因此短暂不可用。
2. 创建替换密钥
一个产品的每个环境可以同时有多个有效密钥,因此通常可以在不停机的情况下替换密钥。
- 在同一产品的开发者设置标签页上,选择相同的环境(测试或生产),然后点击添加API密钥。
- 为新密钥填写描述,以便与要替换的密钥区分开。
- 复制新密钥。
- 更新所有使用旧密钥的地方:环境变量、密钥管理器、CI/CD 变量,以及调用 k-ID API 的其他服务。
- 部署更改,并确认您的集成使用新密钥正常工作。
3. 删除泄露的密钥
- 在开发者设置标签页的 API 密钥部分中找到泄露的密钥。
- 点击其旁边的删除(垃圾桶)图标,然后点击确认。
删除立即生效。使用已删除密钥的请求会被拒绝并返回 401 Unauthorized,已删除的密钥无法恢复。
4. 从泄露位置移除密钥
密钥删除后便无法再使用,但您仍应清理暴露的位置:
- **源代码控制:**从代码中移除密钥,并将其改为存放在环境变量或密钥管理器中。如果还想将其从仓库历史中移除,请参阅 GitHub 指南从仓库中删除敏感数据。
- **客户端代码:**如果密钥随网页、移动应用或游戏客户端一起发布,请将所有使用该密钥的 k-ID API 调用移到您的服务器上。API 密钥绝不能到达终端用户的设备。请参阅安全建议。
- **日志和消息:**从出现过该密钥的日志、工单、聊天消息和文档中删除或遮盖密钥。
5. 检查异常活动
- 在产品的历史记录标签页的活动部分,检查是否有您不认识的 API 密钥已添加、API 密钥已编辑和 API 密钥已移除条目,并查看每项更改是由谁做出的。请参阅版本历史与回滚。
- 检查您自己的服务器日志,以及密钥暴露期间您的产品收到的会话和验证,看是否有任何异常。
如果您认为密钥已被滥用,或在执行上述步骤时需要帮助,请联系 support@k-id.com 或您的 k-ID 客户经理。请提供产品名称、环境,以及密钥大约何时、在何处暴露。请勿包含密钥本身。
防止泄露
- 仅在服务器上保存 API 密钥,存放在环境变量或密钥管理器中。
- 切勿将密钥提交到源代码控制。将包含密钥的文件(例如
.env)添加到.gitignore。 - 为每个服务或部署阶段使用单独的密钥,并填写说明其用途的描述,这样您可以只删除一个密钥而不影响其他密钥。
- 为您的仓库启用 GitHub 密钥扫描和推送保护。
有关管理密钥的更多信息,请参阅开发者设置。