En este documento, se describe cómo configurar un arrendatario de SCIM en un grupo de identidades de personal. Para obtener más información sobre SCIM, consulta Aprovisionamiento de SCIM para la federación de identidades de personal.
Cada grupo de identidades de personal solo admite un inquilino de SCIM. Para configurar un nuevo usuario de SCIM en un grupo que ya tiene uno, primero debes borrar de forma definitiva el usuario existente.
La marca --claim-mapping para un arrendatario de SCIM solo puede contener expresiones específicas de Common Expression Language (CEL). Para saber qué expresiones se admiten, consulta Asignación de reclamaciones.
Asegúrate de que tu IdP proporcione valores únicos y no vacíos para los atributos asignados a google.subject y google.group. La sincronización de valores duplicados falla con un error HTTP 409 Conflict, y los valores nulos o vacíos fallan con un error HTTP 400 Bad Request. Para obtener más información, consulta Compatibilidad con SCIM.
Para configurar el Sistema para la administración de identidades entre dominios (SCIM), haz lo siguiente:
- Configura un usuario y un token de SCIM en Google Cloud
- Configura SCIM en Microsoft Entra ID
- Actualiza el proveedor para habilitar SCIM
- Verifica la sincronización de SCIM
Configura un usuario y un token de SCIM en Google Cloud
Para configurar un usuario de SCIM en Google Cloud, haz lo siguiente:
-
Crea un usuario de SCIM.
gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --provider="PROVIDER_ID" \ --display-name="SCIM_TENANT_DISPLAY_NAME" \ --description="SCIM_TENANT_DESCRIPTION" \ --claim-mapping="CLAIM_MAPPING" \ --location="global"Reemplaza lo siguiente:
SCIM_TENANT_ID: Es un ID para tu usuario de SCIM.WORKFORCE_POOL_ID: Es el ID del grupo de personal que creaste antes en este documento.PROVIDER_ID: Es el ID del proveedor de grupos de identidades para cargas de trabajo que creaste antes en este documento.SCIM_TENANT_DISPLAY_NAME: Es un nombre visible para tu usuario de SCIM.SCIM_TENANT_DESCRIPTION: Es una descripción para tu usuario de SCIM.CLAIM_MAPPING: Es una lista separada por comas de asignaciones de atributos. Para obtener la lista extendida de atributos de asignación, consulta Asignación de reclamaciones. Se recomienda la siguiente asignación para Gemini Enterprise:google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalIdEl atributo
google.subjectque asignas en el arrendatario de SCIM debe hacer referencia de forma inequívoca a las mismas identidades que se asignan en el atributogoogle.subjectdel proveedor de grupos de identidades de personal con la marca--attribute-mapping. Después de crear el arrendatario de SCIM, no podrás actualizar la asignación de reclamaciones. Para reemplazarlo, puedes borrar de forma definitiva el arrendatario de SCIM y crear uno nuevo de inmediato. Para obtener más información sobre las consideraciones para usar SCIM, consulta Compatibilidad con SCIM.
-
Cuando se complete el comando, haz lo siguiente:
-
En el campo
baseUridel resultado, guarda el URI completo, que tiene el formatohttps://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. Debes proporcionar este URI a tu IdP. -
Además, del URI, guarda solo el
SCIM_TENANT_UID. Necesitas este UID para establecer una política de IAM de permisos en el arrendatario de SCIM más adelante en este documento.
-
En el campo
-
Crea un token de SCIM:
gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \ --display-name DISPLAY_NAME \ --scim-tenant SCIM_TENANT_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider PROVIDER_ID \ --location globalReemplaza lo siguiente:
SCIM_TOKEN_ID: Es un ID para el token de SCIM.DISPLAY_NAME: Es el nombre visible del token de SCIM.WORKFORCE_POOL_ID: el ID del grupo de personalSCIM_TENANT_ID: Es el ID del usuario de SCIM.PROVIDER_ID: El ID del proveedor de grupo de identidades de personal
-
Cuando se complete el comando
gcloud iam workforce-pools providers scim-tenants tokens create, haz lo siguiente:-
En el resultado, guarda el valor de
SCIM_TOKENen el camposecurityToken. Debes proporcionar este token de seguridad a tu IdP. El token de seguridad solo se muestra en este resultado, y si se pierde, debes crear un token de SCIM nuevo. -
Para verificar si tu política de la organización rechaza
SCIM_TOKEN, ejecuta el siguiente comando:curl -v -H "Authorization: Bearer SCIM_TOKEN" https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users
Si el comando falla con un error relacionado con los permisos, ejecuta
gcloud organizations add-iam-policy-binding, como se describe en un paso posterior. Si el comando se ejecuta de forma correcta, puedes omitir ese paso.
-
-
Establece una política de permisos de IAM en el usuario y el token de SCIM. Si el comando
curlde un paso anterior falló con un error relacionado con los permisos, debes ejecutar el siguiente comando:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/iam.scimSyncerReemplaza lo siguiente:
- ORGANIZATION_ID: Es el ID de la organización.
- SERVICE_AGENT_EMAIL: Es la dirección de correo electrónico del agente de servicio. La dirección de correo electrónico tiene el siguiente formato:
o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com. SCIM_TENANT_UID se muestra cuando creas el usuario de SCIM.
Cuando aprovisiones grupos en tu IdP, asegúrate de que el nombre visible de cada grupo, como se proporciona en el campo displayName, sea único dentro de un arrendatario de SCIM. Para obtener más información sobre los grupos y SCIM en Microsoft Entra ID, consulta Grupos.
Configura SCIM en Microsoft Entra ID
Para configurar SCIM en Microsoft Entra ID, haz lo siguiente:
- Abre el portal de Azure y accede como un usuario que tenga privilegios de administrador global.
- Selecciona Microsoft Entra ID > Enterprise Apps.
- Haz clic en New application.
- En Browse Microsoft Entra App gallery, haz clic en Create your own application.
-
En el panel Crea tu propia aplicación que aparece, haz lo siguiente:
- En ¿Cuál es el nombre de tu app?, ingresa el nombre de tu app.
- Selecciona Integrar cualquier otra aplicación que no encuentres en la galería (no es de la galería).
- Para crear la app, haz clic en Crear.
-
En tu aplicación, haz lo siguiente:
- En la sección Administrar, haz clic en Aprovisionamiento.
- En el panel derecho que aparece, haz clic en Nueva configuración.
-
En Credenciales de administrador, en URL de usuario, ingresa la URL de SCIM que obtuviste cuando creaste el usuario de SCIM, agregada con
?aadOptscim062020. Debes agregar?aadOptscim062020al final del URI base.Microsoft Entra ID requiere este parámetro de consulta para garantizar que las solicitudes de SCIM PATCH cumplan con los estándares de la RFC de SCIM. Para obtener más detalles, consulta la documentación de Microsoft.
La URL final del arrendatario en Microsoft Entra ID debe tener el siguiente formato:
https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID?aadOptscim062020
Reemplaza
SCIM_TENANT_UIDpor el UID del usuario de SCIM. - En Token secreto, ingresa el token secreto que obtuviste cuando creaste el token de SCIM.
- Para probar la configuración de SCIM con la federación de identidades de personal, haz clic en Probar conexión.
- Para guardar la configuración, haz clic en Crear.
-
En la sección Administrar, haz lo siguiente:
- Haz clic en Asignación de atributos.
- Haz clic en Aprovisionar usuarios de Microsoft Entra ID.
-
En la página Attribute Mapping, haz lo siguiente:
-
En la tabla Asignaciones de atributos, busca la fila de externalId y haz clic en Editar en esa fila.
En la página Editar atributos, haz lo siguiente:
-
En la lista desplegable Atributo de origen, selecciona
objectId. - Haz clic en Aceptar.
-
En la lista desplegable Atributo de origen, selecciona
- Para guardar la asignación de atributos, haz clic en Guardar.
-
En la tabla Asignaciones de atributos, busca la fila de externalId y haz clic en Editar en esa fila.
En la página Editar atributos, haz lo siguiente:
Actualiza el proveedor para habilitar SCIM
Para habilitar SCIM en un proveedor, establece la marca --scim-usage según el objetivo de tu producto:
-
Habilitado para grupos (
enabled-for-groups): Se usa para Gemini Enterprise. Usa grupos sincronizados con SCIM para la autorización de IAM y la evaluación de políticas. Los atributos del usuario se siguen obteniendo de los tokens de acceso del IdP. -
Habilitado para usuarios y grupos (
enabled-for-users-groups): Se usa para Looker (vista previa). Utiliza los datos de usuarios y grupos sincronizados con SCIM como la principal fuente de reclamos para la autorización de IAM y los flujos de trabajo de acceso con OAuth.
Habilita SCIM para grupos (Gemini Enterprise)
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
Reemplaza lo siguiente:
PROVIDER_ID: El ID del proveedor de grupo de identidades de personalWORKFORCE_POOL_ID: el ID del grupo de personalLOCATION: Es la ubicación del grupo de personal.
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
Reemplaza lo siguiente:
PROVIDER_ID: El ID del proveedor de grupo de identidades de personalWORKFORCE_POOL_ID: el ID del grupo de personalLOCATION: Es la ubicación del grupo de personal.
Habilita SCIM para usuarios y grupos (Looker) (vista previa)
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-users-groups
Reemplaza lo siguiente:
PROVIDER_ID: El ID del proveedor de grupo de identidades de personalWORKFORCE_POOL_ID: el ID del grupo de personalLOCATION: Es la ubicación del grupo de personal.
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-users-groups
Reemplaza lo siguiente:
PROVIDER_ID: El ID del proveedor de grupo de identidades de personalWORKFORCE_POOL_ID: el ID del grupo de personalLOCATION: Es la ubicación del grupo de personal.
Para verificar la sincronización de SCIM, consulta Cómo verificar la sincronización de SCIM.
Asignación de reclamaciones
Cuando configuras SCIM, defines asignaciones de reclamaciones (--claim-mapping) en el usuario de SCIM para asignar atributos de usuarios y grupos de SCIM a atributos de Google.
Atributos Google Cloud compatibles para la asignación de reclamaciones
En la siguiente tabla, se enumeran los atributos de Google Cloud que puedes asignar en tu arrendatario de SCIM (--claim-mapping) con Common Expression Language (CEL):
| AtributoGoogle Cloud | Requisito | Descripción | Expresiones y límites admitidos |
|---|---|---|---|
google.subject |
Obligatorio |
Es el identificador único del usuario que se autentica. El atributo subyacente del IdP que se usa para completar |
Se restringe a las siguientes expresiones básicas (o con .lowerAscii()):
Longitud máxima: 127 bytes. Nota: Esta asignación es inmutable una vez que se crea el usuario de SCIM. Para actualizarla, debes borrar de forma permanente y volver a crear el usuario de SCIM. |
google.group |
Obligatorio para los grupos de SCIM | Es el identificador único de la pertenencia a un grupo que se sincronizó con SCIM. | Se restringe a las siguientes expresiones básicas (o con .lowerAscii()):
Nota: Esta asignación es inmutable una vez que se crea el usuario de SCIM. Para actualizarla, debes borrar de forma permanente y volver a crear el usuario de SCIM. |
google.display_name |
Opcional | Es un atributo que establece el nombre del usuario que accedió a la consola de Google Cloud . No se puede usar en las políticas de permiso de IAM. | Se asigna a un atributo de cadena (como user.displayName o user.name.formatted). La longitud máxima es de 100 bytes. |
google.profile_photo |
Opcional | Es la URL de la foto en miniatura del usuario que se ve como su foto de perfil en la consola de Google Cloud . No se puede usar en las políticas de permiso de IAM. | Debe evaluarse como una cadena de URL válida (como user.photos.filter(p, p.type == 'thumbnail')[0].value o user.photos[0].value). |
google.email |
Opcional | Es un atributo que se usa para asignar direcciones de correo electrónico del IdP a productos integrados con la integración de clientes de OAuth de la federación de identidades del personal. No se puede usar en las políticas de permiso de IAM. | Se asigna a un atributo de correo electrónico (como user.emails.filter(e, e.type == 'work')[0].value o user.emails[0].value). |
google.posix_username |
Opcional | Cadena de nombre de usuario única que cumple con POSIX y se usa para la conexión SSH en el navegador y el Acceso al SO con la federación de identidades de personal. Este atributo no se puede usar en las políticas de permiso de IAM. | La longitud máxima es de 32 caracteres. |
attribute.KEY |
Opcional |
Son atributos personalizados de tu IdP que puedes usar para definir tu estrategia de autorización en una política de permisos de IAM. Reemplaza KEY por el nombre del atributo que deseas usar. Por ejemplo, puedes definir un atributo personalizado como |
Hasta 50 reglas de asignación de atributos personalizados El tamaño máximo por regla es de 256 caracteres. |
Ejemplo de asignaciones para la coherencia del tema
Como se describe en Atributos admitidos para la asignación de reclamaciones, el atributo del IdP subyacente que se usa para propagar google.subject debe ser idéntico en la asignación del proveedor (--attribute-mapping) y en el inquilino de SCIM (--claim-mapping). En la siguiente tabla, se muestran ejemplos de referencia para el ID de Microsoft Entra:
| Atributo de Google | Asignación de proveedores de grupos de identidades del personal | Asignación de usuarios de SCIM |
|---|---|---|
google.subject |
assertion.oid |
user.externalId |
google.subject |
assertion.attributes['http://schemas.microsoft.com/identity/claims/objectidentifier'][0] |
user.externalId |
google.subject |
assertion.email |
user.emails[0].value |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0] |
user.emails[0].value |
google.subject |
assertion.email.lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0].lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.preferred_username |
user.userName |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0] |
user.userName |
google.subject |
assertion.preferred_username.lowerAscii() |
user.userName.lowerAscii() |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0].lowerAscii() |
user.userName.lowerAscii() |
Verifica la sincronización de SCIM
Después de configurar SCIM, puedes usar curl para consultar el extremo del servicio SCIM de IAM (iamscim.googleapis.com) y verificar que los usuarios y los grupos se sincronicen con Google Cloud. Estos comandos requieren un token de SCIM válido y el UID de tu arrendatario de SCIM. El servicio iamscim.googleapis.com implementa el protocolo SCIM 2.0 (RFC 7644). Para obtener detalles sobre los extremos admitidos, los filtros de consulta y las limitaciones, consulta Extremos admitidos y no admitidos y Limitaciones de las funciones del protocolo.
Verifica la sincronización del usuario
Para verificar que un usuario se haya sincronizado correctamente, busca su userName con el siguiente filtro:
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users?filter=userName%20eq%20%22USER_NAME%22"
Respuesta de ejemplo:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "USER_ID",
"userName": "USER_NAME",
...
}
]
}
Verifica la sincronización de grupos
Para verificar que un grupo se haya sincronizado correctamente, busca su displayName con el siguiente filtro:
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=displayName%20eq%20%22GROUP_NAME%22"
Respuesta de ejemplo:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
Verifica la pertenencia a un grupo
Para verificar si un usuario específico es miembro de un grupo, usa un filtro que especifique el ID del grupo y el ID del usuario.
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=id%20eq%20%22GROUP_ID%22%20and%20members%20eq%20%22USER_ID%22"
Ejemplo de respuesta si el usuario es miembro:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
Ejemplo de respuesta si el usuario no es miembro:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 0,
"Resources": []
}
Nota: Para obtener GROUP_ID y USER_ID, primero busca el grupo y el usuario con los filtros displayName y userName. Los IDs se muestran en el campo id de la respuesta. Reemplaza SCIM_TOKEN, SCIM_TENANT_UID, USER_NAME, GROUP_NAME, GROUP_ID y USER_ID por tus valores reales.
Forzar la eliminación de un usuario de SCIM
Para forzar el borrado de un usuario de SCIM, haz lo siguiente:
-
Si se configuró
--scim-usage=enabled-for-groupso--scim-usage=enabled-for-users-groupspara tu proveedor, inhabilítalo en la configuración del proveedor:OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location=LOCATION \ --scim-usage=SCIM_USAGE_UNSPECIFIEDReemplaza lo siguiente:
PROVIDER_ID: El ID del proveedor de grupo de identidades de personalWORKFORCE_POOL_ID: el ID del grupo de personalLOCATION: Es la ubicación del grupo de personal.
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location=LOCATION \ --scim-usage=SCIM_USAGE_UNSPECIFIEDReemplaza lo siguiente:
PROVIDER_ID: El ID del proveedor de grupo de identidades de personalWORKFORCE_POOL_ID: el ID del grupo de personalLOCATION: Es la ubicación del grupo de personal.
- Borra el usuario de SCIM:
gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --provider=PROVIDER_ID \ --hard-delete \ --location=globalReemplaza lo siguiente:
SCIM_TENANT_ID: Es el ID del usuario de SCIM que se borrará.WORKFORCE_POOL_ID: el ID del grupo de personalPROVIDER_ID: El ID del proveedor de grupo de identidades de personal
¿Qué sigue?
- Soluciona problemas de aprovisionamiento de SCIM
- Borra los usuarios de la federación de identidades de personal y sus datos
- Revoca las sesiones de los usuarios de la federación de identidades de personal
- Obtén información sobre qué Google Cloud productos admiten la federación de identidades de personal.
- Configura el acceso de usuario a la consola (federada)