SCIM 配置

跨域身份管理系统(SCIM)适用于Docker商业客户。本指南提供了SCIM配置的概述。

SCIM 如何工作

SCIM 通过您的身份提供商(IdP)为 Docker 提供自动用户配置和取消配置。一旦启用 SCIM,分配到您 IdP 中 Docker 应用程序的用户将自动配置并添加到您的 Docker 组织中。如果用户被取消分配,他们将从 Docker 中移除。

SCIM 还同步在您的 IdP 中进行的用户配置文件更新,例如名称更改。SCIM 可以与 Docker 的默认即时(JIT)配置配置一起使用,或者在禁用 JIT 的情况下单独使用。

SCIM 支持以下自动化:

  • 创建用户
  • 更新用户资料
  • 移除和停用用户
  • 重新激活用户
  • 组映射

支持的属性

重要

Docker 默认使用 JIT 配置进行 SSO 配置。如果启用 SCIM,JIT 值仍会覆盖 SCIM 配置设置的属性值。为避免冲突,您的 JIT 属性值必须与 SCIM 属性值匹配。为避免 SCIM 和 JIT 之间的冲突,您还可以禁用 JIT 配置。有关更多信息,请参阅 Just-in-Time

属性是用户信息的一部分,例如姓名和电子邮件,这些信息在使用SCIM时在您的IdP和Docker之间同步。正确映射这些属性对于无缝用户配置和防止在使用SSO时出现重复条目至关重要。

下表列出了SCIM支持的属性:

AttributeDescription
userNameUser’s primary email address, used as the unique identifier
name.givenNameUser’s first name
name.familyNameUser’s surname
activeIndicates if a user is enabled or disabled, set to “false” to de-provision a user

有关支持的属性和SCIM的更多详细信息,请参阅 Docker Hub API SCIM参考

在Docker中启用SCIM

在启用SCIM之前,您必须 配置SSO。使用SCIM不需要强制SSO。


早期访问

Docker 管理控制台是一个 早期访问 产品。

所有公司所有者和组织所有者均可使用。您仍然可以在Docker Hub中管理组织,但管理控制台包括公司级别的管理和增强的组织管理功能。

  1. 登录到 管理控制台.
  2. 在左侧导航下拉菜单中选择您的组织或公司,然后选择SSO和SCIM。
  3. 在SSO连接表中,选择操作图标和设置SCIM
  4. 复制SCIM Base URLAPI Token并将这些值粘贴到您的IdP中。
  1. 登录到 Docker Hub.
  2. 导航到您的组织或公司的SSO设置页面。
    • 组织:选择组织,您的组织,设置,然后选择安全
    • 公司:选择组织,您的公司,然后选择设置
  3. 在SSO连接表中,选择操作图标和设置SCIM
  4. 复制SCIM Base URLAPI Token并将这些值粘贴到您的IdP中。

在你的IdP中启用SCIM

您的IdP用户界面可能与以下步骤略有不同。您可以参考您的IdP文档进行验证。有关更多详细信息,请参阅您的IdP文档:


启用 SCIM

  1. 登录到Okta并选择Admin以打开管理门户。
  2. 打开您在配置SSO连接时创建的应用程序。
  3. 在应用程序页面上,选择常规标签,然后点击编辑应用设置
  4. 启用SCIM配置,然后选择保存
  5. 现在你可以在Okta中访问Provisioning标签。导航到此标签,然后选择Edit SCIM Connection
  6. 要在Okta中配置SCIM,请使用以下值和设置来建立您的连接:
    • SCIM基础URL:SCIM连接器基础URL(从Docker Hub复制)
    • 用户的唯一标识字段:email
    • 支持的配置操作:推送新用户推送配置文件更新
    • 认证模式:HTTP头
    • SCIM Bearer Token:HTTP头授权Bearer Token(从Docker Hub复制)
  7. 选择测试连接器配置
  8. 查看测试结果并选择保存

