关于从 LDAP 迁移到 SAML 和 SCIM
如果你的 GitHub Enterprise Server 实例当前使用 LDAP 身份验证,你可以迁移到带有 SCIM 预配的 SAML 单点登录 (SSO),以增强用户生命周期管理功能。 通过此迁移,可以从身份提供商(IdP)自动预配、更新和取消预配用户帐户。
注意
可以使用 SAML 或 LDAP,但不能同时使用两者。
**先决条件**:
- 你必须是 GitHub Enterprise Server 的站点管理员。
- 必须具有对 SAML 标识提供者的管理访问权限。
- IdP 必须支持 SAML 2.0 和 SCIM 2.0 协议。
- 在开始迁移之前,应先完成实例的备份。
SCIM 预配需要 SAML 身份验证作为先决条件,因此此迁移涉及四个不同的阶段:
-
**迁移到 SAML 身份验证**:将 LDAP 替换为 SAML SSO。 -
**测试和验证 SAML**:确认身份验证正常工作,用户链接正确。 -
**启用 SCIM 预配**:添加自动化用户管理功能。 -
**测试和验证 SCIM**:确认账户预配中的身份标识与现有账户相链接。
本文档假定熟悉 SAML 身份验证和 SCIM 预配。 有关这些主题的详细信息,请参阅 为企业配置 SAML 单点登录 和 关于在 GitHub Enterprise Server 上使用 SCIM 进行用户预配。
1.了解 LDAP 与 SCIM 用户创建模式
在开始迁移之前,了解 LDAP 和 SCIM 在 GitHub Enterprise Server 上处理用户管理的关键差异非常重要。
| Attribute | LDAP | SCIM |
|---|
**设备配置** | 在管理控制台中配置用户 ID 属性(默认值 `uid`)和其他 LDAP 设置。 此配置确定如何在 LDAP 用户与GitHub用户之间进行映射。 有关配置 LDAP 的详细信息,请参阅 [AUTOTITLE](/admin/managing-iam/using-ldap-for-enterprise-iam/using-ldap#ldap-attributes)。 | 首先启用 SAML 身份验证,然后使用身份验证令牌配置 SCIM 预配。 |
|
用户创建时机 | 实时:用户在成功 LDAP 身份验证后首次登录时创建。 | 预身份验证:用户必须先通过 SCIM 进行预配,然后才能进行身份验证。 |
|
初始用户名源 | GitHub用户名基于安装过程中配置的规范化 LDAP 标识符。 | GitHub用户名基于 IdP 中的规范化 SCIM userName 值。 |
|
用户名管理 | 灵活:管理员可以独立于 LDAP 更改GitHub用户名。 用户名可能会随时间推移而偏离 LDAP 标识符,同时通过 LDAP 映射维护身份验证。 请参阅“用户名参考”。 | 严格:GitHub用户名始终与 IdP 中的规范化 SCIM userName相对应。 不允许GitHub端的用户名更改。 |
|
用户属性控件 | 混合:一些由 LDAP 管理的属性,其他属性可以在设备上管理。 | IdP 的全面管理:所有用户属性都通过来自 IdP 的 SCIM 更新进行管理。 |
|
身份验证流程 | GitHub Enterprise Server 对 LDAP 服务器进行身份验证,并查找现有的 LDAP 映射来定位用户。 | 在 SAML SSO 期间,将执行外部标识查找以查找预配的用户进行身份验证。 |
|
关键特征 | 混合系统,其中GitHub用户数据(尤其是用户名)可以独立于 LDAP 服务器在设备上进行部分管理。 | 完全标识提供者控制:GitHub用户的状态完全取决于 IdP 通过 SCIM 发送的内容,并且用户名无法偏离源系统。 |
用户名规范化和兼容性
GitHub Enterprise Server 根据适用于 LDAP、SAML 和 SCIM 的特定规则,统一规范用户名。 了解这些规则对于成功迁移至关重要。
有关用户名规范化的详细信息,请参阅 外部身份验证的用户名注意事项。
2.规划迁移
在开始迁移之前,需要了解当前设置、准备标识提供者并建立备份访问方法。 规划阶段对于确保平稳过渡至关重要。
准备从 LDAP 映射到 SCIM
关键迁移挑战在于 LDAP 与 SCIM 用户管理方法之间的桥接:
**LDAP 用户(现有状态)**:
-
自初始创建以来可能已更改的GitHub用户名
-
通过 LDAP 映射保留身份验证功能,而不考虑用户名更改
**SCIM 用户(目标状态)**: -
必须在身份验证之前预配
-
必须具有与规范化 SCIM
userName值匹配的GitHub用户名 -
可以在 SCIM 用户预配期间使用其现有GitHub帐户链接到外部标识,但前提是规范化 SCIM
userName与其现有GitHub用户名匹配
迁移映射要求
若要成功将 SCIM 标识链接到现有 LDAP 用户,需要捕获实例上用户的当前状态:
-
**Export 现有GitHub用户名**:使用站点管理员界面、API 或 CLI 获取实例上当前GitHub用户名的完整列表。 有关用户 API 的详细信息,请参阅 [AUTOTITLE](/rest/users/users?apiVersion=2022-11-28#list-users)。 有关用于导出用户的命令行实用工具的详细信息,请参阅 [AUTOTITLE](/admin/administering-your-instance/administering-your-instance-from-the-command-line/command-line-utilities#ghe-user-csv)。 -
**将 GitHub 用户名映射到企业 IdP 中的真实用户**:确定哪些身份对应于您企业中的每个 GitHub 用户名。 -
**配置 SCIM `userName` 属性**:确保 IdP 使用与要链接的现有GitHub用户名匹配的 `userName` 值预配 SCIM 用户。 **Important**:映射的目标始终是实例上的**current GitHub username**,而不是原始 LDAP 用户 ID 或任何其他标识符。
关键规划注意事项
**重要注意事项:**
* 需要停机:此迁移需要在维护时段内停机才能更改身份验证设置。 * 用户影响:迁移后,用户需要通过 SAML IdP 而不是 LDAP 凭据进行身份验证。 * 团队成员身份:如果 IdP 支持,LDAP 团队同步将替换为 SCIM 组预配。 与 LDAP 映射的团队需要在适用的情况下使用适当的 SCIM 组进行更新。
获取 LDAP 配置的状态
记录当前的 LDAP 设置以规划等效的 SAML/SCIM 映射:
- 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击“”。
- 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。1. 在“ 站点管理”边栏中,单击“管理控制台”****。1. 在“设置”边栏中,单击“身份验证”。
- 记录以下 LDAP 设置: * 域基础 和受限用户组 * User ID 属性(用于创建GitHub用户名) * 配置文件名称、电子邮件和其他属性映射 * 管理员组配置 * 团队同步设置
- 确保你已保存实例上将要链接到 SCIM 标识的现有用户列表。
3.迁移到 SAML 和 SCIM
完成规划后,即可开始从 LDAP 迁移到 SAML 身份验证。 这包括在你的标识提供商和 GitHub Enterprise Server 上配置 SAML,然后在继续配置 SCIM 之前仔细测试该配置。
**重要说明**:配置 SAML 时,启用“允许创建具有内置身份验证的帐户”,以减少启用 SCIM 时所需的步骤数。
启用 SAML 身份验证
有关详细的 SAML 配置步骤,请参阅 为企业配置 SAML 单点登录。
启用 SAML 后,在继续 SCIM 之前测试身份验证系统。 将任何 IdP 帐户分配给针对实例配置的 SAML 应用程序后,请验证是否能够成功执行 SSO 登录。
**在 SAML 身份验证正常工作之前,请不要继续 SCIM。**
启用 SCIM 预配
确认 SAML 身份验证正常工作后,可以启用 SCIM 进行自动化用户管理。 必须在 GitHub Enterprise Server 和你的标识提供商上都配置 SCIM。
有关启用 SCIM 的详细步骤,请参阅 配置 SCIM 预配 (用于管理用户)。
测试 SCIM 配置功能
测试 SCIM 预配,以确保 SCIM 预配的用户正确链接到现有用户帐户。
对于已从 LDAP/SAML 迁移中拥有帐户的用户:
-
**在你的 IdP 中将用户分配到 SCIM 应用程序** 。 -
**验证自动链接**:检查 SCIM 是否自动链接到现有帐户:- 用户保留相同的用户名和帐户数据
- 不会创建重复帐户
- SCIM 标识在企业设置和站点管理员界面中显示为已链接。 有关详细信息,请参阅“查看和管理用户对企业的 SAML 访问”。
-
**查看审核日志**:查找显示成功链接到现有用户的`external_identity.scim_api_success`和`external_identity.provision`事件。
对于未曾出现在您实例中的新用户:
-
**验证用户创建**:检查用户是否出现在 GitHub Enterprise Server 中,并具有正确的属性。 -
**测试身份验证**:确认新用户可以通过 SAML 进行身份验证。 -
**测试属性更新**:更新 IdP 中的用户信息并确认更改同步。 -
**测试撤销配置**:删除用户访问并确认其已禁用。
向所有用户推出 SCIM
对于尚未通过 SCIM 预配的所有剩余用户:
-
**逐渐将用户分配到** IdP 中的 GitHub Enterprise Server 应用程序。 -
**监视链接过程**:根据用户名匹配监视成功的自动链接。 -
**跟踪进度**:使用审核日志监视 `external_identity` 事件以链接进度。 -
**解决任何冲突**:解决出现的用户名冲突或映射冲突问题。
4. 更新团队和组织成员身份
迁移后,如果以前使用 LDAP 组同步来控制团队成员身份,则可以将这些团队映射替换为 SCIM 组。 如果重用现有团队,则需要在链接 IdP 组之前删除所有团队成员。
有关详细信息,请参阅“使用标识提供者组管理团队成员身份”。