如果您使用,并已为你的 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”页面上。
- 用户的用户名会被混淆为原始用户名的哈希值上的企业,后面会加上
_SHORTCODE。 - 使用 Entra ID 时,用户的电子邮件地址保持不变。 在所有其他情况下,用户的电子邮件将被模糊处理。
- 用户的 SCIM 身份仍与其在GitHub上的用户账户关联。 使用 Entra ID 时,
active属性值在其存储的链接 SCIM 标识中的值将从True更新为False。 - 如果用户拥有私有或内部代码库的派生库,这些派生库将在 24 小时内被删除。 如果用户在 90 天内取消暂停,复刻将被恢复。
- 如果用户是任何 SCIM 预配的 IdP 组的成员,他们将从这些组中隐藏,并从映射到这些组的任何团队中移除。 请注意,即使该用户仍然是 IdP 端的组成员,也会发生这种情况。
- 如果组织成员身份由 IdP 组管理,当用户从这些 IdP 组中移除,或从与映射到组织中 IdP 组的所有团队中移除时,其将被移出所属组织****。
- 如果组织成员身份采用直接管理方式,则用户将作为组织的“已停用成员”保留(无访问权限),直至被手动移除****。
硬取消预配的影响
- 用户帐户将被暂停使用并失去对你企业和任何专用资源的访问权限********。
- 当用户帐户被暂停后,该帐户将列在“Suspended members”页面上,而不是企业设置的“People”部分中的“Members”页面上。
- 用户的用户名会被混淆为原始用户名的哈希值的企业,则后跟
_SHORTCODE。 - 用户的电子邮件地址将被模糊处理。
- 用户的显示名称设置为空字符串。
- 将删除与用户关联的 SCIM 标识,包括所有用户的 SCIM 属性。
- 用户 personal access tokens、 fine-grained personal access tokensSSH 密钥、GPG 密钥和应用程序授权将被删除。 删除密钥可能会影响提交验证。 请参阅“关于提交签名验证”。
- 用户拥有的仓库将被删除。
- 将保留用户创建的资源(如注释)****。
- 如果用户是任何 SCIM 预配的 IdP 组的成员,他们将从这些组中隐藏,并从映射到这些组的任何团队中移除。 请注意,即使该用户仍然是 IdP 端的组成员,也会发生这种情况。
- 如果组织成员身份由 IdP 组管理,当用户从这些 IdP 组中移除,或从与映射到组织中 IdP 组的所有团队中移除时,其将被移出所属组织****。
- 如果组织成员身份采用直接管理方式,则用户将作为组织的“已停用成员”保留(无访问权限),直至被手动移除****。
触发解除资源分配的操作
不同的操作触发软去配置和硬去配置,触发条件根据 SCIM 集成的不同而变化。 通常,你在“现成路径”IdP 应用程序中执行的大多数操作仅触发软取消预配,部分例外情况除外。
软取消预配的触发条件
| SCIM 集成 | 软取消预配的触发条件 |
|---|---|
| REST API | 将 PUT 或 PATCH 请求发送到 /scim/v2/Users/{scim_user_id},同时将用户的 active 字段更新为 false。 |
| Entra ID | 用户帐户在 Entra ID 中被禁用、从应用程序中被取消分配、从所有已分配的组中移除,或由管理员从租户中删除。有关详细信息,请参阅 Microsoft 文档中软删除。 |
| Okta | 用户帐户从应用程序中被取消分配、从所有已分配的组中移除,或通过“Deactivate”按钮被停用。 请注意,“暂停”按钮不会向该 GitHub按钮发送请求。 Okta 仅发送软取消预配调用。 |
| PingFederate | 用户帐户被暂停使用、禁用,或从由预配程序定位的用户存储中移除。 |
硬取消预配的触发条件
| SCIM 集成 | 硬取消预配的触发条件 |
|---|---|
| REST API | 将 DELETE 请求发送到 /scim/v2/Users/{scim_user_id}。 |
| Entra ID | 硬删除 Entra ID 用户帐户,如Microsoft文档中硬删除一节所述。 被软删除的 Entra ID 用户(可在 Entra ID 管理门户的“Users”>“Deleted users”页面中找到)将在软删除 30 天后由 Entra ID 自动硬删除。 |
| Okta | 不适用。 Okta 不发送硬取消预配调用。 |
| PingFederate | 如果由于配置错误导致“移除用户操作”设置设置为“删除”而非“禁用”,此操作将发送硬取消预配调用。 请参阅 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 API | 将 PUT 或 PATCH 请求发送到 /scim/v2/Users/{scim_user_id},同时将用户的 active 字段更新为 true。 |
恢复已硬取消预配的用户帐户
您无法恢复GitHub通过 SCIM 被硬停配的用户帐户。 相反,你需要为用户预配一个新 GitHub 帐户。
你可以在预配新帐户时复用被硬取消预配用户的用户名。 但是,无法将硬预配的用户帐户与新用户帐户合并。GitHub
- 如果硬预配用户的电子邮件地址和新用户匹配, GitHub 则会将与电子邮件地址关联的现有 Git 提交归因于新用户。
- 原始用户创建的现有资源和注释不会与新用户相关联****。
审核日志事件
企业审核日志显示有关企业中活动的详细信息。 可以使用审核日志来支持 SCIM 的配置。 有关详细信息,请参阅“企业审核日志”。
重要
我们强烈建议企业所有者启用企业审核日志功能,例如审核日志流式处理、源 IP 披露以及 API 请求流式传输选项。 这些事件的流式处理可帮助管理员设定符合业务需求的日志保留策略,并使用自己偏好的工具对这些日志进行查询。
软取消预配事件
当你软取消设置用户时,external_identity.update 事件不会显示在审核日志中。 以下事件显示在审核日志中:
user.suspenduser.remove_emailuser.renameexternal_identity.deprovision- 如果请求成功,
external_identity.scim_api_success - 如果请求失败,
external_identity.scim_api_failure - 如果用户是映射到团队
team.remove_member的任何 IdP 组的成员 - 如果用户在组织中的成员身份由 IdP 管理,并且他们从组织中映射到 IdP 组的所有团队中移除,
org.remove_member
硬取消预配事件
external_identity.deprovisionuser.remove_email- 如果请求成功,
external_identity.scim_api_success - 如果请求失败,
external_identity.scim_api_failure - 如果用户是映射到团队
team.remove_member的任何 IdP 组的成员 - 如果用户在组织中的成员身份由 IdP 管理,并且他们从组织中映射到 IdP 组的所有团队中移除,
org.remove_member
重新预配事件
重新激活用户时,external_identity.update 事件不会显示在审核日志中。 以下事件显示在审核日志中:
user.unsuspenduser.remove_emailuser.renameexternal_identity.provision- 如果请求成功,
external_identity.scim_api_success - 如果请求失败,
external_identity.scim_api_failure - 如果用户是属于通过 SCIM 预配的 IdP 组的成员,并且此组被映射到组织中的某个团队,
org.add_member