选择适当的身份验证方法
应选择适合要完成的任务的身份验证方法。
- 若要将 API 用于个人用途,可以创建 personal access token。
- 若要代表组织或其他用户使用 API,应创建 GitHub App。
- 若要在 GitHub Actions 工作流中使用 API,应使用内置
GITHUB_TOKEN
进行身份验证。
有关详细信息,请参阅“关于向 GitHub 验证”。
限制凭据的权限
创建 personal access token 时,仅选择所需的最低权限或最小范围,并设置使用该令牌所需的最短时间的到期日期。 GitHub 建议使用 fine-grained personal access token 而不是 personal access tokens (classic)。 有关详细信息,请参阅“管理个人访问令牌”。
令牌具有与令牌所有者相同的访问资源和对这些资源执行操作的能力,并且还受到授予令牌的任何范围或权限的限制。 令牌无法向用户授予额外访问权限功能。
创建 GitHub App 时,选择 GitHub App 所需的最低权限。 有关详细信息,请参阅“创建 GitHub 应用的最佳做法”。
在 GitHub Actions 工作流中使用 GITHUB_TOKEN
进行身份验证时,仅提供所需的最低权限。 有关详细信息,请参阅“自动令牌身份验证”。
安全地存储你的身份验证凭据
处理身份验证凭据的方式与处理密码或其他敏感凭据的方式相同。
- 不要使用未加密的消息或电子邮件系统共享身份验证凭据。
- 不要在命令行中以纯文本形式传递 personal access token。 有关详细信息,请参阅“管理个人访问令牌”。
- 不要将未加密的身份验证凭据(如令牌或密钥)推送到任何存储库,即使存储库是专用存储库。 而是考虑使用 GitHub Actions 机密或 Codespaces 机密。 有关详细信息,请参阅 在 GitHub Actions 中使用机密 和 管理 GitHub Codespaces 特定于帐户的机密。
- 可以使用机密扫描来发现已推送到存储库的令牌、私钥和其他机密,或阻止将来包含机密的推送。 有关详细信息,请参阅“关于机密扫描”。
限制谁可以访问你的身份验证凭据
不要与其他人共享你的 personal access token。 请考虑创建 GitHub App,而不是共享 personal access token。 有关详细信息,请参阅“关于创建 GitHub 应用”。
如果需要与团队共享凭据,请将凭据存储在安全的共享系统中。 例如,可以使用 1Password 安全地存储和共享密码,也可以将密钥存储在 Azure KeyVault 中,并使用 IAM(标识和访问管理)管理访问权限。
如果要创建需要访问 API 的 GitHub Actions 工作流,则可以将凭据存储在加密机密中,并从工作流访问加密的机密。 有关详细信息,请参阅 在 GitHub Actions 中使用机密 和 使用 GitHub Actions 工作流中的 GitHub App 发出经过身份验证的 API 请求。
在代码中安全地使用身份验证凭据
切勿将身份验证凭据(如令牌、密钥或与应用相关的机密)硬编码到代码中。 而是考虑使用机密管理器,例如 Azure Key Vault 或 HashiCorp Vault。 有关如何保护 GitHub App 凭据的详细信息,请参阅 创建 GitHub 应用的最佳做法。
在脚本中使用 personal access token 时,请考虑将令牌存储为 GitHub Actions 机密,并通过 GitHub Actions 运行脚本。还可以将令牌存储为 Codespaces 机密,并在 Codespaces 中运行脚本。有关详细信息,请参阅 在 GitHub Actions 中使用机密 和 管理 GitHub Codespaces 特定于帐户的机密。
如果这些选项都不可行,则可以将身份验证凭据存储在 .env
文件中。 请确保加密 .env
文件,切勿将其推送到任何存储库。
准备修正计划
应创建计划,以便及时处理任何安全漏洞。 如果令牌或其他身份验证凭据泄露,则需要:
- 生成新凭据。
- 将旧凭据替换为要存储或访问凭据的任何位置的新凭据。
- 删除已泄露的旧凭据。
有关如何轮换 GitHub App 的已泄露凭据的信息,请参阅 创建 GitHub 应用的最佳做法。
有关如何创建和删除 personal access token 的信息,请参阅 管理个人访问令牌。