切勿在GitHub存储API密钥 切勿在GitHub存储API密钥 | Zhiwei Li

切勿在GitHub存储API密钥 | AI生成和翻译

Home 2026.04

问题:在GitHub上存储大量API密钥是否安全?

回答:

简短回答:不安全,不建议在GitHub仓库(尤其是公开仓库)中存储API密钥。

即使是私有仓库也存在风险,这通常被视为不良的安全实践。原因如下:


🔴 为什么在GitHub存储API密钥是危险的

1. 公开仓库 = 即刻泄露

如果你的仓库是公开的,机器人会不断扫描GitHub以获取暴露的密钥。一旦推送密钥,它可能:

  • 在几秒钟内被检测到
  • 被滥用(例如加密货币挖矿、API滥用)
  • 被出售或共享

这一切的发生都是自动的,无需人工干预。


2. 私有仓库并非绝对安全

即使是私有仓库也存在风险:

  • 意外公开(例如日后转为公开仓库)
  • 合作者泄露
  • Git历史记录(即使删除后,密钥仍会保留,除非重写历史)
  • 账户被入侵

3. Git历史记录默认永久存在

一旦提交过密钥:

  • 之后删除并不会从历史记录中移除它
  • 攻击者仍然可以检索到它

需要使用以下工具清理:

  • git filter-repo 或 BFG Repo Cleaner

🟢 最佳实践(应该做什么)

✅ 1. 使用环境变量

在代码外部存储密钥:

export OPENAI_API_KEY=your_key_here

然后在代码中访问:

import os
key = os.getenv("OPENAI_API_KEY")

✅ 2. 使用 .env 文件(但绝不提交)

  • å°† .env 添加到 .gitignore
  • 本地存储密钥

✅ 3. 使用密钥管理器(推荐用于重要项目)

例如:

  • AWS Secrets Manager
  • HashiCorp Vault
  • Google Secret Manager

✅ 4. 使用GitHub Secrets(用于CI/CD)

GitHub为工作流提供加密密钥:

  • GitHub Actions

这些方式适合:

  • 部署流水线
  • 自动化脚本

✅ 5. 定期轮换密钥

如果密钥曾暴露过:

  • 立即撤销
  • 生成新密钥

🔵 如果已经推送了API密钥

立即执行以下步骤:

  1. 撤销密钥
  2. 从代码中删除
  3. 清理Git历史记录
  4. 审核使用日志

🧠 实用思维(重要)

将API密钥视为:

带有资金关联的密码

特别是对于:

  • OpenAI / 云API
  • 支付API
  • 基础设施访问

如果泄露,它们可能:

  • 耗费资金
  • 泄露数据
  • 导致账户被封禁

✅ 结论

  • 公开GitHub → 绝不存储API密钥
  • 私有GitHub → 仍然避免
  • 使用环境变量 + 密钥管理器作为替代方案

如果需要,我可以建议一个安全管理数百个API密钥的清洁架构(基于你的AI工作流和自动化设置)。