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 的必要条件。
- 登录管理员控制台。
- 在左侧导航栏的下拉菜单中选择您的组织或公司,然后选择SSO 和 SCIM。
- 在 SSO 连接表中,选择操作图标,然后选择设置 SCIM。
- 复制SCIM 基地址和API 令牌,并将这些值粘贴到您的 IdP 中。
- 登录 Docker Hub。
- 导航到您的组织或公司的 SSO 设置页面。
- 组织:选择组织,您的组织,设置,然后选择安全。
- 公司:选择组织,您的公司,然后选择设置。
- 在 SSO 连接表中,选择操作图标,然后选择设置 SCIM。
- 复制SCIM 基地址和API 令牌,并将这些值粘贴到您的 IdP 中。
在您的 IdP 中启用 SCIM
您的 IdP 的用户界面可能与以下步骤略有不同。您可以参考您的 IdP 文档进行验证。更多详细信息,请参阅您的 IdP 文档。
启用 SCIM
- 登录 Okta 并选择管理员以打开管理员门户。
- 打开您在配置 SSO 连接时创建的应用程序。
- 在应用程序页面上,选择常规选项卡,然后选择编辑应用程序设置。
- 启用 SCIM 配置,然后选择保存。
- 现在您可以访问 Okta 中的配置选项卡。导航到此选项卡,然后选择编辑 SCIM 连接。
- 要在 Okta 中配置 SCIM,请使用以下值和设置设置您的连接
- SCIM 基地址:SCIM 连接器基地址(从 Docker Hub 复制)
- 用户的唯一标识符字段:
email
- 支持的配置操作:推送新用户和推送个人资料更新
- 身份验证模式:HTTP 头
- SCIM Bearer 令牌:HTTP 头授权 Bearer 令牌(从 Docker Hub 复制)
- 选择测试连接器配置。
- 查看测试结果并选择保存。
启用同步
- 在 Okta 中,选择配置。
- 选择到应用程序,然后选择编辑。
- 启用创建用户、更新用户属性和停用用户。
- 选择保存。
- 删除不必要的映射。必要的映射是:
- 用户名
- 名字
- 姓氏
- 电子邮件
- 在 Azure 管理门户中,转到企业应用程序,然后选择您在设置 SSO 连接时创建的Docker应用程序。
- 选择配置,然后选择开始。
- 选择自动配置模式。
- 将 Docker 中的SCIM 基地址和API 令牌输入管理员凭据表单。
- 测试连接,然后选择保存。
- 转到映射,然后选择配置 Azure Active Directory 组。
- 将启用值设置为否。
- 选择配置 Azure Active Directory 用户。
- 删除所有不支持的属性。
- 选择保存。
- 将配置状态设置为开启。
设置角色映射
您可以在您的 IdP 中为组织中的成员分配角色。要设置角色,您可以为要分配角色的人员使用可选的用户级别属性。除了角色之外,您还可以设置组织或团队以覆盖 SSO 连接设置的默认配置值。
注意
角色映射同时支持 SCIM 和 JIT 配置。使用 JIT 配置时,角色映射仅在用户最初被配置到组织时适用。
下表列出了支持的可选用户级别属性。
属性 | 可能的值 | 注意事项 |
---|---|---|
dockerRole | member 、editor 或 owner ,有关每个角色的权限列表,请参阅角色和权限 | 如果您未在 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 中设置角色映射
- 首先设置SSO和 SCIM。
- 在 Okta 管理门户中,转到目录,选择配置文件编辑器,然后选择用户(默认)。
- 选择添加属性并配置要添加的角色、组织或团队的值。不需要精确的命名。
- 返回配置文件编辑器并选择您的应用程序。
- 选择添加属性并输入所需的值。外部名称和外部命名空间必须精确。组织/团队/角色映射的外部名称值分别是
dockerOrg
、dockerTeam
和dockerRole
,如上表所示。所有这些的外部命名空间都相同:urn:ietf:params:scim:schemas:extension:docker:2.0:User
。 - 创建属性后,导航到页面顶部并选择映射,然后选择Okta 用户到您的应用。
- 转到新创建的属性并将变量名映射到外部名称,然后选择保存映射。如果您使用的是 JIT 配置,请继续执行以下步骤。
- 导航到应用程序并选择您的应用程序。
- 选择常规,然后选择SAML 设置和编辑。
- 选择步骤 2并配置从用户属性到 Docker 变量的映射。
按用户分配角色
- 在 Okta 管理门户中,选择目录,然后选择人员。
- 选择个人资料,然后选择编辑。
- 选择属性并将属性更新为所需的值。
按组分配角色
- 在 Okta 管理门户中,选择目录,然后选择人员。
- 选择您的组,然后选择应用程序。
- 打开您的应用程序并选择编辑图标。
- 将属性更新为所需的值。
如果用户尚未设置属性,则添加到组的用户将在配置时继承这些属性。
在 Azure AD 中设置角色映射
- 首先设置SSO和 SCIM。
- 在 Azure AD 管理门户中,打开企业应用并选择您的应用程序。
- 选择配置,然后选择映射和配置 Azure Active Directory 用户。
- 要设置新的映射,请选中显示高级选项,然后选择编辑属性选项。
- 使用所需的角色、组织或组映射(例如,
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
)创建新的条目作为字符串类型。 - 导航回到用户的属性映射并选择添加新映射。
表达式映射
此实现最适合角色,但不能与使用相同方法的组织和团队映射一起使用。使用此方法,您可以按组级别分配属性,成员可以继承这些属性。这是角色映射的推荐方法。
在编辑属性视图中,选择表达式映射类型。
如果您可以创建直接命名为角色的应用程序角色(例如,
owner
或editor
),则可以在表达式字段中使用SingleAppRoleAssignment([appRoleAssignments])
。或者,如果您仅限于使用已定义的应用程序角色(例如,
My Corp Administrators
),则需要为这些角色设置一个开关。例如:Switch(SingleAppRoleAssignment([appRoleAssignments]), "member", "My Corp Administrator", "owner", "My Corp Editor", "editor")`
设置以下字段:
- 目标属性:
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
- 使用此属性匹配对象:否
- 应用此映射:始终
- 目标属性:
保存您的配置。
直接映射
直接映射是表达式映射的替代方法。此实现同时适用于所有三种映射类型。为了分配用户,您需要使用 Microsoft Graph API。
在编辑属性视图中,选择直接映射类型。
设置以下字段:
- 源属性:选择 Entra 中允许的扩展属性之一(例如,
extensionAttribute1
) - 目标属性:
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole
- 使用此属性匹配对象:否
- 应用此映射:始终
如果您设置多个属性(例如角色和组织),则需要为每个属性选择不同的扩展属性。
- 源属性:选择 Entra 中允许的扩展属性之一(例如,
保存您的配置。
分配用户
如果您在上一步中使用了表达式映射,请导航到**应用程序注册**,选择**您的应用程序**和**应用程序角色**。为每个 Docker 角色创建一个应用程序角色。如果可能,请使用与 Docker 中角色直接等效的显示名称创建它,例如,owner
而不是Owner
。如果以这种方式设置,则可以使用表达式映射到SingleAppRoleAssignment([appRoleAssignments])
。否则,将不得不使用自定义开关。请参阅表达式映射。
添加用户
- 选择**您的应用程序**,然后选择**用户和组**。
- 选择**添加用户/组**,选择您要添加的用户,然后选择他们所需的**角色**。
添加组
- 选择**您的应用程序**,然后选择**用户和组**。
- 选择**添加用户/组**,选择您要添加的用户,然后选择他们所需的**角色**。
如果您在上一步中使用了直接映射,请转到**Microsoft Graph 资源管理器**并登录到您的租户。您需要是租户管理员才能使用此功能。使用 Microsoft Graph API 将扩展属性分配给用户,其值与属性映射到的值相对应。请参阅有关在扩展属性中添加或更新数据的Microsoft Graph API 文档。
有关更多详细信息,请参阅您的 IdP 的文档
禁用 SCIM
如果禁用 SCIM,则通过 SCIM 预配的任何用户都将保留在组织中。用户的未来更改将不会从您的 IdP 同步。只有在手动从组织中删除用户时,才能取消预配用户。
- 登录管理员控制台。
- 在左侧导航栏的下拉菜单中选择您的组织或公司,然后选择SSO 和 SCIM。
- 在 SSO 连接表中,选择**操作**图标。
- 选择**禁用 SCIM**。
- 登录 Docker Hub。
- 导航到您的组织或公司的 SSO 设置页面。
- 组织:选择组织,您的组织,设置,然后选择安全。
- 公司:选择组织,您的公司,然后选择设置。
- 在 SSO 连接表中,选择**操作**图标。
- 选择**禁用 SCIM**。
更多资源
以下视频演示了如何为您的 IdP 配置 SCIM