本文提供了可访问 GitHub的所有编程凭据类型的合并参考。 使用此参考资料进行审计活动和管理凭证吊销,尤其是在安全事件期间。
凭据类型概述
下表列出了所有可以以编程方式访问 GitHub的凭据类型。
| 凭据类型 | 凭据前缀 | 寿命 | 撤销 | 关联的 |
|---|---|---|---|---|
| Personal access token (classic) | ghp_ | 长寿命 | 手动 | 用户帐户 |
| Fine-grained personal access token | github_pat_ | 可配置(最多 1 年或无到期时间) | 手动 | 用户帐户 |
[
OAuth app 访问令牌](#oauth-app-access-tokens) | `gho_` | 寿命长 | 手动 | 用户帐户 |
|
GitHub App 用户访问令牌 | ghu_ | 短期(8 小时) | 自动过期或手动 | 用户帐户 |
|
GitHub App 安装访问令牌 | ghs_ | 短期(1 小时) | 自动过期 | 应用安装 |
|
GitHub App 刷新令牌 | ghr_ | 长寿 (6 个月) | 手动 | 用户帐户 |
|
用户 SSH 密钥 | 不適用 | 寿命长 | 手动 | 用户帐户 |
|
部署密钥 | 不適用 | 生存期长 | 手动 | 资料库 |
|
GITHUB_TOKEN
(GitHub Actions) | 不適用 | 短期(工作持续时间) | 自动过期 | 工作流运行 |
凭证撤销
以下部分描述了根据您的角色,每种凭据类型的撤销选项。 另请参阅 令牌过期和吊销。
注意
企业所有者可以选择在重大事件中 执行批量操作 。 请参阅 安全事件的批量操作。
Personal access token (classic)
-
如果令牌 属于你,可以通过个人帐户设置将其删除。 请参阅“管理个人访问令牌”。
-
如果令牌由其他人拥有,并且已知的实际令牌值, 则任何人都可以 提交请求以使用 REST API 撤消它。 API 不需要身份验证 - 具有令牌值的任何人都可以提交它以进行吊销。 请参阅 REST API 文档中的 撤销 。
-
**组织所有者** 和企业 **所有者** 无法直接了解或控制单个令牌。 但是,他们可以:- 如果已知实际令牌值,请使用 REST API 撤消它们。 请参阅 撤销。
- 限制 personal access tokens 对组织或企业的完全访问。 请参阅 为组织设置个人访问令牌策略 和 在企业中强制实施个人访问令牌策略。
-
SSO 强制实施下的组织所有者和企业所有者可以撤销特定 personal access token (classic)的 SSO 授权。 有关详细信息,请参阅 撤销 SSO 授权 。
-
如果推送到公共存储库或代码片段,或者一年内未使用,这将自动撤销。 请参阅“令牌过期和吊销”。
Fine-grained personal access token
-
如果令牌 属于你,可以通过个人帐户设置将其删除。 请参阅“管理个人访问令牌”。
-
如果令牌由其他人拥有,并且已知的实际令牌值, 则任何人都可以 提交请求以使用 REST API 撤消它。 API 不需要身份验证 - 具有令牌值的任何人都可以提交它以进行吊销。 请参阅 REST API 文档中的 撤销 。
-
**组织所有者**:可以查看和撤销单个令牌。 但是,请注意,当组织所有者撤销 A fine-grained personal access token时,令牌创建的任何 SSH 密钥将继续工作,令牌仍能够读取组织内的公共资源。 吊销会将资源所有者从组织更改为用户,用户可以将其重新分配回。 请参阅“[AUTOTITLE](/organizations/managing-programmatic-access-to-your-organization/reviewing-and-revoking-personal-access-tokens-in-your-organization)”。 -
**组织所有者** 和企业 **所有者** 可以:- 使用 REST API 撤销令牌。 请参阅 撤销。
- 限制 personal access tokens 对组织或企业的完全访问。 请参阅 为组织设置个人访问令牌策略 和 在企业中强制实施个人访问令牌策略。
-
如果推送到公共存储库或代码片段,或者一年内未使用,这将自动撤销。 请参阅“令牌过期和吊销”。
OAuth app 访问令牌
* 用户可以 在其 OAuth app 个人帐户设置中撤销其授权,这将撤销与应用关联的任何令牌。 请参阅“审查授权的 OAuth 应用”。
- 如果令牌由其他人拥有,并且已知的实际令牌值, 则任何人都可以 提交请求以使用 REST API 撤消它。 API 不需要身份验证 - 具有令牌值的任何人都可以提交它以进行吊销。 请参阅 REST API 文档中的 撤销 。
-
**组织所有者** 可以拒绝以前批准的 OAuth app组织访问权限。 请参阅“[AUTOTITLE](/enterprise-cloud@latest/organizations/managing-oauth-access-to-your-organizations-data/denying-access-to-a-previously-approved-oauth-app-for-your-organization)”。 - 企业和组织所有者无法直接撤销单个 OAuth app 令牌的 SSO 授权。
- 如果推送到公共存储库或代码片段,或者一年内未使用,这将自动撤销。 请参阅“令牌过期和吊销”。
GitHub App 用户访问令牌
* 用户可以 撤销其个人帐户设置中的授权 GitHub App 。 请注意,这会撤销 所有 组织的授权,而不仅仅是特定的授权。 请参阅“查看和撤销GitHub应用的授权”。
- 如果令牌由其他人拥有,并且已知的实际令牌值, 则任何人都可以 提交请求以使用 REST API 撤消它。 API 不需要身份验证 - 具有令牌值的任何人都可以提交它以进行吊销。 请参阅 REST API 文档中的 撤销 。
-
**组织所有者** 不能直接撤销用户授权,但可以暂停或卸载应用,以防止访问组织资源。 请参阅“[AUTOTITLE](/apps/using-github-apps/reviewing-and-modifying-installed-github-apps)”。 - 企业和组织所有者无法直接撤销单个 GitHub App 用户访问令牌的 SSO 授权。
- 默认情况下,8 小时后自动过期。 请参阅“令牌过期和吊销”。
GitHub App 刷新令牌
* 用户可以 撤销 GitHub App 授权,这也会使关联的刷新令牌失效。 请参阅“查看和撤销GitHub应用的授权”。
- 如果令牌由其他人拥有,并且已知的实际令牌值, 则任何人都可以 提交请求以使用 REST API 撤消它。 API 不需要身份验证 - 具有令牌值的任何人都可以提交它以进行吊销。 请参阅 REST API 文档中的 撤销 。
- 6 个月后自动过期。
GitHub App 安装访问令牌
*
应用所有者 可以通过 DELETE /installation/token 撤销。 请参阅“用于 GitHub App 安装的 REST API 端点”。
*
组织所有者和企业所有者:可以从组织卸载应用,这会停用所有关联的安装令牌。 请参阅“查看和修改已安装GitHub应用”。
- 1 小时后自动过期。
用户 SSH 密钥
-
**用户** 可以通过 **“设置”> SSH 和 GPG 密钥删除凭据**。 请参阅“[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys)”。 - 启用 SSO 的组织所有者和企业所有者GitHub Enterprise Cloud可以撤销特定 SSH 密钥的 SSO 授权。 吊销后,无法重新授权同一密钥 - 用户必须创建新的 SSH 密钥。 有关详细信息,请参阅 撤销 SSO 授权 。
- 如果一年内未使用,则自动删除。 请参阅“已删除或缺少的 SSH 密钥”。
有关 SSH 密钥的详细信息,请参阅 将新的 SSH 密钥添加到GitHub帐户。
部署密钥
-
**存储库管理员**可以通过存储库设置 > 安全 > 部署密钥删除密钥。 还可以通过部署密钥 REST API 获得。 请参阅 [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys)。 -
**组织所有者** 可以在整个组织中完全禁用部署密钥,这会禁用所有现有部署密钥。 请参阅 [AUTOTITLE](/organizations/managing-organization-settings/restricting-deploy-keys-in-your-organization)。 -
**企业所有者** 可以强制实施策略来禁用跨所有存储库的部署密钥。 请参阅“[AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)”。
有关部署密钥的详细信息,请参阅 管理部署密钥。
`GITHUB_TOKEN`(GitHub Actions)
*
自动过期:在 GITHUB_TOKEN 每个工作流作业的开头创建,并在作业完成时过期。 没有手动吊销机制。 在事件发生期间,可以在存储库上禁用 GitHub Actions ,以防止颁发新令牌。
如需了解有关 GITHUB_TOKEN 的更多信息,请参阅 GITHUB_TOKEN。
SSO 授权
当企业级别需要单一登录(SSO),在组织级别强制执行或为组织启用并且成员已关联标识时,必须先为组织授权某些凭据类型,然后才能访问组织资源。 下表指示可为组织授权哪些凭据类型。
| 令牌类型 | 支持 SSO 授权 | 管理员可以撤销 SSO 授权 |
|---|---|---|
| Personal access token (classic) | ||
| Fine-grained personal access token |
OAuth app 访问令牌 |
<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Yes" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>
[^1] | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="No" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |
|
GitHub App 用户访问令牌 |
[^1] | |
|
GitHub App 安装访问令牌 |
(不需要) | 不適用 |
|
GitHub App 刷新令牌 | | 不適用 |
| 用户 SSH 密钥 | | |
| 部署密钥 |
(存储库范围) | 不適用 |
|
GITHUB_TOKEN(GitHub Actions) |
(存储库范围) | 不適用 |
[^1]: SSO authorization is granted automatically when the user authorizes the app during an active SAML or OIDC session. These authorizations are not visible to users or admins in the GitHub UI, and are not returned by the [List SAML SSO authorizations for an organization](/rest/orgs/orgs#list-saml-sso-authorizations-for-an-organization) REST API endpoint.
有关如何为 SSO 授权凭据的信息,请参阅 授权个人访问令牌以与单点登录一起使用、 管理个人访问令牌 和 将 SSH 密钥授权用于单点登录。
撤销 SSO 授权
在 GitHub Enterprise Cloud 强制实施 SSO 的情况下,当凭据支持 SSO 授权时,有两个独立的包含选项:
-
**删除或撤销凭据本身**:永久删除与凭据关联的所有访问权限。 有关谁可以执行此操作,请参阅上面的单个凭据类型部分。 -
**撤销凭据的 SSO 授权**:阻止凭据访问特定组织的资源,而无需删除它。 用户吊销后无法重新授权同一凭据的权限,他们必须创建新的凭据。
企业管理员和组织所有者可以撤销对上表中标记的凭据类型的 SSO 授权:
-
**组织所有者** 可以通过用户界面管理具有组织级 SSO 的组织的 SSO GitHub 授权。 请参阅“[AUTOTITLE](/enterprise-cloud@latest/organizations/granting-access-to-your-organization-with-saml-single-sign-on/viewing-and-managing-a-members-saml-access-to-your-organization)”。 -
**企业所有者** 可以通过 GitHub 用户界面管理具有企业级 SSO(包括 Enterprise Managed Users)的企业的 SSO 授权。 请参阅“[AUTOTITLE](/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-and-managing-a-users-saml-access-to-your-enterprise#viewing-and-revoking-authorized-credentials)”。
还可以通过 REST API 管理 SSO 授权。 请参阅“适用于组织的 REST API 终结点”。
在安全事件期间,企业所有者可以批量撤销 SSO 授权。 请参阅 安全事件的批量操作。
批量安全事件处理
在发生重大安全事件期间,企业所有者 GitHub Enterprise Cloud 可以采取一些企业级批量操作来快速响应。 这些操作会影响用户 SSH 密钥、 OAuth app 用户访问令牌、 GitHub App 用户访问令牌 personal access tokens (classic)和 fine-grained personal access tokens。 它们不会影响GitHub App安装访问令牌、部署密钥或 GITHUB_TOKEN。
警告
这些是应当留作处理重大安全事件的高影响措施。 它们可能会中断自动化,可能需要数月才能还原原始状态。
-
**锁定 SSO**:暂时阻止除企业所有者以外的所有用户的 SSO,从而阻止访问受 SSO 保护的资源。 适用于 Enterprise Managed Users 或使用 SSO 的企业。 请参阅“[AUTOTITLE](/enterprise-cloud@latest/admin/managing-iam/respond-to-incidents/lock-down-sso)”。 -
**撤销所有 SSO 授权**:删除企业中所有组织中的用户凭据的 SSO 授权。 不会删除凭据,但无法访问受 SSO 保护的组织资源。 吊销后,无法重新授权凭据 — 用户必须创建新凭据。 适用于 Enterprise Managed Users 或使用 SSO 的企业。 请参阅“[AUTOTITLE](/enterprise-cloud@latest/admin/managing-iam/respond-to-incidents/revoke-authorizations-or-tokens)”。 -
**删除所有用户令牌和密钥**:完全删除用户凭据,删除所有访问权限。 Enterprise Managed Users **仅适用于**。 请参阅“[AUTOTITLE](/enterprise-cloud@latest/admin/managing-iam/respond-to-incidents/revoke-authorizations-or-tokens)”。
注意
对于使用 SSO 的个人帐户(非 EMU)的企业,“删除所有令牌和密钥”选项 不可用。 “撤销 SSO 授权”操作会阻止访问受 SSO 保护的组织资源,但不会阻止凭据访问不强制 SSO 的组织中的企业级终结点或资源。 对于没有 SSO 的企业,两个批量操作都不可用。