SCIM 配置

跨域身份管理系统 (SCIM) 可用于 Docker Business 客户。本指南概述了 SCIM 配置。

SCIM 的工作原理

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

SCIM 还同步在您的 IdP 中进行的用户个人资料更新,例如名称更改。SCIM 可与 Docker 的默认即时配置 (JIT) 配置一起使用,也可以单独使用(禁用 JIT)。

SCIM 支持自动执行以下操作:

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

支持的属性

重要

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

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

下表列出了 SCIM 支持的属性

属性描述
userName用户的首要电子邮件地址,用作唯一标识符
name.givenName用户的姓名
name.familyName用户的姓氏
active指示用户是否启用或禁用,设置为“false”以取消配置用户

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

在 Docker 中启用 SCIM

您必须在启用 SCIM 之前配置 SSO。强制使用 SSO 并不是使用 SCIM 的必要条件。


抢先体验版

Docker 管理员控制台是抢先体验版产品。

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

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

在您的 IdP 中启用 SCIM

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


启用 SCIM

  1. 登录 Okta 并选择管理员以打开管理员门户。
  2. 打开您在配置 SSO 连接时创建的应用程序。
  3. 在应用程序页面上,选择常规选项卡,然后选择编辑应用程序设置
  4. 启用 SCIM 配置,然后选择保存
  5. 现在您可以访问 Okta 中的配置选项卡。导航到此选项卡,然后选择编辑 SCIM 连接
  6. 要在 Okta 中配置 SCIM,请使用以下值和设置设置您的连接
    • SCIM 基地址:SCIM 连接器基地址(从 Docker Hub 复制)
    • 用户的唯一标识符字段:email
    • 支持的配置操作:推送新用户推送个人资料更新
    • 身份验证模式:HTTP 头
    • SCIM Bearer 令牌:HTTP 头授权 Bearer 令牌(从 Docker Hub 复制)
  7. 选择测试连接器配置
  8. 查看测试结果并选择保存

启用同步

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

设置角色映射

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

注意

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

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

属性可能的值注意事项
dockerRolemembereditorowner,有关每个角色的权限列表,请参阅角色和权限如果您未在 IdP 中分配角色,则dockerRole属性的值默认为member。设置此属性将覆盖默认值。
dockerOrg组织名称,例如,名为“moby”的组织将是moby设置此属性将覆盖 SSO 连接配置的默认组织。此外,这不会将用户添加到默认团队。如果未设置此属性,则用户将被配置到默认组织和默认团队。如果设置此属性并且也设置了dockerTeam,则这会将用户配置到该组织内的团队。
dockerTeam团队名称,例如,名为“developers”的团队将是developers设置此属性会将用户配置到默认组织和指定的团队,而不是 SSO 连接的默认团队。如果团队不存在,这也会创建团队。您仍然可以使用组映射将用户配置到多个组织中的团队。有关更多详细信息,请参阅组映射

在 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. 选择个人资料,然后选择编辑
  3. 选择属性并将属性更新为所需的值。

按组分配角色

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

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

在 Azure AD 中设置角色映射

  1. 首先设置SSO和 SCIM。
  2. 在 Azure AD 管理门户中,打开企业应用并选择您的应用程序
  3. 选择配置,然后选择映射配置 Azure Active Directory 用户
  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. 设置以下字段:

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

直接映射

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

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

  2. 设置以下字段:

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

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

  3. 保存您的配置。

分配用户

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

添加用户

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

添加组

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

如果您在上一步中使用了直接映射,请转到**Microsoft Graph 资源管理器**并登录到您的租户。您需要是租户管理员才能使用此功能。使用 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