Configura SCIM en Okta

En este documento, se describe cómo configurar un usuario 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 admite solo un usuario de SCIM. Para configurar un usuario de SCIM nuevo en un grupo que ya tiene uno, primero debes borrar de forma permanente el usuario existente.

La marca --claim-mapping para un usuario de SCIM solo puede contener expresiones específicas de Common Expression Language (CEL). Para saber qué expresiones se admiten, consulta Asigna tokens y atributos de SCIM.

Para configurar el Sistema para la administración de identidades entre dominios (SCIM), haz lo siguiente:
  1. Configura un usuario y un token de SCIM en Google Cloud
  2. Configura SCIM en Okta
  3. Actualiza el proveedor para habilitar SCIM
  4. 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:

  1. 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 del grupo de identidades de personal 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 las asignaciones de atributos. Para obtener la lista extendida de atributos de asignación, consulta Asigna tokens y atributos de SCIM. Se recomienda la siguiente asignación para Gemini Enterprise:
      google.subject=user.emails[0].value.lowerAscii(),google.group=group.displayName

      El atributo google.subject que asignas en el usuario de SCIM debe hacer referencia de forma única a las mismas identidades que se asignan en el atributo google.subject en el proveedor del grupo de identidades de personal mediante el uso de la marca --attribute-mapping. Después de crear el usuario de SCIM, no puedes actualizar la asignación de reclamos. Para reemplazarlo, puedes borrar de forma permanente el usuario de SCIM y crear uno nuevo de inmediato. Para obtener más información sobre las consideraciones para usar SCIM, consulta Compatibilidad con SCIM.

  2. Cuando se complete el comando, haz lo siguiente:

    1. En el campo baseUri del resultado, guarda el URI completo, que tiene el formato https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. Debes proporcionar este URI a tu IdP.
    2. Además, desde el URI, guarda solo el SCIM_TENANT_UID. Necesitas este UID para establecer una política de IAM allow en el usuario de SCIM más adelante en este documento.
  3. 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 global
        

    Reemplaza 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: Es el ID del grupo de personal.
    • SCIM_TENANT_ID: Es el ID del usuario de SCIM.
    • PROVIDER_ID: Es el ID del proveedor del grupo de identidades de personal.
  4. Cuando se complete el comando gcloud iam workforce-pools providers scim-tenants tokens create, haz lo siguiente:

    1. En el resultado, guarda el valor de SCIM_TOKEN en el securityToken campo. 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.

    2. Para verificar si SCIM_TOKEN es rechazado por tu política de la organización, 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, que se describe en un paso posterior. Si el comando se ejecuta correctamente, puedes omitir ese paso.

  5. Establece una política de IAM allow en el usuario y el token de SCIM. Si el curl comando de 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.scimSyncer
        

    Reemplaza 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 displayName campo, sea único dentro de un usuario de SCIM. Para obtener más información sobre los grupos y SCIM en Microsoft Entra ID, consulta Grupos.

Configura SCIM en Okta

Para configurar SCIM en Okta, en tu aplicación de Okta existente, haz lo siguiente:

  1. Accede a la Consola del administrador de Okta.
  2. Go to Aplicaciones > Aplicaciones.
  3. Selecciona o crea tu aplicación:

    • Si deseas seleccionar una aplicación existente, haz lo siguiente:

      1. Haz clic en el nombre de la aplicación que creaste con la plantilla de la federación de identidades de personal de Google Cloud.
      2. En la pestaña General, haz lo siguiente:

        1. En el panel Configuración de la app, haz clic en Editar.
        2. En el campo Usuario, ingresa el ID de usuario obtenido de gcloud CLI.
        3. Haz clic en Listo.
    • Si deseas crear una aplicación nueva, haz lo siguiente:

      1. Haz clic en Browse App Catalog.
      2. En el campo Buscar, ingresa Federación de identidades de personal de Google Cloud y, luego, selecciona la integración de Federación de identidades de personal de Google Cloud en los resultados.
      3. Haz clic en Agregar integración.

        1. En el campo Aplicación, ingresa un nombre para tu app.
        2. En el campo Usuario, ingresa el ID de usuario obtenido de gcloud CLI.
        3. Haz clic en Listo.
  4. En la pestaña Aprovisionamiento, haz lo siguiente:

    1. En el panel Integración, haz clic en Editar.

      1. En el campo Token de API, ingresa el token de SCIM que obtuviste de Google Cloud.
      2. Para confirmar la validez del token de API, haz clic en Probar credenciales.
      3. Selecciona Importar grupos.
      4. Haz clic en Guardar.
    2. En el panel A la app, haz clic en Editar.

      1. Selecciona Crear usuarios, Actualizar atributos de usuario y Desactivar usuarios.
      2. Haz clic en Guardar.

