选择合适的身份验证方法
您应选择适合您想完成任务的身份验证方法。
- 若要个人使用 API,您可以创建个人访问令牌。
- 若要代表组织或其他用户使用 API,您应创建 GitHub App。
- 在 GitHub Actions 工作流中使用 API 时,您应使用内置的
GITHUB_TOKEN进行身份验证。
欲了解更多信息,请参阅 关于 GitHub 身份验证。
限制凭证的权限
创建个人访问令牌时,仅选择所需的最小权限或范围,并将过期日期设置为您需要使用令牌的最短时间。GitHub 建议使用细粒度个人访问令牌,而非传统的个人访问令牌(Classic)。欲了解更多信息,请参阅 管理您的个人访问令牌。
令牌具备其所有者拥有的访问资源和对资源执行操作的相同能力,并受令牌所授予的作用域或权限进一步限制。令牌不能为用户提供额外的访问能力。
创建 GitHub App 时,选择您的 GitHub App 所需的最小权限。欲了解更多信息,请参阅 创建 GitHub App 的最佳实践。
在 GitHub Actions 工作流中使用 GITHUB_TOKEN 进行身份验证时,仅授予所需的最小权限。欲了解更多信息,请参阅 在工作流中使用 GITHUB_TOKEN 进行身份验证。
安全存储身份验证凭证
像对待密码或其他敏感凭证一样对待身份验证凭证。
- 不要使用未加密的消息或电子邮件系统分享身份验证凭证。
- 不要在命令行中以明文形式传递个人访问令牌。欲了解更多信息,请参阅 管理您的个人访问令牌。
- 不要将未加密的身份验证凭证(如令牌或密钥)推送到任何仓库,即使该仓库是私有的。请考虑使用 GitHub Actions secret 或 Codespaces secret。欲了解更多信息,请参阅 在 GitHub Actions 中使用 secret 和 管理 GitHub Codespaces 的账户专属 secrets。
- 您可以使用 secret scanning 来发现已推送到仓库的令牌、私钥及其他机密,或阻止包含机密的后续推送。欲了解更多信息,请参阅 关于 secret scanning。
限制谁可以访问您的身份验证凭证
不要与他人共享您的个人访问令牌。与其共享个人访问令牌,不如考虑创建 GitHub App。欲了解更多信息,请参阅 关于创建 GitHub App。
如果需要与团队共享凭证,请将凭证存储在安全的共享系统中。例如,您可以使用 1Password 安全存储并共享密码,或将密钥存储在 Azure KeyVault 并通过您的 IAM(身份与访问管理)来管理访问权限。
如果您正在创建需要访问 API 的 GitHub Actions 工作流,可以将凭证存储在加密的 secret 中,并在工作流中访问该加密 secret。欲了解更多信息,请参阅 在 GitHub Actions 中使用 secret 和 在 GitHub Actions 工作流中使用 GitHub App 进行已认证的 API 请求。
在代码中安全使用身份验证凭证
永远不要在代码中硬编码身份验证凭证(如令牌、密钥或与应用相关的机密)。请考虑使用密钥管理器,例如 Azure Key Vault 或 HashiCorp Vault。有关保护 GitHub App 凭证的更多信息,请参阅 创建 GitHub App 的最佳实践。
如果您发现其他用户的个人访问令牌在 GitHub 或其他地方泄露,您可以通过 REST API 提交吊销请求。参见 吊销。
在脚本中使用个人访问令牌时,建议将令牌存储为 GitHub Actions secret 并通过 GitHub Actions 运行脚本。您也可以将令牌存储为 Codespaces secret 并在 Codespaces 中运行脚本。欲了解更多信息,请参阅 在 GitHub Actions 中使用 secret 和 管理 GitHub Codespaces 的账户专属 secrets。
如果上述方式均不可行,您可以将身份验证凭证存放在 .env 文件中。请务必对 .env 文件进行加密,并且永远不要将其推送到任何仓库。
制定补救计划
您应制定计划,以及时处理任何安全漏洞。如果您的令牌或其他身份验证凭证泄露,您需要
- 生成新的凭证。
- 在所有存储或访问该凭证的地方,用新凭证替换旧凭证。
- 删除已泄露的旧凭证。
有关轮换 GitHub App 被泄露凭证的信息,参见 创建 GitHub App 的最佳实践。
有关创建和删除个人访问令牌的信息,请参阅 管理您的个人访问令牌。