Configurar el aprovisionamiento SCIM
Atributos admitidos
SCIM utiliza atributos (nombre, correo electrónico, etc.) para sincronizar la información del usuario entre tu proveedor de identidad y Docker. Mapear correctamente estos atributos en tu proveedor de identidad garantiza que el aprovisionamiento de usuarios funcione sin problemas y evita problemas como cuentas de usuario duplicadas al usar el inicio de sesión único.
Docker admite los siguientes atributos SCIM:
| Atributo | Descripción |
|---|---|
userName | Dirección de correo electrónico principal del usuario, utilizada como identificador único |
name.givenName | Nombre de pila del usuario |
name.familyName | Apellido del usuario |
active | Indica si un usuario está habilitado o deshabilitado; se establece en "false" para desaprovisionar a un usuario |
Para obtener detalles adicionales sobre los atributos admitidos y SCIM, consulta la referencia de la API SCIM de Docker Hub.
ImportantPor defecto, Docker utiliza el aprovisionamiento Just-in-Time (JIT) para SSO. Si SCIM está habilitado, los valores de JIT aún tienen prioridad y sobrescribirán los valores de atributos establecidos por SCIM. Para evitar conflictos, asegúrate de que los valores de tus atributos JIT coincidan con los de SCIM.
Como alternativa, puedes deshabilitar el aprovisionamiento JIT para depender únicamente de SCIM. Para obtener detalles, consulta Just-in-Time.
Habilitar SCIM en Docker
Para habilitar SCIM:
- Inicia sesión en Docker Home.
- Selecciona Admin Console (Consola de administración), luego SSO and SCIM.
- En la tabla SSO connections (Conexiones SSO), selecciona el icono de acciones (Actions) para tu conexión, y luego selecciona Setup SCIM (Configurar SCIM).
- Copia la SCIM Base URL (URL base de SCIM) y el API Token (Token de API) y pega estos valores en tu IdP.
Habilitar SCIM en tu IdP
La interfaz de usuario de tu proveedor de identidad puede diferir ligeramente de los pasos que se muestran a continuación. Puedes consultar la documentación de tu proveedor de identidad para verificar los pasos. Para más detalles, consulta la documentación correspondiente:
NoteMicrosoft no admite actualmente SCIM y OIDC en la misma aplicación que no pertenece a la galería en Entra ID. Esta página proporciona una solución alternativa verificada utilizando una aplicación independiente que no pertenece a la galería para el aprovisionamiento SCIM. Aunque Microsoft no documenta oficialmente esta configuración, es ampliamente utilizada y compatible en la práctica.
Paso uno: Habilitar SCIM
- Inicia sesión en Okta y selecciona Admin para abrir el portal de administración.
- Abre la aplicación que creaste al configurar tu conexión SSO.
- En la página de la aplicación, selecciona la pestaña General y luego Edit App Settings (Editar ajustes de la aplicación).
- Habilita el aprovisionamiento SCIM y luego selecciona Save (Guardar).
- Navega a Provisioning (Aprovisionamiento) y luego selecciona Edit SCIM Connection (Editar conexión SCIM).
- Para configurar SCIM en Okta, establece tu conexión utilizando los siguientes valores y ajustes:
- SCIM Base URL: URL base del conector SCIM (copiada de Docker Home).
- Unique identifier field for users (Campo identificador único para usuarios):
email. - Supported provisioning actions (Acciones de aprovisionamiento admitidas): Push New Users (Enviar nuevos usuarios) y Push Profile Updates (Enviar actualizaciones de perfil).
- Authentication Mode (Modo de autenticación): HTTP Header.
- SCIM Bearer Token: Token de portador de autorización de cabecera HTTP (copiado de Docker Home).
- Selecciona Test Connector Configuration (Probar configuración del conector).
- Revisa los resultados de la prueba y selecciona Save (Guardar).
Paso dos: Habilitar la sincronización
- En Okta, selecciona Provisioning (Aprovisionamiento).
- Selecciona To App (A la aplicación) y luego Edit (Editar).
- Habilita Create Users (Crear usuarios), Update User Attributes (Actualizar atributos de usuario) y Deactivate Users (Desactivar usuarios).
- Selecciona Save (Guardar).
- Elimina los mapeos innecesarios. Los mapeos necesarios son:
- Username (Nombre de usuario)
- Given name (Nombre de pila)
- Family name (Apellido)
A continuación, configura el mapeo de roles.
Microsoft no admite SCIM y OIDC en la misma aplicación que no pertenece a la galería. Debes crear una segunda aplicación que no pertenezca a la galería en Entra ID para el aprovisionamiento SCIM.
Paso uno: Crear una aplicación SCIM independiente
- En el portal de Azure, ve a Microsoft Entra ID > Enterprise Applications (Aplicaciones empresariales) > New application (Nueva aplicación).
- Selecciona Create your own application (Crear tu propia aplicación).
- Nombra tu aplicación y elige Integrate any other application you don't find in the gallery (Integrar cualquier otra aplicación que no encuentres en la galería).
- Selecciona Create (Crear).
Paso dos: Configurar el aprovisionamiento SCIM
- En tu nueva aplicación SCIM, ve a Provisioning (Aprovisionamiento) > Get started (Comenzar).
- Establece el Provisioning Mode (Modo de aprovisionamiento) en Automatic (Automático).
- En Admin Credentials (Credenciales de administrador):
- Tenant URL: Pega la SCIM Base URL de Docker Home.
- Secret Token: Pega el SCIM API token de Docker Home.
- Selecciona Test Connection (Probar conexión) para verificar.
- Selecciona Save (Guardar) para almacenar las credenciales.
A continuación, configura el mapeo de roles.
- En el portal de Azure, ve a Microsoft Entra ID > Enterprise Applications (Aplicaciones empresariales) y selecciona tu aplicación SAML de Docker.
- Selecciona Provisioning (Aprovisionamiento) > Get started (Comenzar).
- Establece el Provisioning Mode (Modo de aprovisionamiento) en Automatic (Automático).
- En Admin Credentials (Credenciales de administrador):
- Tenant URL: Pega la SCIM Base URL de Docker Home.
- Secret Token: Pega el SCIM API token de Docker Home.
- Selecciona Test Connection (Probar conexión) para verificar.
- Selecciona Save (Guardar) para almacenar las credenciales.
A continuación, configura el mapeo de roles.
Configurar el mapeo de roles
Puedes asignar roles de Docker a los usuarios añadiendo atributos opcionales de SCIM en tu IdP. Estos atributos sobrescriben los valores de rol y equipo predeterminados establecidos en tu configuración de SSO.
NoteLos mapeos de roles son compatibles tanto con SCIM como con el aprovisionamiento Just-in-Time (JIT). Para JIT, el mapeo de roles se aplica solo cuando el usuario se aprovisiona por primera vez.
La siguiente tabla muestra los atributos opcionales admitidos a nivel de usuario:
| Atributo | Valores posibles | Notas |
|---|---|---|
dockerRole | member, editor u owner | Si no se establece, el usuario toma por defecto el rol member. Establecer este atributo sobrescribe el valor predeterminado.Para las definiciones de roles, consulta Roles y permisos. |
dockerOrg | organizationName de Docker (ej., moby) | Sobrescribe la organización predeterminada configurada en tu conexión SSO. Si no se establece, el usuario se aprovisiona en la organización predeterminada. Si se configuran tanto dockerOrg como dockerTeam, el usuario se aprovisiona en el equipo dentro de la organización especificada. |
dockerTeam | teamName de Docker (ej., developers) | Aprovisiona al usuario en el equipo especificado en la organización predeterminada o especificada. Si el equipo no existe, se crea automáticamente. Aún puedes usar el mapeo de grupos para asignar usuarios a varios equipos en distintas organizaciones. |
El espacio de nombres externo utilizado para estos atributos es: urn:ietf:params:scim:schemas:extension:docker:2.0:User.
Este valor es obligatorio en tu proveedor de identidad al crear atributos SCIM personalizados para Docker.
Paso uno: Configurar el mapeo de roles en Okta
- Configura SSO y SCIM primero.
- In el portal de administración de Okta, ve a Directory (Directorio), selecciona Profile Editor (Editor de perfiles) y luego User (Default) (Usuario por defecto).
- Selecciona Add Attribute (Añadir atributo) y configura los valores para el rol, la organización o el equipo que deseas añadir. No es obligatorio que los nombres sean exactos.
- Regresa al Profile Editor y selecciona tu aplicación.
- Selecciona Add Attribute (Añadir atributo) e introduce los valores requeridos. El External Name (Nombre externo) y el External Namespace (Espacio de nombres externo) deben ser exactos.
- Los valores de nombre externo para el mapeo de organización/equipo/rol son
dockerOrg,dockerTeamydockerRolerespectivamente, como se muestra en la tabla anterior. - El espacio de nombres externo es el mismo para todos ellos:
urn:ietf:params:scim:schemas:extension:docker:2.0:User.
- Los valores de nombre externo para el mapeo de organización/equipo/rol son
- Después de crear los atributos, ve a la parte superior de la página y selecciona Mappings (Mapeos), luego Okta User to YOUR APP (Usuario de Okta a TU APLICACIÓN).
- Ve a los atributos recién creados y mapea los nombres de las variables a los nombres externos, luego selecciona Save Mappings (Guardar mapeos). Si estás utilizando el aprovisionamiento JIT, continúa con los pasos siguientes.
- Navega a Applications (Aplicaciones) y selecciona YOUR APP (TU APLICACIÓN).
- Selecciona General, luego SAML Settings (Ajustes de SAML) y Edit (Editar).
- Selecciona Step 2 (Paso 2) y configura el mapeo desde el atributo de usuario a las variables de Docker.
Paso dos: Asignar roles por usuario
- En el portal de administración de Okta, selecciona Directory (Directorio) y luego People (Personas).
- Selecciona Profile (Perfil) y luego Edit (Editar).
- Selecciona Attributes (Atributos) y actualización de atributos a los valores deseados.
Paso tres: Asignar roles por grupo
- En el portal de administración de Okta, selecciona Directory (Directorio) y luego People (Personas).
- Selecciona YOUR GROUP (TU GRUPO) y luego Applications (Aplicaciones).
- Abre YOUR APPLICATION (TU APLICACIÓN) y selecciona el icono Edit (Editar).
- Actualiza los atributos con los valores deseados.
Si un usuario no tiene atributos configurados previamente, los usuarios que se añadan al grupo heredarán estos atributos al ser aprovisionados.
Paso uno: Configurar los mapeos de atributos
- Completa la configuración del aprovisionamiento SCIM.
- En el portal de Azure, abre Microsoft Entra ID > Enterprise Applications (Aplicaciones empresariales) y selecciona tu aplicación SCIM.
- Ve a Provisioning (Aprovisionamiento) > Mappings (Mapeos) > Provision Azure Active Directory Users (Aprovisionar usuarios de Azure Active Directory).
- Añade o actualiza los siguientes mapeos:
userPrincipalName->userNamemail->emails.value- Opcional. Mapea
dockerRole,dockerOrgodockerTeamutilizando uno de los métodos de mapeo.
- Elimina cualquier atributo no admitido para evitar errores de sincronización.
- Opcional. Ve a Mappings (Mapeos) > Provision Azure Active Directory Groups (Aprovisionar grupos de Azure Active Directory):
- Si el aprovisionamiento de grupos causa errores, establece Enabled (Habilitado) en No.
- Si lo habilitas, prueba los mapeos de grupos con cuidado.
- Selecciona Save (Guardar) para aplicar los mapeos.
Paso dos: Elegir un método de mapeo de roles
Puedes mapear dockerRole, dockerOrg o dockerTeam utilizando uno de los siguientes métodos:
Mapeo por expresiones
Utiliza este método si solo necesitas asignar roles de Docker como member, editor u owner.
- En la vista Edit Attribute (Editar atributo), establece el tipo de mapeo en Expression (Expresión).
- En el campo Expression (Expresión):
- Si tus App Roles (roles de aplicación) coinciden exactamente con los roles de Docker, usa:
SingleAppRoleAssignment([appRoleAssignments]). - Si no coinciden, usa una expresión de tipo switch:
Switch(SingleAppRoleAssignment([appRoleAssignments]), "My Corp Admins", "owner", "My Corp Editors", "editor", "My Corp Users", "member").
- Si tus App Roles (roles de aplicación) coinciden exactamente con los roles de Docker, usa:
- Establece:
- Target attribute (Atributo de destino):
urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole - Match objects using this attribute (Hacer coincidir objetos usando este atributo): No
- Apply this mapping (Aplicar este mapeo): Always (Siempre)
- Target attribute (Atributo de destino):
- Guarda tus cambios.
WarningNo puedes utilizar
dockerOrgodockerTeamcon este método. El mapeo por expresiones solo es compatible con un atributo.
Mapeo directo
Utiliza este método si necesitas mapear varios atributos (dockerRole + dockerTeam).
- Para cada atributo de Docker, elige un atributo de extensión de Entra único (
extensionAttribute1,extensionAttribute2, etc.). - En la vista Edit Attribute (Editar atributo):
- Establece el tipo de mapeo en Direct (Directo).
- Establece el Source attribute (Atributo de origen) en el atributo de extensión que seleccionaste.
- Establece el Target attribute (Atributo de destino) en uno de los siguientes:
dockerRole: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRoledockerOrg: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerOrgdockerTeam: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerTeam
- Establece Apply this mapping (Aplicar este mapeo) en Always (Siempre).
- Guarda tus cambios.
Para asignar valores, necesitarás utilizar la API de Microsoft Graph.
Paso tres: Asignar usuarios y grupos
Para cualquier método de mapeo:
- In the SCIM app, go to Users and Groups (Usuarios y grupos) > Add user/group (Añadir usuario/grupo).
- Selecciona los usuarios o grupos que deseas aprovisionar en Docker.
- Selecciona Assign (Asignar).
Si utilizas mapeo por expresiones:
- Ve a App registrations (Registros de aplicaciones) > tu aplicación SCIM > App Roles (Roles de aplicación).
- Crea los App Roles que coincidan con los roles de Docker.
- Asigna usuarios o grupos a los App Roles bajo Users and Groups (Usuarios y grupos).
Si utilizas mapeo directo:
- Ve al Explorador de Microsoft Graph e inicia sesión como administrador del tenant.
- Utiliza la API de Microsoft Graph para asignar los valores de los atributos. Ejemplo de solicitud PATCH:
PATCH https://graph.microsoft.com/v1.0/users/{user-id}
Content-Type: application/json
{
"extensionAttribute1": "owner",
"extensionAttribute2": "moby",
"extensionAttribute3": "developers"
}NoteDebes utilizar un atributo de extensión diferente para cada campo de SCIM.
Consulta la documentación de tu IdP para obtener detalles adicionales:
Probar el aprovisionamiento SCIM
Después de completar el mapeo de roles, puedes probar la configuración de forma manual.
- En el portal de administración de Okta, ve a Directory > People (Directorio > Personas).
- Selecciona un usuario que hayas asignado a tu aplicación SCIM.
- Selecciona Provision User (Aprovisionar usuario).
- Espera unos segundos y luego verifica la Admin Console de Docker bajo Members (Miembros).
- Si el usuario no aparece, revisa los registros en Reports > System Log (Informes > Registro del sistema) y confirma los ajustes de SCIM en la aplicación.
- En el portal de Azure, ve a Microsoft Entra ID > Enterprise Applications (Aplicaciones empresariales) y selecciona tu aplicación SCIM.
- Ve a Provisioning (Aprovisionamiento) > Provision on demand (Aprovisionar bajo demanda).
- Selecciona un usuario o grupo y elige Provision (Aprovisionar).
- Confirma que el usuario aparece en la Admin Console de Docker bajo Members (Miembros).
- Si es necesario, comprueba los registros de aprovisionamiento (Provisioning logs) para ver si hay errores.
Deshabilitar SCIM
Si SCIM está deshabilitado, cualquier usuario aprovisionado mediante SCIM permanecerá en la organización. Los cambios futuros de tus usuarios no se sincronizarán desde tu IdP. El desaprovisionamiento de usuarios solo será posible eliminándolos manualmente de la organización.
Para deshabilitar SCIM:
- Inicia sesión en Docker Home.
- Selecciona Admin Console (Consola de administración) y luego SSO and SCIM.
- En la tabla SSO connections (Conexiones SSO), selecciona el icono de acciones.
- Selecciona Disable SCIM (Deshabilitar SCIM).
Siguientes pasos
- Configura el mapeo de grupos.
- Resolución de problemas de aprovisionamiento.