启用同步

  1. 在Okta中,选择Provisioning
  2. 选择To App,然后编辑
  3. 启用创建用户更新用户属性停用用户
  4. 选择保存
  5. 移除不必要的映射。必要的映射包括:
    • 用户名
    • 名字
    • 姓氏
    • 电子邮件
  1. 在 Azure 管理门户中,转到企业应用程序,然后选择您在设置 SSO 连接时创建的Docker应用程序。
  2. 选择Provisioning,然后选择Get Started
  3. 选择自动配置模式。
  4. 将来自Docker的SCIM基础URLAPI令牌输入到管理员凭证表单中。
  5. 测试连接,然后选择保存
  6. 转到Mappings,然后选择Provision Azure Active Directory Groups
  7. Enabled值设置为No
  8. 选择配置Azure Active Directory用户
  9. 移除所有不支持的属性。
  10. 选择保存
  11. 将配置状态设置为开启

设置角色映射

您可以在您的IdP中为组织成员分配角色。要设置角色,您可以为要分配角色的人员使用可选的用户级别属性。除了角色之外,您还可以设置组织或团队以覆盖由SSO连接设置的默认配置值。

注意

角色映射支持SCIM和JIT配置。使用JIT配置时,角色映射仅在用户最初被配置到组织时适用。

下表列出了支持的可选用户级别属性。

AttributePossible valuesConsiderations
dockerRolemember, editor, or owner, for a list of permissions for each role, see 角色和权限If you don't assign a role in the IdP, the value of the dockerRole attribute defaults to member. When you set the attribute, this overrides the default value.
dockerOrgorganizationName, for example, an organization named "moby" would be mobySetting this attribute overrides the default organization configured by the SSO connection. Also, this won't add the user to the default team. If this attribute isn't set, the user is provisioned to the default organization and the default team. If set and dockerTeam is also set, this provisions the user to the team within that organization.
dockerTeamteamName, for example, a team named "developers" would be developersSetting this attribute provisions the user to the default organization and to the specified team, instead of the SSO connection's default team. This also creates the team if it doesn't exist. You can still use group mapping to provision users to teams in multiple organizations. See 组映射 for more details.

在IdP中设置角色后,您必须在IdP中启动同步以将更改推送到Docker。

用于设置这些属性的外部命名空间是 urn:ietf:params:scim:schemas:extension:docker:2.0:User


在Okta中设置角色映射

  1. 首先设置 SSO 和 SCIM。
  2. 在Okta管理门户中,转到目录,选择配置文件编辑器,然后选择用户(默认)
  3. 选择添加属性并配置您想要添加的角色、组织或团队的值。不需要精确命名。
  4. 返回到配置文件编辑器并选择您的应用程序。
  5. 选择添加属性并输入所需的值。外部名称外部命名空间必须准确无误。组织/团队/角色映射的外部名称值分别为dockerOrgdockerTeamdockerRole,如前一表所列。它们的外部命名空间都相同:urn:ietf:params:scim:schemas:extension:docker:2.0:User
  6. 创建属性后,导航到页面顶部并选择映射,然后选择Okta用户到您的应用程序
  7. 转到新创建的属性,并将变量名称映射到外部名称,然后选择保存映射。如果您正在使用JIT配置,请继续执行以下步骤。
  8. 导航到应用程序并选择您的应用
  9. 选择常规,然后选择SAML设置,并点击编辑
  10. 选择步骤2并配置从用户属性到Docker变量的映射。

按用户分配角色

  1. 在Okta管理门户中,选择目录,然后选择人员
  2. 选择Profile,然后Edit
  3. 选择属性并将属性更新为所需的值。

按组分配角色

  1. 在Okta管理门户中,选择目录,然后选择人员
  2. 选择您的组,然后选择应用程序
  3. 打开YOUR APPLICATION并选择编辑图标。
  4. 将属性更新为所需的值。

如果用户尚未设置属性,添加到组的用户将在配置时继承这些属性。