Actualiza el proveedor para habilitar SCIM

Para habilitar SCIM para un proveedor, haz lo siguiente:

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: Es el ID del proveedor del grupo de identidades de personal.
  • WORKFORCE_POOL_ID: Es el ID del grupo de personal.
  • LOCATION: 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: Es el ID del proveedor del grupo de identidades de personal.
  • WORKFORCE_POOL_ID: Es el ID del grupo de personal.
  • LOCATION: Es la ubicación del grupo de personal.

Para verificar la sincronización de SCIM, consulta Verifica la sincronización de SCIM.

Asigna tokens y atributos de SCIM

Debes asignar atributos de manera coherente, tanto en el proveedor del grupo de identidades de personal como en el usuario de SCIM configurado para el proveedor. Para el proveedor del grupo de identidades de personal, usas la marca --attribute-mapping y, para el usuario de SCIM, usas la marca --claim-mapping. El atributo del IdP que se asigna a google.subject para los usuarios debe hacer referencia de forma única a la misma identidad, ya sea que se defina en un token o en una asignación de SCIM. Para obtener más información sobre la asignación de atributos cuando usas SCIM, consulta la sección Compatibilidad con SCIM. En la siguiente tabla, se muestra cómo asignar atributos en reclamos de tokens y atributos de SCIM:

Atributo de Google Asignación del proveedor del grupo de identidades de personal Asignación del usuario de SCIM
google.subject assertion.sub user.externalId
google.subject assertion.subject user.userName
google.subject assertion.subject.lowerAscii() user.userName.lowerAscii()
google.subject assertion.preferred_username user.userName
google.subject assertion.preferred_username.lowerAscii() user.userName.lowerAscii()
google.subject assertion.email user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()
google.group asegúrate de actualizar tu proveedor con --scim-usage=enabled-for-groups N/A group.displayName

Verifica la sincronización de SCIM

Después de configurar SCIM, puedes usar curl para verificar que los usuarios y los grupos se sincronicen correctamente con Google Cloud. Estos comandos requieren un token de SCIM válido y el ID de tu usuario de SCIM.

Verifica la sincronización de usuarios

Para verificar que un usuario se haya sincronizado correctamente, busca el userName del usuario 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 el displayName del grupo 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"

Respuesta de ejemplo si el usuario es miembro:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "GROUP_ID",
      "displayName": "GROUP_NAME",
      ...
    }
  ]
}

Respuesta de ejemplo si el usuario no es miembro:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 0,
  "Resources": []
}

Nota: Para obtener el GROUP_ID y el 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.

Borra de forma forzada un usuario de SCIM

Para borrar de forma forzada un usuario de SCIM, haz lo siguiente:

  1. Si --scim-usage=enabled-for-groups está configurado para tu proveedor, inhabilítalo en la configuración del proveedor:
              gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
                  --workforce-pool=WORKFORCE_POOL_ID \
                  --location=LOCATION \
                  --scim-usage=SCIM_USAGE_UNSPECIFIED
            

    Reemplaza lo siguiente:

    • PROVIDER_ID: Es el ID del proveedor del grupo de identidades de personal.
    • WORKFORCE_POOL_ID: Es el ID del grupo de personal.
    • LOCATION: Es la ubicación del grupo de personal.

  2. 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=global
    

    Reemplaza lo siguiente:

    • SCIM_TENANT_ID: Es el ID del usuario de SCIM que se borrará.
    • WORKFORCE_POOL_ID: Es el ID del grupo de personal.
    • PROVIDER_ID: Es el ID del proveedor del grupo de identidades de personal.
    Para obtener más información sobre SCIM, incluida la eliminación de usuarios de SCIM, consulta Compatibilidad con SCIM.

¿Qué sigue?