跳至主要内容

保护您的 API 凭据安全

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

选择合适的身份验证方法

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

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

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

限制凭据的权限

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

令牌具有与令牌所有者相同的访问资源和对这些资源执行操作的功能,并且进一步受授予令牌的任何范围或权限的限制。令牌不能向用户授予额外的访问权限。

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

在 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 应用轮换受损凭据的信息,请参阅“创建 GitHub 应用的最佳实践”。

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