Share feedback
Answers are generated based on the documentation.

组映射

Subscription: Business
For: Administrators

组映射会自动将你的身份提供商(IdP)中的用户组与你的 Docker 组织中的团队同步。例如,当你在 IdP 中将一个开发者 添加到 "backend-team" 组时,他们会自动被添加到 Docker 中对应的团队。

本页解释了组映射的工作原理,以及如何设置组映射。

Tip

组映射非常适合将用户添加到多个组织或同一组织内的多个团队。如果你不需要设置多组织或多团队分配,SCIM 的 用户级属性 可能更适合你的需求。

先决条件(Prerequisites)

在开始之前,你必须拥有:

  • 为你的组织配置好的 SSO
  • 对 Docker Home 和你的身份提供商的管理员访问权限

组映射的工作原理(How group mapping works)

组映射通过以下关键组件使你的 Docker 团队与 IdP 组保持同步:

  • 认证流程:当用户通过 SSO 登录时,你的 IdP 会与 Docker 共享用户属性,包括电子邮件、姓名和组成员身份。
  • 自动更新:Docker 使用这些属性来创建或更新用户配置文件,并根据 IdP 组的更改管理团队分配。
  • 唯一标识:Docker 使用电子邮件地址作为唯一标识符,因此每个 Docker 账户必须拥有唯一的电子邮件地址。
  • 团队同步:用户在 Docker 中的团队成员身份会自动反映你在 IdP 组中所做的更改。

设置组映射(Set up group mapping)

组映射设置涉及配置你的身份提供商以与 Docker 共享组信息。这需要:

  • 使用 Docker 的命名格式在 IdP 中创建组
  • 配置属性,使你的 IdP 在认证期间发送组数据
  • 将用户添加到适当的组
  • 测试连接以确保组正确同步

你可以单独将组映射与 SSO 一起使用,或与 SSO 和 SCIM 一起使用以增强用户生命周期管理。

组命名格式(Group naming format)

在你的 IdP 中使用格式 organization:team 创建组。

例如:

  • 对于 "moby" 组织中的 "developers" 团队:moby:developers
  • 对于多组织访问:moby:backendwhale:desktop

Docker 会在组同步时自动创建团队(如果它们尚不存在)。

支持的属性(Supported attributes)

属性 描述
id 组的唯一 ID,UUID 格式。此属性为只读。
displayName 遵循组映射格式的组名:organization:team
members 作为该组成员的用户列表。
members(x).value 作为该组成员的用户的唯一 ID。成员通过 ID 引用。

使用 SSO 配置组映射(Configure group mapping with SSO)

将组映射用于使用 SAML 认证方法的 SSO 连接。

Note

使用 Azure AD(OIDC)认证方法的 SSO 不支持组映射。这些配置不需要 SCIM。

你的 IdP 的用户界面可能与以下步骤略有不同。请参考 Okta 文档 核实。

要设置组映射:

  1. 登录 Okta 并打开你的应用。
  2. 导航到你应用的 SAML Settings 页面。
  3. Group Attribute Statements (optional) 部分,按如下配置:
    • Namegroups
    • Name formatUnspecified
    • FilterStarts with + organization:,其中 organization 是你的组织名 筛选选项会过滤掉与你的 Docker 组织无关的组。
  4. 通过选择 Directory,然后 Groups 来创建你的组。
  5. 使用格式 organization:team 添加你的组,使其匹配 Docker 中你的组织(或组织们)和团队的名称。
  6. 将用户分配到你创建的组。

下次你将组与 Docker 同步时,你的用户将映射到你所定义的 Docker 组。

你的 IdP 的用户界面可能与以下步骤略有不同。请参考 Entra ID 文档 核实。

要设置组映射:

  1. 登录 Entra ID 并打开你的应用。
  2. 选择 Manage,然后 Single sign-on
  3. 选择 Add a group claim
  4. 在 Group Claims 部分,选择 Groups assigned to the application,源属性为 Cloud-only group display names (Preview)
  5. 选择 Advanced options,然后 Filter groups 选项。
  6. 按如下配置属性:
    • Attribute to matchDisplay name
    • Match withContains
    • String:
  7. 选择 Save
  8. 选择 GroupsAll groups,然后 New group 来创建你的组。
  9. 将用户分配到你创建的组。

下次你将组与 Docker 同步时,你的用户将映射到你所定义的 Docker 组。

使用 SCIM 配置组映射(Configure group mapping with SCIM)

将组映射与 SCIM 一起使用,以获得更高级的用户生命周期管理。在开始之前,请确保你先 设置了 SCIM

你的 IdP 的用户界面可能与以下步骤略有不同。请参考 Okta 文档 核实。

要设置你的组:

  1. 登录 Okta 并打开你的应用。
  2. 选择 Applications,然后 Provisioning,再 Integration
  3. 选择 Edit 以在你的连接上启用组,然后选择 Push groups
  4. 选择 Save。保存此配置会将 Push Groups 标签页添加到你的应用。
  5. 通过导航到 Directory 并选择 Groups 来创建你的组。
  6. 使用格式 organization:team 添加你的组,使其匹配 Docker 中你的组织(或组织们)和团队的名称。
  7. 将用户分配到你创建的组。
  8. 返回 Integration 页面,然后选择 Push Groups 标签页,打开你可以控制和管理组如何配置的视图。
  9. 选择 Push Groups,然后 Find groups by rule
  10. 按如下通过规则配置组:
    • 输入规则名称,例如 Sync groups with Docker Hub
    • 按名称匹配组,例如以 docker: 开头或包含 :(针对多组织)
    • 如果你启用 Immediately push groups by rule,则一旦组或组分配发生更改,同步就会发生。如果你不想手动推送组,请启用此项。

Pushed Groups 列的 By rule 下找到你的新规则。匹配该规则的组列在右侧的组表中。

要从该表推送组:

  1. 选择 Group in Okta
  2. 选择 Push Status 下拉菜单。
  3. 选择 Push Now

你的 IdP 的用户界面可能与以下步骤略有不同。请参考 Entra ID 文档 核实。

在配置组映射之前,先完成以下操作:

  1. 登录 Entra ID 并转到你的应用。
  2. 在你的应用中,选择 Provisioning,然后 Mappings
  3. 选择 Provision Microsoft Entra ID Groups
  4. 选择 Show advanced options,然后 Edit attribute list
  5. externalId 类型更新为 reference,然后选择 Multi-Value 复选框,并选择被引用的对象属性 urn:ietf:params:scim:schemas:core:2.0:Group
  6. 选择 Save,然后 Yes 确认。
  7. 转到 Provisioning
  8. Provision Status 切换为 On,然后选择 Save

接下来,设置组映射:

  1. 转到应用概览页面。
  2. Provision user accounts 下,选择 Get started
  3. 选择 Add user/group
  4. 使用 organization:team 格式创建你的组。
  5. 将组分配到配置组。
  6. 选择 Start provisioning 开始同步。

要验证,选择 Monitor,然后 Provisioning logs 查看你的组是否成功配置。在你的 Docker 组织中,你可以检查 组是否正确配置,以及成员是否已添加到适当的团队。

一旦完成,通过 SSO 登录 Docker 的用户会自动被添加到 IdP 中映射的组织和团队。

Tip

启用 SCIM 以利用自动用户配置和取消配置。如果你不启用 SCIM,用户仅会被自动配置。你必须 手动取消配置他们。

下一步(Next steps)