SCIM 供应

订阅: 商业版
要求: Docker Desktop 4.42 及更高版本
适用于: 管理员

使用跨域身份管理系统 (SCIM) 自动化您的 Docker 组织的用户管理。SCIM 自动供应和取消供应用户,同步团队成员资格,并使您的 Docker 组织与您的身份提供商保持同步。

本页将向您展示如何使用 SCIM 自动化 Docker 的用户供应和取消供应。

先决条件

在开始之前,您必须拥有

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

SCIM 的工作原理

SCIM 通过您的身份提供商自动化 Docker 的用户供应和取消供应。启用 SCIM 后,分配给您的身份提供商中 Docker 应用程序的任何用户都会自动被供应并添加到您的 Docker 组织。当用户从您的身份提供商中 Docker 应用程序中移除时,SCIM 会将其停用并从您的 Docker 组织中移除。

除了供应和移除,SCIM 还会同步身份提供商中进行的配置文件更新,例如姓名更改。您可以将 SCIM 与 Docker 默认的即时 (JIT) 供应一起使用,也可以在禁用 JIT 的情况下单独使用 SCIM。

SCIM 自动化

  • 创建用户
  • 更新用户配置文件
  • 移除和停用用户
  • 重新激活用户
  • 组映射
注意

SCIM 仅管理通过您的身份提供商在启用 SCIM 后供应的用户。它无法移除在设置 SCIM 之前手动添加到 Docker 组织的用户。

要移除这些用户,请从您的 Docker 组织中手动删除他们。有关更多信息,请参阅管理组织成员

支持的属性

SCIM 使用属性(姓名、电子邮件等)在您的身份提供商和 Docker 之间同步用户信息。在您的身份提供商中正确映射这些属性可确保用户供应顺利进行,并防止在使用单点登录时出现重复用户帐户等问题。

Docker 支持以下 SCIM 属性

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

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

重要

默认情况下,Docker 对 SSO 使用即时 (JIT) 供应。如果启用了 SCIM,JIT 值仍然优先并会覆盖 SCIM 设置的属性值。为避免冲突,请确保您的 JIT 属性值与您的 SCIM 值匹配。

或者,您可以禁用 JIT 供应,完全依赖 SCIM。有关详细信息,请参阅即时供应

在 Docker 中启用 SCIM

启用 SCIM

  1. 登录 Docker 主页
  2. 选择管理控制台,然后选择SSO 和 SCIM
  3. SSO 连接 表中,选择您的连接的 操作 图标,然后选择 设置 SCIM
  4. 复制 SCIM 基本 URLAPI 令牌 并将这些值粘贴到您的 IdP 中。

在 IdP 中启用 SCIM

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

注意

Microsoft 目前不支持在 Entra ID 的同一非库应用程序中同时使用 SCIM 和 OIDC。本页提供了一个经过验证的解决方法,即使用一个单独的非库应用程序进行 SCIM 供应。虽然 Microsoft 没有正式记录此设置,但它在实践中被广泛使用和支持。

第一步:启用 SCIM

  1. 登录 Okta 并选择 Admin 打开管理门户。
  2. 打开您在配置 SSO 连接时创建的应用程序。
  3. 在应用程序页面上,选择 General 选项卡,然后选择 Edit App Settings
  4. 启用 SCIM 供应,然后选择 Save
  5. 导航到 Provisioning,然后选择 Edit SCIM Connection
  6. 要在 Okta 中配置 SCIM,请使用以下值和设置来设置您的连接
    • SCIM 基本 URL:SCIM 连接器基本 URL(从 Docker 主页复制)
    • 用户的唯一标识符字段:`email`
    • 支持的供应操作:推送新用户推送配置文件更新
    • 认证模式:HTTP Header
    • SCIM Bearer 令牌:HTTP Header 授权 Bearer 令牌(从 Docker 主页复制)
  7. 选择 测试连接器配置
  8. 查看测试结果并选择 保存

第二步:启用同步

  1. 在 Okta 中,选择 Provisioning
  2. 选择 To App,然后选择 Edit
  3. 启用 创建用户更新用户属性停用用户
  4. 选择保存
  5. 移除不必要的映射。必要的映射是
    • 用户名
    • 名字
    • 姓氏
    • 电子邮件

接下来,设置角色映射

Microsoft 不支持在同一非库应用程序中同时使用 SCIM 和 OIDC。您必须在 Entra ID 中为 SCIM 供应创建第二个非库应用程序。

第一步:创建单独的 SCIM 应用程序

  1. 在 Azure 门户中,转到 Microsoft Entra ID > 企业应用程序 > 新建应用程序
  2. 选择 创建您自己的应用程序
  3. 命名您的应用程序并选择 集成您在库中找不到的任何其他应用程序
  4. 选择 Create (创建)。

第二步:配置 SCIM 供应

  1. 在您的新 SCIM 应用程序中,转到 供应 > 开始
  2. 供应模式 设置为 自动
  3. 管理员凭据
    • 租户 URL:粘贴 Docker 主页中的 SCIM 基本 URL
    • 秘密令牌:粘贴 Docker 主页中的 SCIM API 令牌
  4. 选择 测试连接 进行验证。
  5. 选择 保存 以存储凭据。

接下来,设置角色映射

  1. 在 Azure 门户中,转到 Microsoft Entra ID > 企业应用程序,然后选择您的 Docker SAML 应用程序。
  2. 选择 供应 > 开始
  3. 供应模式 设置为 自动
  4. 管理员凭据
    • 租户 URL:粘贴 Docker 主页中的 SCIM 基本 URL
    • 秘密令牌:粘贴 Docker 主页中的 SCIM API 令牌
  5. 选择 测试连接 进行验证。
  6. 选择 保存 以存储凭据。

接下来,设置角色映射

设置角色映射

您可以通过在 IdP 中添加可选的 SCIM 属性来为用户分配Docker 角色。这些属性会覆盖 SSO 配置中设置的默认角色和团队值。

注意

角色映射同时支持 SCIM 和即时 (JIT) 供应。对于 JIT,角色映射仅在用户首次供应时适用。

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

属性可能的值备注
dockerRolemembereditorowner如果未设置,用户默认为 member 角色。设置此属性将覆盖默认值。

有关角色定义,请参阅角色和权限
dockerOrgDocker organizationName(例如,moby覆盖 SSO 连接中配置的默认组织。

如果未设置,用户将被供应到默认组织。如果同时设置了 dockerOrgdockerTeam,用户将被供应到指定组织内的团队。
dockerTeamDocker teamName(例如,developers将用户供应到默认组织或指定组织中的指定团队。如果团队不存在,则会自动创建。

您仍然可以使用组映射将用户分配到跨多个组织的团队。

用于这些属性的外部命名空间是:urn:ietf:params:scim:schemas:extension:docker:2.0:User。在您的身份提供商中为 Docker 创建自定义 SCIM 属性时需要此值。

第一步:在 Okta 中设置角色映射

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

第二步:按用户分配角色

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

第三步:按组分配角色

  1. 在 Okta 管理门户中,选择 Directory,然后选择 People
  2. 选择 YOUR GROUP,然后选择 Applications
  3. 打开 YOUR APPLICATION 并选择 Edit 图标。
  4. 将属性更新为所需的值。

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

第一步:配置属性映射

  1. 完成SCIM 供应设置
  2. 在 Azure 门户中,打开 Microsoft Entra ID > 企业应用程序,然后选择您的 SCIM 应用程序。
  3. 转到 供应 > 映射 > 供应 Azure Active Directory 用户
  4. 添加或更新以下映射
    • userPrincipalName -> userName
    • mail -> emails.value
    • 可选。使用其中一种映射方法映射 dockerRoledockerOrgdockerTeam
  5. 移除任何不支持的属性以防止同步错误。
  6. 可选。转到 映射 > 供应 Azure Active Directory 组
    • 如果组供应导致错误,请将 Enabled 设置为
    • 如果启用,请仔细测试组映射。
  7. 选择 保存 以应用映射。

第二步:选择角色映射方法

您可以使用以下方法之一映射 dockerRoledockerOrgdockerTeam

表达式映射

如果您只需要分配 Docker 角色,例如 membereditorowner,请使用此方法。

  1. 编辑属性 视图中,将映射类型设置为 表达式
  2. 表达式 字段中
    1. 如果您的应用角色与 Docker 角色完全匹配,请使用:SingleAppRoleAssignment([appRoleAssignments])
    2. 如果不匹配,请使用 switch 表达式:Switch(SingleAppRoleAssignment([appRoleAssignments]), "我的公司管理员", "owner", "我的公司编辑", "editor", "我的公司用户", "member")
  3. 设置
    • 目标属性urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
    • 使用此属性匹配对象:否
    • 应用此映射:始终
  4. 保存您的更改。
警告

您不能将 dockerOrgdockerTeam 与此方法一起使用。表达式映射仅与一个属性兼容。

直接映射

如果您需要映射多个属性(dockerRole + dockerTeam),请使用此方法。

  1. 对于每个 Docker 属性,选择一个唯一的 Entra 扩展属性(extensionAttribute1extensionAttribute2 等)。
  2. 编辑属性 视图中
    • 将映射类型设置为 直接
    • 源属性 设置为您选择的扩展属性。
    • 目标属性 设置为以下之一
      • dockerRole: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
      • dockerOrg: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerOrg
      • dockerTeam: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerTeam
    • 应用此映射 设置为 始终
  3. 保存您的更改。

要分配值,您需要使用 Microsoft Graph API。

第三步:分配用户和组

对于任何一种映射方法

  1. 在 SCIM 应用程序中,转到 用户和组 > 添加用户/组
  2. 选择要供应到 Docker 的用户或组。
  3. 选择 分配

如果您使用的是表达式映射

  1. 转到 应用注册 > 您的 SCIM 应用程序 > 应用角色
  2. 创建与 Docker 角色匹配的应用角色。
  3. 用户和组 下将用户或组分配给应用角色。

如果您使用的是直接映射

  1. 转到 Microsoft Graph Explorer 并以租户管理员身份登录。
  2. 使用 Microsoft Graph API 分配属性值。PATCH 请求示例
PATCH https://graph.microsoft.com/v1.0/users/{user-id}
Content-Type: application/json

{
  "extensionAttribute1": "owner",
  "extensionAttribute2": "moby",
  "extensionAttribute3": "developers"
}
注意

您必须为每个 SCIM 字段使用不同的扩展属性。

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

测试 SCIM 供应

完成角色映射后,您可以手动测试配置。

  1. 在 Okta 管理门户中,转到 Directory > People
  2. 选择您已分配给 SCIM 应用程序的用户。
  3. 选择 Provision User
  4. 等待几秒钟,然后在 成员 下的 Docker 管理控制台中检查。
  5. 如果用户未出现,请在 报告 > 系统日志 中查看日志并确认应用程序中的 SCIM 设置。
  1. 在 Azure 门户中,转到 Microsoft Entra ID > 企业应用程序,然后选择您的 SCIM 应用程序。
  2. 转到 供应 > 按需供应
  3. 选择一个用户或组,然后选择 供应
  4. 确认用户出现在 成员 下的 Docker 管理控制台中。
  5. 如有需要,检查 供应日志 中是否有错误。

禁用 SCIM

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

禁用 SCIM

  1. 登录 Docker 主页
  2. 选择管理控制台,然后选择SSO 和 SCIM
  3. SSO 连接 表中,选择 操作 图标。
  4. 选择 禁用 SCIM

后续步骤

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.