SCIM 配置
跨域身份管理(SCIM)功能适用于 Docker Business 客户。本指南将简要介绍 SCIM 配置功能。
SCIM 的工作原理
SCIM 通过您的身份提供商(IdP)为 Docker 提供自动化的用户配置和取消配置功能。启用 SCIM 后,分配给您 IdP 中 Docker 应用程序的用户将被自动配置并添加到您的 Docker 组织中。如果某位用户被取消分配,则其将被从 Docker 中移除。
SCIM 还可以同步您在身份提供商(IdP)中进行的用户资料更新,例如姓名变更。SCIM 可与 Docker 默认的即时(Just-in-Time, JIT)配置配合使用,也可在禁用 JIT 的情况下独立使用。
SCIM 支持自动化以下内容:
- 创建用户
- 更新用户资料
- 移除和停用用户
- 重新激活用户
- 组映射
支持的属性
重要
Docker 默认为 SSO 配置使用即时配置(JIT provisioning)。如果您启用了 SCIM,JIT 的值仍将覆盖 SCIM 配置所设置的属性值。为避免冲突,您的 JIT 属性值必须与 SCIM 属性值保持一致。您也可以通过禁用 JIT 配置来避免 SCIM 与 JIT 之间的冲突。有关更多信息,请参见即时配置(Just-in-Time)。
属性是用户信息片段,例如姓名和电子邮件,在使用SCIM时会在您的身份提供商(IdP)与Docker之间进行同步。正确映射这些属性对于实现用户无缝配置以及在使用单点登录(SSO)时防止重复条目至关重要。
以下表格列出了 SCIM 支持的属性:
| 属性 | 描述 |
|---|---|
| 用户名 | 用户的主电子邮件地址,用作唯一标识符 |
| name.givenName | 用户的名字 |
| name.familyName | 用户姓氏 |
| active | 指示用户是否已启用或禁用,设置为“false”以停用用户 |
有关受支持属性和SCIM的更多详细信息,请参阅 Docker Hub API SCIM 参考文档。
在 Docker 中启用 SCIM
您必须 配置单点登录(SSO),然后才能启用SCIM。强制使用SSO并非使用SCIM的必要条件。
- 登录到 管理控制台。
- 在左侧导航下拉菜单中选择您的组织或公司,然后选择 SSO 和 SCIM。
- 在 SSO 连接表格中,选择 操作 图标和 设置 SCIM。
- 复制 SCIM 基础 URL 和 API 令牌,并将其粘贴到您的身份提供商(IdP)中。
- 登录到 Docker Hub。
- 导航至您所在组织或公司的单点登录(SSO)设置页面。
- 组织:选择 Organizations(组织),再选择您的组织,然后选择 Settings(设置),最后选择 Security(安全)。
- 公司:选择 Organizations(组织),再选择您的公司,然后选择 Settings(设置)。
- 在 SSO 连接表格中,选择 操作 图标和 设置 SCIM。
- 复制 SCIM 基础 URL 和 API 令牌,并将其粘贴到您的身份提供商(IdP)中。
在您的身份提供商(IdP)中启用 SCIM
您的身份提供商(IdP)的用户界面可能与以下步骤略有不同。您可参考您所用IdP的文档进行核对。如需更多详情,请参阅您IdP的文档:
启用 SCIM
- 登录 Okta 并选择 管理员 以打开管理员门户。
- 打开您在配置单点登录(SSO)连接时创建的应用程序。
- 在应用程序页面中,选择常规选项卡,然后点击编辑应用设置。
- 启用 SCIM 配置,然后选择 保存。
- 现在您可以在 Okta 中访问 供应 选项卡。导航至该选项卡,然后选择 编辑 SCIM 连接。
- 要配置 Okta 中的 SCIM,请使用以下值和设置建立连接:
- SCIM 基础 URL:SCIM 连接器基础 URL(从 Docker Hub 复制)
- 用户的唯一标识字段:
email - 支持的供应操作:推送新用户 和 推送配置文件更新
- 认证模式:HTTP 头部
- SCIM Bearer Token:HTTP 头部 Authorization Bearer Token(从 Docker Hub 复制)
- 选择 测试连接器配置。
- 查看测试结果并选择 保存。
启用同步
- 在 Okta 中,选择 配置。
- 选择 转到应用,然后选择 编辑。
- 启用 创建用户、更新用户属性 和 停用用户。
- 选择 保存。
- 移除不必要的映射。必需的映射如下:
- 用户名
- 名字
- 姓氏
- 电子邮件
- 在 Azure 管理门户中,转到 企业应用程序,然后选择您在设置单点登录(SSO)连接时创建的 Docker 应用程序。
- 选择 配置,然后选择 开始使用。
- 选择 自动 配置模式。
- 在 管理凭据 表单中输入 Docker 提供的 SCIM 基础 URL 和 API 令牌。
- 测试连接,然后选择 保存。
- 转到 映射,然后选择 配置 Azure Active Directory 组。
- 将 Enabled 值设置为 No。
- 选择 供应 Azure Active Directory 用户。
- 移除所有不支持的属性。
- 选择 保存。
- 将配置状态设置为 开启。
设置角色映射
您可以在身份提供商(IdP)中为组织成员分配 角色。要设置角色,可使用可选的用户级属性来指定您希望分配角色的人员。除角色外,您还可设置组织或团队,以覆盖由单点登录(SSO)连接设定的默认配置值。
注意
角色映射同时支持SCIM和JIT供应。在JIT供应模式下,角色映射仅在用户首次被供应到组织时生效。
下表列出了支持的可选用户级属性。
| 属性 | 可能的值 | 注意事项 |
|---|---|---|
dockerRole | member、editor或owner,各角色的权限列表请参见
角色与权限 | 如果您在身份提供商(IdP)中未分配角色,则 dockerRole 属性的值将默认为 member。设置该属性后,将覆盖默认值。 |
dockerOrg | organizationName, 例如, 一个名为 "moby" 的组织将是 moby | 设置此属性将覆盖 SSO 连接配置的默认组织。此外,这不会将用户添加到默认团队。如果未设置此属性,用户将被分配到默认组织和默认团队。如果设置了此属性并且设置了 dockerTeam,则会将用户分配到该组织内的团队。 |
dockerTeam | teamName, 例如, 一个名为 "developers" 的团队将是 developers | 设置此属性会将用户配置到默认组织和指定团队,而不是 SSO 连接的默认团队。如果团队不存在,这也会创建该团队。您仍然可以使用组映射将用户配置到多个组织中的团队。有关更多详细信息,请参阅 组映射。 |
在 IdP 中设置角色后,您必须在 IdP 中发起同步,以将更改推送到 Docker。
用于设置这些属性的外部命名空间是 urn:ietf:params:scim:schemas:extension:docker:2.0:User。
在 Okta 中设置角色映射
- 首先设置 SSO和SCIM。
- 在 Okta 管理门户中,转到 Directory,选择 Profile Editor,然后选择 User (Default)。
- 选择 添加属性 并为您想添加的角色、组织或团队配置值。不需要精确命名。
- 返回 个人资料编辑器 并选择您的应用程序。
- 选择 添加属性 并输入所需的值。外部名称 和 外部命名空间 必须准确无误。组织/团队/角色映射的外部名称值分别为
dockerOrg、dockerTeam和dockerRole,如前表所列。它们的外部命名空间均相同:urn:ietf:params:scim:schemas:extension:docker:2.0:User。 - 创建属性后,导航至页面顶部并选择 Mappings,然后选择 Okta User to YOUR APP。
- 转到新创建的属性,将变量名称映射到外部名称,然后选择保存映射。如果您使用的是 JIT 预配,请继续执行以下步骤。
- 导航到 应用程序 并选择 您的应用。
- 选择 General,然后选择 SAML Settings,最后选择 Edit。
- 选择 步骤 2 并配置从用户属性到 Docker 变量的映射。
按用户分配角色
- 在 Okta 管理门户中,选择 Directory,然后选择 People。
- 选择 Profile,然后选择 Edit。
- 选择 属性 并将属性更新为所需值。
按组分配角色
- 在 Okta 管理门户中,选择 Directory,然后选择 People。
- 选择 您的组,然后选择 应用程序。
- 打开 您的应用程序 并选择 编辑 图标。
- 将属性更新为所需值。
如果用户尚未设置属性,添加到该组的用户将在配置时继承这些属性。
在 Azure AD 中设置角色映射
- 首先设置 SSO和SCIM。
- 在 Azure AD 管理门户中,打开 企业应用 并选择 您的应用。
- 选择 Provisioning,然后选择 Mappings 和 Provision Azure Active Directory Users。
- 要设置新映射,请勾选显示高级选项,然后选择编辑属性选项。
- 使用所需的角色、组织或组(例如,
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole)映射创建新条目,作为字符串类型。 - 导航回用户的 属性映射 并选择 添加新映射。
表达式映射
此实现最适合角色,但不能与使用相同方法的组织和团队映射一起使用。通过此方法,您可以在组级别分配属性,成员可以继承这些属性。这是角色映射的推荐方法。
在 编辑属性 视图中,选择 表达式 映射类型。
如果您可以直接创建以角色命名的应用角色(例如,
owner或editor),则在 表达式 字段中,您可以使用SingleAppRoleAssignment([appRoleAssignments])。或者,如果您受限于使用已经定义的应用角色(例如,
My Corp Administrators),您需要为这些角色设置一个开关。例如:Switch(SingleAppRoleAssignment([appRoleAssignments]), "member", "My Corp Administrator", "owner", "My Corp Editor", "editor")`设置以下字段:
- 目标属性:
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole - 使用此属性匹配对象: 否
- 应用此映射: 始终
- 目标属性:
保存您的配置。
直接映射
直接映射是表达式映射的替代方案。此实现同时适用于所有三种映射类型。为了分配用户,您需要使用 Microsoft Graph API。
在 编辑属性 视图中,选择 直接 映射类型。
设置以下字段:
- 源属性: 在 Entra 中选择一个允许的扩展属性 (例如,
extensionAttribute1) - 目标属性:
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole - 使用此属性匹配对象: 否
- 应用此映射: 始终
如果您要设置多个属性,例如角色和组织,则需要为每个属性选择不同的扩展属性。
- 源属性: 在 Entra 中选择一个允许的扩展属性 (例如,
保存您的配置。
分配用户
如果您在上一步中使用了表达式映射,请导航至应用注册,选择您的应用,然后选择应用角色。为每个 Docker 角色创建一个应用角色。如果可能,请创建一个与 Docker 中的角色直接等效的显示名称,例如,owner 而不是 Owner。如果这样设置,则可以使用表达式映射到 SingleAppRoleAssignment([appRoleAssignments])。否则,必须使用自定义开关。请参阅
表达式映射。
添加用户:
- 选择 您的应用,然后选择 用户和组。
- 选择 添加用户/组,选择您想要添加的用户,然后 选择 其所需的角色。
添加组:
- 选择 您的应用,然后选择 用户和组。
- 选择 添加用户/组,选择您想要添加的用户,然后 选择 其所需的角色。
如果您在上一步中使用了直接映射,请转到 Microsoft Graph Explorer 并登录到您的租户。您需要是租户管理员才能使用此功能。使用 Microsoft Graph API 将扩展属性分配给用户,其值对应于属性映射的内容。请参阅有关在扩展属性中添加或更新数据的Microsoft Graph API 文档。
请参阅您的 IdP 文档以了解更多详情:
禁用 SCIM
如果禁用 SCIM,则通过 SCIM 配置的所有用户将保留在组织中。用户的后续更改将不会从您的 IdP 同步。只有在手动将用户从组织中移除时,才能取消配置用户。
- 登录到 管理控制台。
- 在左侧导航下拉菜单中选择您的组织或公司,然后选择 SSO 和 SCIM。
- 在 SSO 连接表中,选择 操作 图标。
- 选择 禁用 SCIM。
- 登录到 Docker Hub。
- 导航至您所在组织或公司的单点登录(SSO)设置页面。
- 组织:选择 Organizations(组织),再选择您的组织,然后选择 Settings(设置),最后选择 Security(安全)。
- 公司:选择 Organizations(组织),再选择您的公司,然后选择 Settings(设置)。
- 在 SSO 连接表中,选择 操作 图标。
- 选择 禁用 SCIM。
更多资源
以下视频演示了如何为您的 IdP 配置 SCIM: