跳至主要内容

保护您的 API 凭据安全

遵循以下最佳实践,以确保您的 API 凭据和令牌安全。

选择合适的身份验证方法

您应该选择适合您要完成的任务的身份验证方法。

  • 要将 API 用于个人用途,您可以创建个人访问令牌。
  • 要代表组织或其他用户使用 API,您应该创建一个 GitHub 应用。
  • 要在 GitHub Actions 工作流程中使用 API,您应该使用内置的 GITHUB_TOKEN 进行身份验证。

有关更多信息,请参阅“关于 GitHub 的身份验证”。

限制凭据的权限

创建个人访问令牌时,仅选择所需的最小权限或范围,并设置令牌所需的最小有效期。GitHub 建议您使用细粒度个人访问令牌,而不是个人访问令牌(经典版)。有关更多信息,请参阅“管理您的个人访问令牌”。

创建 GitHub App 时,请选择 GitHub App 所需的最小权限。有关更多信息,请参阅“创建 GitHub App 的最佳实践”。

在 GitHub Actions 工作流程中使用 GITHUB_TOKEN 进行身份验证时,仅提供所需的最小权限。有关更多信息,请参阅“自动令牌身份验证”。

安全存储您的身份验证凭据

将身份验证凭据视为您的密码或其他敏感凭据。

  • 不要使用未加密的消息传递或电子邮件系统共享身份验证凭据。
  • 不要在命令行中以纯文本形式传递您的个人访问令牌。有关更多信息,请参阅“管理您的个人访问令牌”。
  • 不要将未加密的身份验证凭据(如令牌或密钥)推送到任何存储库,即使存储库是私有的。相反,请考虑使用 GitHub Actions 密钥或 Codespaces 密钥。有关更多信息,请参阅“在 GitHub Actions 中使用密钥”和“管理您针对 GitHub Codespaces 的帐户特定密钥”。
  • 您可以使用密钥扫描来发现推送到存储库的令牌、私钥和其他密钥,或阻止包含密钥的未来推送。有关更多信息,请参阅“关于密钥扫描”。

限制可以访问您的身份验证凭据的人员

不要与他人共享您的个人访问令牌。请考虑创建 GitHub 应用,而不是共享个人访问令牌。有关更多信息,请参阅“关于创建 GitHub 应用”。

如果您需要与团队共享凭据,请将凭据存储在安全的共享系统中。例如,您可以使用 1Password 安全地存储和共享密码,也可以将密钥存储在 Azure KeyVault 中,并使用您的 IAM(身份和访问管理)来管理访问权限。

如果您正在创建需要访问 API 的 GitHub Actions 工作流程,您可以将凭据存储在加密的密钥中,并从工作流程中访问加密的密钥。有关更多信息,请参阅“在 GitHub Actions 中使用密钥”和“在 GitHub Actions 工作流程中使用 GitHub 应用进行身份验证的 API 请求”。

在您的代码中安全地使用身份验证凭据

切勿将身份验证凭据(如令牌、密钥或与应用相关的密钥)硬编码到您的代码中。相反,请考虑使用密钥管理器,例如 Azure Key VaultHashiCorp Vault。有关保护 GitHub 应用凭据的更多信息,请参阅“创建 GitHub 应用的最佳实践”。

在脚本中使用个人访问令牌时,请考虑将令牌存储为 GitHub Actions 密钥,并通过 GitHub Actions 运行您的脚本。您还可以将令牌存储为 Codespaces 密钥,并在 Codespaces 中运行您的脚本。有关更多信息,请参阅“在 GitHub Actions 中使用密钥”和“管理您针对 GitHub Codespaces 的帐户特定密钥”。

如果以上所有选项都不适用,您可以将身份验证凭据存储在 .env 文件中。请确保加密您的 .env 文件,并且不要将其推送到任何存储库。

准备补救计划

您应该制定一个计划,以便及时处理任何安全漏洞。如果您的令牌或其他身份验证凭据泄露,您需要

  • 生成一个新的凭据。
  • 将旧凭据替换为新凭据,无论您在何处存储或访问该凭据。
  • 删除旧的受损凭据。

有关为 GitHub App 旋转受损凭据的信息,请参阅“创建 GitHub App 的最佳实践”。

有关创建和删除个人访问令牌的信息,请参阅“管理您的个人访问令牌”。