在 Azure AD 中设置角色映射

  1. 首先设置 SSO 和 SCIM。
  2. 在 Azure AD 管理门户中,打开 企业应用 并选择 您的应用
  3. 选择Provisioning,然后选择Mappings,再选择Provision Azure Active Directory Users
  4. 要设置新的映射,请勾选显示高级选项,然后选择编辑属性选项
  5. 使用所需的映射为角色、组织或组创建新条目(例如,urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole)作为字符串类型。
  6. 导航回用户的属性映射并选择添加新映射

表达式映射

此实现最适合角色,但不能与使用相同方法的组织和团队映射一起使用。通过这种方法,您可以在组级别分配属性,成员可以继承这些属性。这是角色映射的推荐方法。

  1. 编辑属性视图中,选择表达式映射类型。

  2. 如果您可以直接创建名为角色的应用角色(例如,ownereditor),在表达式字段中,您可以使用SingleAppRoleAssignment([appRoleAssignments])

    或者,如果您仅限于使用已定义的应用角色(例如,My Corp Administrators),您需要为这些角色设置一个开关。例如:

    Switch(SingleAppRoleAssignment([appRoleAssignments]), "member", "My Corp Administrator", "owner", "My Corp Editor", "editor")`
  3. 设置以下字段:

    • Target attribute: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
    • Match objects using this attribute: No
    • Apply this mapping: Always
  4. 保存您的配置。

直接映射

直接映射是表达式映射的替代方案。此实现同时适用于所有三种映射类型。为了分配用户,您需要使用Microsoft Graph API。

  1. 编辑属性视图中,选择直接映射类型。

  2. 设置以下字段:

    • Source attribute: choose one of the allowed extension attributes in Entra (for example, extensionAttribute1)
    • Target attribute: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
    • Match objects using this attribute: No
    • Apply this mapping: Always

    如果您要设置多个属性,例如角色和组织,您需要为每个属性选择不同的扩展属性。

  3. 保存您的配置。

分配用户

如果您在上一步中使用了表达式映射,请导航到应用注册,选择您的应用,然后选择应用角色。为每个Docker角色创建一个应用角色。如果可能,请创建一个显示名称与Docker中的角色直接对应的应用角色,例如,使用owner而不是Owner。如果以这种方式设置,则可以使用表达式映射到SingleAppRoleAssignment([appRoleAssignments])。否则,将必须使用自定义开关。请参阅 表达式映射

添加用户:

  1. 选择YOUR APP,然后选择用户和组
  2. 选择添加用户/组,选择您要添加的用户,然后选择他们所需的角色。

添加一个组:

  1. 选择YOUR APP,然后选择用户和组
  2. 选择添加用户/组,选择您要添加的用户,然后选择他们所需的角色。

如果您在上一步中使用了直接映射,请转到Microsoft Graph Explorer并登录到您的租户。您需要是租户管理员才能使用此功能。使用Microsoft Graph API将扩展属性分配给用户,并使用与属性映射对应的值。请参阅 Microsoft Graph API文档了解如何在扩展属性中添加或更新数据。


有关更多详细信息,请参阅您的IdP文档:

禁用 SCIM

如果SCIM被禁用,通过SCIM配置的任何用户将保留在组织中。未来对用户的更改将不会从您的IdP同步。只有在手动从组织中移除用户时,才能进行用户取消配置。


早期访问

Docker 管理控制台是一个 早期访问 产品。

所有公司所有者和组织所有者均可使用。您仍然可以在Docker Hub中管理组织,但管理控制台包括公司级别的管理和增强的组织管理功能。

  1. 登录到 管理控制台.
  2. 在左侧导航下拉菜单中选择您的组织或公司,然后选择SSO和SCIM。
  3. 在SSO连接表中,选择操作图标。
  4. 选择禁用SCIM
  1. 登录到 Docker Hub.
  2. 导航到您的组织或公司的SSO设置页面。
    • 组织:选择组织,您的组织,设置,然后选择安全
    • 公司:选择组织,您的公司,然后选择设置
  3. 在SSO连接表中,选择操作图标。
  4. 选择禁用SCIM

更多资源

以下视频演示了如何为您的IdP配置SCIM: