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 包括公司级别的管理和组织的增强功能。
- 登录到 Admin Console。
- 在左侧导航下拉菜单中选择您的组织或公司,然后选择 SSO 和 SCIM。
- 在 SSO 连接表中,选择 Actions 图标和 Setup SCIM。
- 复制 SCIM 基本 URL 和 API 令牌,并将值粘贴到 IdP 中。
- 登录到 Docker Hub。
- 导航到您的组织或公司的 SSO 设置页面。
- 组织:选择 组织、您的组织、设置,然后选择 安全。
- 公司:选择 Organizations、您的公司,然后选择 Settings。
- 在 SSO 连接表中,选择 Actions 图标和 Setup SCIM。
- 复制 SCIM 基本 URL 和 API 令牌,并将值粘贴到 IdP 中。
在 IdP 中启用 SCIM
IdP 的用户界面可能与以下步骤略有不同。您可以参考 IdP 的文档进行验证。有关更多详细信息,请参阅 IdP 的文档:
启用 SCIM
- 登录到 Okta,然后选择 管理员 以打开管理员门户。
- 打开您在配置 SSO 连接时创建的应用程序。
- 在应用程序页面上,选择 General 选项卡,然后选择 Edit App Settings。
- 启用 SCIM 预置,然后选择 Save (保存)。
- 现在,您可以访问 Okta 中的 Provisioning (配置) 选项卡。导航到此选项卡,然后选择 Edit SCIM Connection。
- 要在 Okta 中配置 SCIM,请使用以下值和设置设置连接:
- SCIM 基 URL:SCIM 连接器基 URL(从 Docker Hub 复制)
- 用户的唯一标识符字段:
email
- 支持的预置操作:Push New Users 和 Push Profile Updates
- 鉴权方式:HTTP 报头
- SCIM Bearer Token:HTTP 标头授权 Bearer Token(从 Docker Hub 复制)
- 选择 Test Connector Configuration。
- 查看测试结果,然后选择 Save (保存)。
启用同步
- 在 Okta 中,选择 Provisioning。
- 选择 To App(到应用程序),然后选择 Edit(编辑)。
- 启用 Create Users、Update User Attributes 和 Deactivate Users。
- 选择 Save (保存)。
- 删除不必要的映射。必要的映射是:
- 用户名
- 名
- 姓
- 电子邮件
- 在 Azure 管理门户中,转到“企业应用程序”,然后选择在设置 SSO 连接时创建的 Docker 应用程序。
- 选择 Provisioning (预置),然后选择 Get Started (开始使用)。
- 选择 Automatic provisioning mode(自动配置模式)。
- 在管理员凭证表单中输入 Docker 中的 SCIM 基本 URL 和 API 令牌。
- 测试连接,然后选择 Save (保存)。
- 转到 Mappings(映射),然后选择 Provision Azure Active Directory Groups(预配 Azure Active Directory 组)。
- 将 Enabled 值设置为 No。
- 选择 Provision Azure Active Directory Users(预配 Azure Active Directory 用户)。
- 删除所有不支持的属性。
- 选择 Save (保存)。
- 将 provisioning status (预置状态) 设置为 On (开启)。
设置角色映射
您可以在 IdP 中为组织中的成员分配角色。要设置角色,您可以为要分配角色的人员使用可选的用户级属性。除了角色之外,您还可以设置组织或团队以覆盖 SSO 连接设置的默认预置值。
注意
SCIM 和 JIT 预置都支持角色映射。使用 JIT 配置时,角色映射仅在最初将用户配置到组织时适用。
下表列出了支持的可选用户级属性。
属性 | 可能的值 | 考虑 |
---|---|---|
dockerRole | member 、 或 、 、 有关每个角色的权限列表,请参阅角色和权限editor owner | 如果未在 IdP 中分配角色,则该属性的值默认为 .设置属性时,这将覆盖默认值。dockerRole member |
dockerOrg | organizationName ,例如,名为 “moby” 的组织将为moby | 设置此属性将覆盖 SSO 连接配置的默认组织。此外,这不会将用户添加到默认团队。如果未设置此属性,则会将用户预置到默认组织和默认团队。如果已设置 且已设置,则会将用户预配置到该组织内的团队。dockerTeam |
dockerTeam | teamName ,例如,名为 “developers” 的团队将为developers | 设置此属性会将用户置备到默认组织和指定团队,而不是 SSO 连接的默认团队。如果团队不存在,这也会创建团队。您仍然可以使用组映射将用户配置到多个组织中的团队。有关更多详细信息,请参阅组映射。 |
在 IdP 中设置角色后,必须在 IdP 中启动同步,以将更改推送到 Docker。
用于设置这些属性的外部命名空间是 。urn:ietf:params:scim:schemas:extension:docker:2.0:User
在 Okta 中设置角色映射
- 首先设置 SSO 和 SCIM。
- 在 Okta 管理门户中,转到 目录,选择 Profile Editor,然后选择 User (Default)。
- 选择 Add Attribute 并配置要添加的角色、组织或团队的值。不需要确切的命名。
- 返回到 Profile Editor 并选择您的应用程序。
- 选择 Add Attribute 并输入所需的值。External Name (外部名称) 和 External Namespace (外部命名空间) 必须精确。组织/团队/角色映射的外部名称值分别为 、 和 ,如上表所示。它们的外部命名空间都是相同的:。
dockerOrg
dockerTeam
dockerRole
urn:ietf:params:scim:schemas:extension:docker:2.0:User
- 创建属性后,导航到页面顶部并选择 Mappings(映射),然后选择 Okta User to YOUR APP(Okta 用户到您的应用)。
- 转到新创建的属性并将变量名称映射到外部名称,然后选择 Save Mappings。如果您使用的是 JIT 预置,请继续执行以下步骤。
- 导航到 应用 并选择 您的应用。
- 选择 General(常规),然后选择 SAML Settings(SAML 设置)和 Edit(编辑)。
- 选择 Step 2 并配置从 user 属性到 Docker 变量的映射。
按用户分配角色
- 在 Okta 管理门户中,选择 Directory(目录),然后选择 People(人员)。
- 选择 Profile (配置文件),然后选择 Edit (编辑)。
- 选择 Attributes 并将属性更新为所需的值。
按组分配角色
- 在 Okta 管理门户中,选择 Directory(目录),然后选择 People(人员)。
- 选择 YOUR GROUP(您的组),然后选择 Applications(应用程序)。
- 打开 YOUR APPLICATION 并选择 Edit 图标。
- 将属性更新为所需的值。
如果用户尚未设置属性,则添加到组的用户将在配置时继承这些属性。
在 Azure AD 中设置角色映射
- 首先设置 SSO 和 SCIM。
- 在 Azure AD 管理门户中,打开“企业应用”,然后选择“您的应用”。
- 选择 Provisioning (预配),然后选择 Mappings (映射),然后选择 Provision Azure Active Directory Users(预配 Azure Active Directory 用户)。
- 要设置新映射,请选中 Show advanced options(显示高级选项),然后选择 Edit attribute options(编辑属性选项)。
- 使用角色、组织或组(例如 )的所需映射作为字符串类型创建新条目。
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
- 导航回 Attribute Mapping for users (用户的属性映射),然后选择 Add new mapping (添加新映射)。
表达式映射
此实现最适合角色,但不能与使用相同方法的组织和团队映射一起使用。使用此方法,您可以在组级别分配成员可以继承的属性。这是建议的角色映射方法。
在 Edit Attribute 视图中,选择 Expression 映射类型。
如果您可以直接创建以角色命名的应用程序角色(例如 或 ),则可以在 Expression 字段中使用 .
owner
editor
SingleAppRoleAssignment([appRoleAssignments])
或者,如果您被限制为使用已定义的应用程序角色(例如),则需要为这些角色设置开关。例如:
My Corp Administrators
Switch(SingleAppRoleAssignment([appRoleAssignments]), "member", "My Corp Administrator", "owner", "My Corp Editor", "editor")`
设置以下字段:
- Target 属性:
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
- 使用此属性匹配对象:否
- 应用此映射:始终
- Target 属性:
保存您的配置。
直接映射
直接映射是表达式映射的替代方法。此实现同时适用于所有三种映射类型。为了分配用户,您需要使用 Microsoft Graph API。
在 Edit Attribute 视图中,选择 Direct mapping 类型。
设置以下字段:
- 源属性:选择 Entra 中允许的扩展属性之一(例如
extensionAttribute1
) - Target 属性:
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
- 使用此属性匹配对象:否
- 应用此映射:始终
如果要设置多个属性,例如 role 和 organization,则需要为每个属性选择不同的扩展属性。
- 源属性:选择 Entra 中允许的扩展属性之一(例如
保存您的配置。
分配用户
如果您在上一步中使用了表达式映射,请导航到 App registrations(应用程序注册),选择 YOUR APP (您的应用) 和 App Roles(应用程序角色)。为每个 Docker 角色创建一个应用程序角色。如果可能,请使用直接等同于 Docker 中的角色的显示名称创建它,例如,而不是 .如果以这种方式设置,则可以使用表达式映射 。否则,必须使用自定义开关。请参阅表达式映射。owner
Owner
SingleAppRoleAssignment([appRoleAssignments])
要添加用户:
- 选择 YOUR APP(您的应用),然后选择 Users and groups(用户和组)。
- 选择 Add user/groups(添加用户/组),选择要添加的用户,然后选择 Select their desired role(选择其所需的角色)。
要添加组:
- 选择 YOUR APP(您的应用),然后选择 Users and groups(用户和组)。
- 选择 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 包括公司级别的管理和组织的增强功能。
- 登录到 Admin Console。
- 在左侧导航下拉菜单中选择您的组织或公司,然后选择 SSO 和 SCIM。
- 在 SSO connections 表中,选择 Actions 图标。
- 选择 Disable SCIM。
- 登录到 Docker Hub。
- 导航到您的组织或公司的 SSO 设置页面。
- 组织:选择 组织、您的组织、设置,然后选择 安全。
- 公司:选择 Organizations、您的公司,然后选择 Settings。
- 在 SSO connections 表中,选择 Actions 图标。
- 选择 Disable SCIM。
更多资源
以下视频演示了如何为 IdP 配置 SCIM: