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 使用 JIT 配置进行 SSO 配置。如果启用 SCIM,则 JIT 值仍会覆盖该属性 由 SCIM 预配设置的值。为避免冲突,您的 JIT 属性值必须与 SCIM 属性值匹配。为避免 SCIM 和 JIT 之间发生冲突,您还可以禁用 JIT 预置。有关更多信息,请参阅 Just-in-Time

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

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

属性描述
用户名用户的主电子邮件地址,用作唯一标识符
name.given名称用户的名字
name.family名称用户的姓氏
积极指示用户是处于启用状态还是已禁用,设置为“false”可取消配置用户

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

在 Docker 中启用 SCIM

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


抢先体验

Docker Admin Console 是一种早期访问产品。

它适用于所有公司所有者和组织所有者。您仍然可以在 Docker Hub 中管理组织,但 Admin Console 包括公司级别的管理和组织的增强功能。

  1. 登录到 Admin Console
  2. 在左侧导航下拉菜单中选择您的组织或公司,然后选择 SSO 和 SCIM。
  3. 在 SSO 连接表中,选择 Actions 图标和 Setup SCIM。
  4. 复制 SCIM 基本 URLAPI 令牌,并将值粘贴到 IdP 中。
  1. 登录到 Docker Hub
  2. 导航到您的组织或公司的 SSO 设置页面。
    • 组织:选择 组织、您的组织、设置,然后选择 安全
    • 公司:选择 Organizations、您的公司,然后选择 Settings
  3. 在 SSO 连接表中,选择 Actions 图标和 Setup SCIM。
  4. 复制 SCIM 基本 URLAPI 令牌,并将值粘贴到 IdP 中。

在 IdP 中启用 SCIM

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


启用 SCIM

  1. 登录到 Okta,然后选择 管理员 以打开管理员门户。
  2. 打开您在配置 SSO 连接时创建的应用程序。
  3. 在应用程序页面上,选择 General 选项卡,然后选择 Edit App Settings
  4. 启用 SCIM 预置,然后选择 Save (保存)。
  5. 现在,您可以访问 Okta 中的 Provisioning (配置) 选项卡。导航到此选项卡,然后选择 Edit SCIM Connection
  6. 要在 Okta 中配置 SCIM,请使用以下值和设置设置连接:
    • SCIM 基 URL:SCIM 连接器基 URL(从 Docker Hub 复制)
    • 用户的唯一标识符字段:email
    • 支持的预置操作:Push New UsersPush Profile Updates
    • 鉴权方式:HTTP 报头
    • SCIM Bearer Token:HTTP 标头授权 Bearer Token(从 Docker Hub 复制)
  7. 选择 Test Connector Configuration
  8. 查看测试结果,然后选择 Save (保存)。

启用同步

  1. 在 Okta 中,选择 Provisioning
  2. 选择 To App(到应用程序),然后选择 Edit(编辑)。
  3. 启用 Create UsersUpdate User AttributesDeactivate Users
  4. 选择 Save (保存)。
  5. 删除不必要的映射。必要的映射是:
    • 用户名
    • 电子邮件
  1. 在 Azure 管理门户中,转到“企业应用程序”,然后选择在设置 SSO 连接时创建的 Docker 应用程序。
  2. 选择 Provisioning (预置),然后选择 Get Started (开始使用)。
  3. 选择 Automatic provisioning mode(自动配置模式)。
  4. 管理员凭证表单中输入 Docker 中的 SCIM 基本 URLAPI 令牌
  5. 测试连接,然后选择 Save (保存)。
  6. 转到 Mappings(映射),然后选择 Provision Azure Active Directory Groups(预配 Azure Active Directory 组)。
  7. Enabled 值设置为 No
  8. 选择 Provision Azure Active Directory Users(预配 Azure Active Directory 用户)。
  9. 删除所有不支持的属性。
  10. 选择 Save (保存)。
  11. 将 provisioning status (预置状态) 设置为 On (开启)。

设置角色映射

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

注意

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

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

属性可能的值考虑
dockerRolemember、 或 、 、 有关每个角色的权限列表,请参阅角色和权限editorowner如果未在 IdP 中分配角色,则该属性的值默认为 .设置属性时,这将覆盖默认值。dockerRolemember
dockerOrgorganizationName,例如,名为 “moby” 的组织将为moby设置此属性将覆盖 SSO 连接配置的默认组织。此外,这不会将用户添加到默认团队。如果未设置此属性,则会将用户预置到默认组织和默认团队。如果已设置 且已设置,则会将用户预配置到该组织内的团队。dockerTeam
dockerTeamteamName,例如,名为 “developers” 的团队将为developers设置此属性会将用户置备到默认组织和指定团队,而不是 SSO 连接的默认团队。如果团队不存在,这也会创建团队。您仍然可以使用组映射将用户配置到多个组织中的团队。有关更多详细信息,请参阅组映射

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

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


在 Okta 中设置角色映射

  1. 首先设置 SSO 和 SCIM。
  2. 在 Okta 管理门户中,转到 目录,选择 Profile Editor,然后选择 User (Default)。
  3. 选择 Add Attribute 并配置要添加的角色、组织或团队的值。不需要确切的命名。
  4. 返回到 Profile Editor 并选择您的应用程序。
  5. 选择 Add Attribute 并输入所需的值。External Name (外部名称) 和 External Namespace (外部命名空间) 必须精确。组织/团队/角色映射的外部名称值分别为 、 和 ,如上表所示。它们的外部命名空间都是相同的:。dockerOrgdockerTeamdockerRoleurn:ietf:params:scim:schemas:extension:docker:2.0:User
  6. 创建属性后,导航到页面顶部并选择 Mappings(映射),然后选择 Okta User to YOUR APP(Okta 用户到您的应用)。
  7. 转到新创建的属性并将变量名称映射到外部名称,然后选择 Save Mappings。如果您使用的是 JIT 预置,请继续执行以下步骤。
  8. 导航到 应用 并选择 您的应用
  9. 选择 General(常规),然后选择 SAML Settings(SAML 设置)和 Edit(编辑)。
  10. 选择 Step 2 并配置从 user 属性到 Docker 变量的映射。

按用户分配角色

  1. 在 Okta 管理门户中,选择 Directory(目录),然后选择 People(人员)。
  2. 选择 Profile (配置文件),然后选择 Edit (编辑)。
  3. 选择 Attributes 并将属性更新为所需的值。

按组分配角色

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

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

在 Azure AD 中设置角色映射

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

表达式映射

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

  1. Edit Attribute 视图中,选择 Expression 映射类型。

  2. 如果您可以直接创建以角色命名的应用程序角色(例如 或 ),则可以在 Expression 字段中使用 .ownereditorSingleAppRoleAssignment([appRoleAssignments])

    或者,如果您被限制为使用已定义的应用程序角色(例如),则需要为这些角色设置开关。例如:My Corp Administrators

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

    • Target 属性urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
    • 使用此属性匹配对象:否
    • 应用此映射:始终
  4. 保存您的配置。

直接映射

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

  1. Edit Attribute 视图中,选择 Direct mapping 类型。

  2. 设置以下字段:

    • 源属性:选择 Entra 中允许的扩展属性之一(例如extensionAttribute1)
    • Target 属性urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
    • 使用此属性匹配对象:否
    • 应用此映射:始终

    如果要设置多个属性,例如 role 和 organization,则需要为每个属性选择不同的扩展属性。

  3. 保存您的配置。

分配用户

如果您在上一步中使用了表达式映射,请导航到 App registrations(应用程序注册),选择 YOUR APP (您的应用) 和 App Roles(应用程序角色)。为每个 Docker 角色创建一个应用程序角色。如果可能,请使用直接等同于 Docker 中的角色的显示名称创建它,例如,而不是 .如果以这种方式设置,则可以使用表达式映射 。否则,必须使用自定义开关。请参阅表达式映射ownerOwnerSingleAppRoleAssignment([appRoleAssignments])

要添加用户:

  1. 选择 YOUR APP(您的应用),然后选择 Users and groups(用户和组)。
  2. 选择 Add user/groups(添加用户/组),选择要添加的用户,然后选择 Select their desired role(选择其所需的角色)。

要添加组:

  1. 选择 YOUR APP(您的应用),然后选择 Users and groups(用户和组)。
  2. 选择 Add user/groups(添加用户/组),选择要添加的用户,然后选择 Select their desired role(选择其所需的角色)。

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


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

禁用 SCIM

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


抢先体验

Docker Admin Console 是一种早期访问产品。

它适用于所有公司所有者和组织所有者。您仍然可以在 Docker Hub 中管理组织,但 Admin Console 包括公司级别的管理和组织的增强功能。

  1. 登录到 Admin Console
  2. 在左侧导航下拉菜单中选择您的组织或公司,然后选择 SSO 和 SCIM。
  3. 在 SSO connections 表中,选择 Actions 图标。
  4. 选择 Disable SCIM。
  1. 登录到 Docker Hub
  2. 导航到您的组织或公司的 SSO 设置页面。
    • 组织:选择 组织、您的组织、设置,然后选择 安全
    • 公司:选择 Organizations、您的公司,然后选择 Settings
  3. 在 SSO connections 表中,选择 Actions 图标。
  4. 选择 Disable SCIM。

更多资源

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