Skip to main content

使用 SCIM 取消预配和恢复用户

Learn details about deprovisioning or reinstating users.

谁可以使用此功能?

Enterprises that use Enterprise Managed Users, or GitHub Enterprise Server instances with SCIM enabled

注意

在当前版本的 GitHub Enterprise Server 中,SCIM 支持处于beta 版本阶段。 SCIM 支持已在版本 3.17 及更高版本中正式发布。

如果你为 你的 GitHub Enterprise Server 实例 启用了 SCIM,你可使用 SCIM 实现以下目的:

  • 取消预配用户和组以删除其访问权限。
  • 重新预配之前已取消预配的用户。

在取消预配用户之前,请务必了解取消预配产生的影响,具体取决于 GitHub 从标识提供者接收到的取消预配 API 调用的类型****。

重要

在继续阅读之前,请确保你已了解企业实现 SCIM 的方法。 如果使用同时支持身份验证和预配的标识提供者 (IdP),GitHub 将提供一个“标准化”应用程序。 如果不使用标准化应用程序,可使用 REST API 发出 SCIM 请求。 请参阅“关于在 GitHub Enterprise Server 上使用 SCIM 进行用户预配”。

用户取消预配的类型

当某个用户被取消预配时,其 GitHub 帐户将被暂停使用,这意味着该用户将无法访问你的企业帐户****。 无论取消预配的类型,被取消预配的帐户都不会从企业帐户中删除。

GitHub 从标识提供者接收到的取消预配调用类型,决定了被取消预配的用户是否能够被取消暂停(恢复)。

  • 软取消预配****:在某些情况下,可以通过 SCIM 集成来取消暂停用户帐户。
  • 硬预配****:无法取消暂停用户帐户。 如果用户需要重新获得访问权限,则必须预配一个新帐户。

取消预配用户的影响

当你通过 IdP 或 REST API 取消预配用户帐户时,GitHub 将对该用户帐户进行更改。

软取消预配的影响

  • 用户帐户将被暂停使用并失去对你企业和任何专用资源的访问权限********。
  • 当用户帐户被暂停后,该帐户将列在“Suspended members”页面上,而不是企业设置的“People”部分中的“Members”页面上。
  • 该用户的用户名将被模糊处理为原始用户名的哈希****。
  • 使用 Entra ID 时,用户的电子邮件地址保持不变。 在所有其他情况下,用户的电子邮件将被模糊处理。
  • 用户的 SCIM 标识仍链接到 GitHub 上的用户帐户。 使用 Entra ID 时,active 属性值在其存储的链接 SCIM 标识中的值将从 True 更新为 False
  • 如果用户拥有专用或内部仓库的分支,这些分支将在 24 小时内被删除。 如果用户在 90 天内被恢复,其分支将自动还原。
  • 如果该用户是通过 SCIM 预配的 IdP 组的成员,则其帐户将从这些组中隐藏,并从映射到这些组的任何团队中删除。 请注意,即使该用户仍然是 IdP 端的组成员,也会发生这种情况。
  • 如果组织成员身份由 IdP 组管理,当用户从这些 IdP 组中移除,或从与映射到组织中 IdP 组的所有团队中移除时,其将被移出所属组织****。
  • 如果组织成员身份采用直接管理方式,则用户将作为组织的“已停用成员”保留(无访问权限),直至被手动移除****。

硬取消预配的影响

  • 用户帐户将被暂停使用并失去对你企业和任何专用资源的访问权限********。
  • 当用户帐户被暂停后,该帐户将列在“Suspended members”页面上,而不是企业设置的“People”部分中的“Members”页面上。
  • 该用户的用户名将被模糊处理为原始用户名的哈希****。
  • 用户的电子邮件地址将被模糊处理。
  • 用户的显示名称设置为空字符串。
  • 将删除用户链接的 SCIM 标识(包括所有用户的 SCIM 属性)。
  • 将删除用户的 personal access tokens、fine-grained personal access tokens、SSH 密钥、GPG 密钥和应用程序授权。 删除密钥可能会影响提交验证。 请参阅“关于提交签名验证”。
  • 将删除用户拥有的仓库。
  • 将保留用户创建的资源(如注释)****。
  • 如果该用户是通过 SCIM 预配的 IdP 组的成员,则其帐户将从这些组中隐藏,并从映射到这些组的任何团队中删除。 请注意,即使该用户仍然是 IdP 端的组成员,也会发生这种情况。
  • 如果组织成员身份由 IdP 组管理,当用户从这些 IdP 组中移除,或从与映射到组织中 IdP 组的所有团队中移除时,其将被移出所属组织****。
  • 如果组织成员身份采用直接管理方式,则用户将作为组织的“已停用成员”保留(无访问权限),直至被手动移除****。

触发取消预配的操作

不同的操作会触发软取消预配和硬取消预配,触发器因 SCIM 集成而异。 通常,在“标准化”IdP 应用程序中执行的大多数操作仅触发软取消预配,但有一些例外情况****。

软取消预配触发器

SCIM 集成软取消预配触发器
REST APIPUTPATCH 请求发送到 /scim/v2/Users/{scim_user_id},同时将用户的 active 字段更新为 false
Entra ID用户帐户在 Entra ID 中被禁用、从应用程序中被取消分配、从所有已分配的组中移除,或由管理员从租户中删除。有关详细信息,请参阅 Microsoft 文档中软删除
Okta用户帐户从应用程序中被取消分配、从所有已分配的组中移除,或通过“Deactivate”按钮被停用。 请注意,使用“Suspend”按钮不会向 GitHub 发送请求。 Okta 仅发送软取消预配调用。
PingFederate用户帐户被暂停使用、禁用,或从由预配程序定位的用户存储中移除。

硬取消预配触发器

SCIM 集成硬取消预配触发器
REST APIDELETE 请求发送到 /scim/v2/Users/{scim_user_id}
Entra ID硬删除 Entra ID 用户帐户,如Microsoft文档中硬删除中所述。 被软删除的 Entra ID 用户(可在 Entra ID 管理门户的“Users”>“Deleted users”页面中找到)将在软删除 30 天后由 Entra ID 自动硬删除。
Okta不适用。 Okta 不会发送硬取消预配调用。
PingFederate如果由于配置错误将“Remove User Action”设置为了“Delete”而非“Disable”,此操作将发送一个硬取消预配调用。 请参阅 PingIdentity 文档

恢复被软取消预配的用户帐户

要恢复用户的访问权限和帐户详情,可以重新预配被软停用的用户帐户,但前提是 IdP 用户帐户仍然相同。 IdP 用户帐户必须一致,这是因为被软取消预配的用户帐户仍基于 SCIM external ID(IdP 用户对象 ID)和 SCIM User ID,与外部标识相关联。 已与单个被软取消预配的用户帐户关联的外部标识不可更改。

重新预配的影响

  • 当用户被取消暂停后,其对企业的访问权限将恢复。
  • 用户的用户名和电子邮件地址将被还原。
  • 如果用户是某个由 SCIM 预配的 IdP 组的成员,且该组被映射到某个组织的团队中,则该用户在其用户帐户被重新预配后,会立即被添加到该组织。 如果该用户曾是该组织的成员,且被移除未超过 90 天,那么其成员身份就会恢复。 请参阅“Reinstating a former member of your organization(恢复组织前成员的身份)”。
  • 如果该用户不是映射到组织团队的由 SCIM 预配的 IdP 组的成员,那么在其帐户重新预配后,GitHub 组织所有者需要手动将其添加回组织。
  • 如果用户在暂停后 90 天内被取消暂停,其已删除的分支也会还原。
  • 与该用户关联的其他项也会一并还原,包括:
    • GitHub Apps、OAuth apps 和应用授权
    • Personal access tokens
    • SSH 密钥
    • 令牌和密钥授权
    • 用户拥有的仓库

触发取消预配的操作

如何重新预配一个用户,取决于你的 SCIM 集成方式以及触发软取消预配的操作:

SCIM 实现重新预配用户的操作
Entra ID重新启用已禁用的帐户,或将用户重新分配给应用程序(可直接分配,也可通过所属组分配)。 等待约 40 分钟以让更改生效,或使用“Provision on Demand”按钮以加快处理。
Okta重新激活帐户,或将用户重新分配给应用程序(可直接分配,也可通过组分配)。
PingFederate在用户存储中取消暂停或重新启用用户,或将用户重新添加到由预配程序定位的组或筛选器中。
REST APIPUTPATCH 请求发送到 /scim/v2/Users/{scim_user_id},同时将用户的 active 字段更新为 true

恢复被硬取消预配的用户帐户

你无法恢复通过 SCIM 被硬取消预配的 GitHub 用户帐户****。 相反,你将需要为该用户预配一个新的 GitHub 帐户。

你可以在预配新帐户时复用被硬取消预配用户的用户名。 但无法将已被硬取消预配的用户帐户与 GitHub 上的新帐户合并。

  • 如果已进行硬撤销的用户的电子邮件地址与新用户相匹配,GitHub 会将与该电子邮件地址关联的现有 Git 提交归属于新用户。
  • 原始用户创建的现有资源和注释不会与新用户相关联****。

审核日志事件

企业审核日志显示有关企业中活动的详细信息。 可以使用审核日志来支持 SCIM 的配置。 有关详细信息,请参阅“关于企业的审核日志”。

重要

我们强烈建议企业所有者启用企业审核日志功能,例如审核日志流式处理、源 IP 披露以及 API 请求流式传输选项。 这些事件的流式处理可帮助管理员设定符合业务需求的日志保留策略,并使用自己偏好的工具对这些日志进行查询。

软取消预配事件

当你软取消设置用户时,external_identity.update 事件不会显示在审核日志中。 以下事件显示在审核日志中:

  • user.suspend
  • user.remove_email
  • user.rename
  • external_identity.deprovision
  • 如果请求成功,external_identity.scim_api_success
  • 如果请求失败,则说明 external_identity.scim_api_failure
  • 如果用户是映射到团队的任何 IdP 组的成员,team.remove_member
  • 如果用户在组织中的成员身份由 IdP 管理,且其已从所有映射到组织中 IdP 组的团队中移除,org.remove_member

硬取消预配事件

  • external_identity.deprovision
  • user.remove_email
  • 如果请求成功,external_identity.scim_api_success
  • 如果请求失败,则说明 external_identity.scim_api_failure
  • 如果用户是映射到团队的任何 IdP 组的成员,team.remove_member
  • 如果用户在组织中的成员身份由 IdP 管理,且其已从所有映射到组织中 IdP 组的团队中移除,org.remove_member

取消预配事件

重新激活用户时,external_identity.update 事件不会显示在审核日志中。 以下事件显示在审核日志中:

  • user.unsuspend
  • user.remove_email
  • user.rename
  • external_identity.provision
  • 如果请求成功,external_identity.scim_api_success
  • 如果请求失败,则说明 external_identity.scim_api_failure
  • 如果用户是通过 SCIM 预配的 IdP 组的成员,并且此组映射到组织中的团队,org.add_member

其他阅读材料