Configura la federación de identidades de personal

En esta guía, se describe cómo configurar la federación de identidades de personal con un proveedor de identidad (IdP) compatible con OIDC o SAML 2.0.

Para obtener instrucciones específicas del IdP, consulta lo siguiente:

Antes de comenzar

  1. Asegúrate de tener configurada una organización de Google Cloud.
  2. After installing the Google Cloud CLI, configure the gcloud CLI to use your federated identity and then initialize it by running the following command:

    gcloud init
  3. Enable the Identity and Access Management (IAM) and Resource Manager APIs.

    Enable the APIs

  4. Para el acceso, tu IdP debe proporcionar información de autenticación firmada: los IdP de OIDC deben proporcionar un JWT y las respuestas del IdP de SAML deben estar firmadas.
  5. Para recibir información importante sobre los cambios en tu organización o productos de Google Cloud, debes proporcionar Essential Contacts. Para obtener más información, consulta la descripción general de la federación de identidades de personal.

Roles obligatorios

A fin de obtener los permisos que necesitas para configurar la federación de identidades de personal, pídele a tu administrador que te otorgue el rol de IAM Workforce Identity Pool Admin (roles/iam.workforcePoolAdmin) en la organización. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Como alternativa, el rol básico Owner (roles/owner) también incluye permisos para configurar la federación de identidades de personal. No deberías otorgar funciones básicas en un entorno de producción, pero puedes otorgarlas en un entorno de desarrollo o de prueba.

Configura la federación de identidades de personal

Para configurar la federación de identidades de personal, crea un Grupo de identidad del personal y un proveedor de Grupo de identidad del personal.

Crea un grupo de Workforce Identity

Para crear el grupo, ejecuta el siguiente comando:

Console

Para crear el grupo de identidades de personal, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Grupos de identidades de personal:

    Ir a Grupos de identidades de personal

  2. Haz clic en Crear grupo y haz lo siguiente:

    1. En el campo Nombre, ingresa el nombre visible del grupo. El ID del grupo se deriva automáticamente del nombre a medida que escribes y se muestra en el campo Nombre. Para actualizar el ID del grupo, haz clic en Editar junto a él.

    2. Opcional: En Descripción, ingresa una descripción del grupo.

    3. La duración de la sesión se establece de forma predeterminada. Para ingresar una duración de la sesión personalizada, haz clic en Editar. La duración de la sesión, que determina el tiempo de acceso a los tokens de acceso de Google Cloud, las sesiones de acceso de la consola (federada) y las sesiones de acceso de la gcloud CLI de este grupo de personal son válidas. La duración debe ser superior a 15 minutos (900 s) y menor a 12 horas (43200 s). Si la duración de la sesión no se establece, el valor predeterminado es de una hora (3,600 s).

    4. Para crear el grupo en el estado habilitado, asegúrate de que la opción Grupo habilitado esté activada.

    5. Para crear el grupo de identidades de personal, haz clic en Siguiente.

gcloud

Para crear el grupo de identidades de personal, ejecuta el siguiente comando:

gcloud iam workforce-pools create WORKFORCE_POOL_ID \
    --organization=ORGANIZATION_ID \
    --display-name="DISPLAY_NAME" \
    --description="DESCRIPTION" \
    --session-duration=SESSION_DURATION \
    --location=global

Reemplaza lo siguiente:

  • WORKFORCE_POOL_ID: un ID que elijas para representar el grupo de personal de Google Cloud. Para obtener información sobre el formato del ID, consulta la sección Parámetros de consulta en la documentación de la API.
  • ORGANIZATION_ID: el ID numérico de la organización de Google Cloud.
  • DISPLAY_NAME: Opcional Un nombre visible para tu grupo de identidad del personal.
  • DESCRIPTION: Opcional Una descripción del grupo de identidad del personal.
  • SESSION_DURATION: Opcional La duración de la sesión, que determina el tiempo de acceso a los tokens de acceso de Google Cloud, las sesiones de acceso de la consola (federada) y las sesiones de acceso de la gcloud CLI de este grupo de personal son válidas. La duración debe ser superior a 15 minutos (900 s) y menor a 12 horas (43200 s). Si la duración de la sesión no se establece, el valor predeterminado es de una hora (3,600 s).

Crea un proveedor de grupos de Workforce Identity

En esta sección, se describe cómo crear un proveedor de grupos de identidades de personal para permitir que los usuarios de tu IdP accedan a Google Cloud. Puedes configurar el proveedor para que use el protocolo OIDC o SAML.

Crea un proveedor de grupos de trabajadores de OIDC

Para crear un proveedor de grupos de identidades de personal con el protocolo OIDC, haz lo siguiente:

  1. En tu IdP de OIDC, registra una aplicación nueva para la federación de identidades de personal de Google Cloud. Toma nota del ID de cliente y el URI del emisor que proporcionó el IdP. Los usarás en este documento.

  2. Si planeas configurar el acceso de usuario a la consola, agrega la siguiente URL de redireccionamiento a tu IdP de OIDC:

    https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    Para obtener información sobre cómo configurar el acceso de la consola (federada), consulta Configura el acceso del usuario a la consola (federada).

  3. En Google Cloud, para crear el proveedor, haz lo siguiente:

    Console

    Flujo de código

    En la consola de Google Cloud, para crear un proveedor de OIDC que use el flujo de código de autorización, haz lo siguiente:

    1. En la consola de Google Cloud, ve a la página Grupos de identidades de personal:

      Ir a Grupos de identidades de personal

    2. En la tabla grupos de identidad del personal, selecciona el grupo para el que deseas crear el proveedor.

    3. En la tabla Proveedores, haz clic en Agregar proveedor.

    4. En Seleccionar un protocolo, selecciona Open ID Connect (OIDC).

    5. En Crear un proveedor de grupos, haz lo siguiente:

      1. En Nombre del proveedor, ingresa un nombre para el proveedor.
      2. En Emisor (URL), ingresa el URI de la entidad emisora. El URI de la entidad emisora de OIDC debe tener un formato de URI válido y comenzar con https; por ejemplo, https://example.com/oidc.
      3. Ingresa el ID de cliente, el ID de cliente de OIDC que está registrado con el IdP de OIDC; el ID debe coincidir con la reclamación aud del JWT que emite el IdP.
      4. Para crear un proveedor habilitado, asegúrate de que la opción Enabled Provider esté activada.
      5. Haz clic en Continuar.
    6. En Tipo de respuesta, haz lo siguiente: El tipo de respuesta solo se usa para un flujo de inicio de sesión único basado en la Web.

      1. En Tipo de respuesta, selecciona Código.
      2. En Secreto de cliente, ingresa el secreto de cliente de tu IdP.
      3. En Comportamiento de los reclamos de aserciones, selecciona una de las siguientes opciones:

        • Información del usuario y token de ID
        • Solo token de ID
      4. Haz clic en Continuar.

    7. En Configurar proveedor, puedes configurar una asignación de atributos y una condición de atributo. Para crear una asignación de atributos, haz lo siguiente: Puedes proporcionar el nombre del campo del IdP o una expresión con formato CEL que devuelva una cadena.

      1. Obligatorio: En OIDC 1, ingresa el asunto del IdP, por ejemplo, assertion.sub.

      2. Opcional: Para agregar asignaciones de atributos adicionales, haz lo siguiente:

        1. Haz clic en Agregar asignación.
        2. En Google n, donde n es un número, ingresa una de las claves compatibles con Google Cloud.
        3. En el campo OIDC n correspondiente, ingresa el nombre del campo específico de la IdP que deseas asignar, en formato CEL.
      3. Para crear una condición de atributo, haz lo siguiente:

        1. Haz clic en Agregar condición:
        2. En Condiciones del atributo, ingresa una condición en formato CEL, por ejemplo, assertion.role == 'gcp-users'. Esta condición de ejemplo garantiza que solo los usuarios con el rol gcp-users puedan acceder mediante este proveedor.
    8. Para crear el proveedor, haz clic en Enviar.

    Flujo implícito

    En la consola de Google Cloud, para crear un proveedor de OIDC que use el flujo implícito, haz lo siguiente:

    1. En la consola de Google Cloud, ve a la página Grupos de identidades de personal:

      Ir a Grupos de identidades de personal

    2. En la tabla grupos de identidad del personal, selecciona el grupo para el que deseas crear el proveedor.

    3. En la tabla Proveedores, haz clic en Agregar proveedor.

    4. En Seleccionar un protocolo, selecciona Open ID Connect (OIDC).

    5. En Crear un proveedor de grupos, haz lo siguiente:

      1. En Nombre del proveedor, ingresa un nombre para el proveedor.
      2. En Emisor (URL), ingresa el URI de la entidad emisora. El URI de la entidad emisora de OIDC debe tener un formato de URI válido y comenzar con https; por ejemplo, https://example.com/oidc.
      3. Ingresa el ID de cliente, el ID de cliente de OIDC que está registrado con el IdP de OIDC; el ID debe coincidir con la reclamación aud del JWT que emite el IdP.
      4. Para crear un proveedor habilitado, asegúrate de que la opción Enabled Provider esté activada.
      5. Haz clic en Continuar.
    6. En Tipo de respuesta, haz lo siguiente: El tipo de respuesta solo se usa para un flujo de inicio de sesión único basado en la Web.

      1. En Tipo de respuesta, selecciona Token de ID.
      2. Haz clic en Continuar.
    7. En Configurar proveedor, puedes configurar una asignación de atributos y una condición de atributo. Para crear una asignación de atributos, haz lo siguiente: Puedes proporcionar el nombre del campo del IdP o una expresión con formato CEL que devuelva una cadena.

      1. Obligatorio: En OIDC 1, ingresa el asunto del IdP, por ejemplo, assertion.sub.

      2. Opcional: Para agregar asignaciones de atributos adicionales, haz lo siguiente:

        1. Haz clic en Agregar asignación.
        2. En Google n, donde n es un número, ingresa una de las claves compatibles con Google Cloud.
        3. En el campo OIDC n correspondiente, ingresa el nombre del campo específico de la IdP que deseas asignar, en formato CEL.
      3. Para crear una condición de atributo, haz lo siguiente:

        1. Haz clic en Agregar condición:
        2. En Condiciones del atributo, ingresa una condición en formato CEL, por ejemplo, assertion.role == 'gcp-users'. Esta condición de ejemplo garantiza que solo los usuarios con el rol gcp-users puedan acceder mediante este proveedor.

    8. Para crear el proveedor, haz clic en Enviar.

    gcloud

    Flujo de código

    A fin de crear un proveedor de OIDC que use el flujo de código de autorización para el acceso web, ejecuta el siguiente comando:

    gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --display-name="DISPLAY_NAME" \
        --description="DESCRIPTION" \
        --issuer-uri="ISSUER_URI" \
        --client-id="OIDC_CLIENT_ID" \
    --client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --location=global

    Reemplaza lo siguiente:

    • WORKFORCE_PROVIDER_ID: Un ID de proveedor de grupos de identidades de personal único. El prefijo gcp- está reservado y no se puede usar en un grupo de identidad de personal ni en el ID de proveedor del grupo de identidad de personal.
    • WORKFORCE_POOL_ID: El ID del grupo de identidades de personal al que se conecta el IdP.
    • DISPLAY_NAME: un nombre visible opcional, fácil de usar para el proveedor, por ejemplo, idp-eu-employees.
    • DESCRIPTION: una descripción opcional del proveedor de personal, por ejemplo, IdP for Partner Example Organization employees.
    • ISSUER_URI: El URI de la entidad emisora de OIDC, en un formato de URI válido, que comienza con https; por ejemplo: https://example.com/oidc. Nota: Por motivos de seguridad, ISSUER_URI debe usar el esquema HTTPS.
    • OIDC_CLIENT_ID: El ID de cliente de OIDC que está registrado con el IdP de OIDC. El ID debe coincidir con la reclamación aud del JWT que emite el IdP.
    • OIDC_CLIENT_SECRET: El secreto del cliente de OIDC.
    • WEB_SSO_ADDITIONAL_SCOPES: Permisos adicionales opcionales así enviarle al IdP de OIDC para la consola (federada) o el acceso basado en el navegador de la gcloud CLI.
    • ATTRIBUTE_MAPPING: Una asignación de atributos. A continuación, se muestra un ejemplo de una asignación de atributos:
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      En este ejemplo, se asignan los atributos de IdP subject, group1 y costcenter en la aserción de OIDC a los atributos google.subject, google.groups y attribute.costcenter, respectivamente.
    • ATTRIBUTE_CONDITION: una condición de atributo; por ejemplo, assertion.role == 'gcp-users'. Esta condición de ejemplo garantiza que solo los usuarios con el rol gcp-users puedan acceder mediante este proveedor.
    • JWK_JSON_PATH: Una ruta de acceso opcional a un JWK de OIDC subido de forma local. Si no se proporciona este parámetro, Google Cloud usa la ruta de acceso /.well-known/openid-configuration de tu IdP para obtener los JWK que contienen las claves públicas. Encuentra más información sobre los JWK de OIDC subidos de forma local en Administra los JWK de OIDC.
    En la respuesta del comando, POOL_RESOURCE_NAME es el nombre del grupo; por ejemplo, locations/global/workforcePools/enterprise-example-organization-employees.

    Flujo implícito

    Para crear un proveedor de OIDC que use el flujo implícito para el acceso web, ejecuta el siguiente comando:

    gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --display-name="DISPLAY_NAME" \
        --description="DESCRIPTION" \
        --issuer-uri="ISSUER_URI" \
        --client-id="OIDC_CLIENT_ID" \
        --web-sso-response-type="id-token" \
        --web-sso-assertion-claims-behavior="only-id-token-claims" \
        --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \
        --attribute-mapping="ATTRIBUTE_MAPPING" \
        --attribute-condition="ATTRIBUTE_CONDITION" \
        --jwk-json-path="JWK_JSON_PATH" \
        --location=global
    

    Reemplaza lo siguiente:

    • WORKFORCE_PROVIDER_ID: Un ID de proveedor de grupos de identidades de personal único. El prefijo gcp- está reservado y no se puede usar en un grupo de identidad de personal ni en el ID de proveedor del grupo de identidad de personal.
    • WORKFORCE_POOL_ID: El ID del grupo de identidades de personal al que se conecta el IdP.
    • DISPLAY_NAME: un nombre visible opcional, fácil de usar para el proveedor, por ejemplo, idp-eu-employees.
    • DESCRIPTION: una descripción opcional del proveedor de personal, por ejemplo, IdP for Partner Example Organization employees.
    • ISSUER_URI: El URI de la entidad emisora de OIDC, en un formato de URI válido, que comienza con https; por ejemplo: https://example.com/oidc. Nota: Por motivos de seguridad, ISSUER_URI debe usar el esquema HTTPS.
    • OIDC_CLIENT_ID: El ID de cliente de OIDC que está registrado con el IdP de OIDC. El ID debe coincidir con la reclamación aud del JWT que emite el IdP.
    • WEB_SSO_ADDITIONAL_SCOPES: Permisos adicionales opcionales así enviarle al IdP de OIDC para la consola (federada) o el acceso basado en el navegador de la gcloud CLI.
    • ATTRIBUTE_MAPPING: Una asignación de atributos. A continuación, se muestra un ejemplo de una asignación de atributos:
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      En este ejemplo, se asignan los atributos de IdP subject, group1 y costcenter en la aserción de OIDC a los atributos google.subject, google.groups y attribute.costcenter, respectivamente.
    • ATTRIBUTE_CONDITION: una condición de atributo; por ejemplo, assertion.role == 'gcp-users'. Esta condición de ejemplo garantiza que solo los usuarios con el rol gcp-users puedan acceder mediante este proveedor.
    • JWK_JSON_PATH: Una ruta de acceso opcional a un JWK de OIDC subido de forma local. Si no se proporciona este parámetro, Google Cloud usa la ruta de acceso /.well-known/openid-configuration de tu IdP para obtener los JWK que contienen las claves públicas. Encuentra más información sobre los JWK de OIDC subidos de forma local en Administra los JWK de OIDC.
    En la respuesta del comando, POOL_RESOURCE_NAME es el nombre del grupo; por ejemplo, locations/global/workforcePools/enterprise-example-organization-employees.

    El prefijo gcp- está reservado y no se puede usar en un grupo de identidad de personal ni en el ID de proveedor del grupo de identidad de personal.

    Para la federación de OIDC, puedes usar assertion.NAME: una string igual al valor de la reclamación con nombre similar en la carga útil del token de ID.

Crea un proveedor de grupos de personal de SAML

  1. En tu IdP de SAML, registra una aplicación nueva para la federación de identidades de personal de Google Cloud.

  2. Configura el público para las aserciones de SAML. Por lo general, es el campo SP Entity ID en la configuración de IdP. Debes configurarla en la siguiente URL:

    https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    
  3. Si planeas configurar el acceso de usuario a la consola, en tu IdP de SAML, configura la URL de redireccionamiento o el campo de URL del servicio de confirmación de consumidores (ACS) en la siguiente URL:

    https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    Consulta Configura el acceso de usuario a la consola para obtener más detalles sobre la configuración del acceso a la consola.

  4. En Google Cloud, crea un proveedor de grupos de identidad de trabajadores de SAML mediante el documento de metadatos de SAML de tu IdP. Puedes descargar el documento XML de metadatos de SAML desde tu IdP. El documento debe incluir al menos lo siguiente:

    • Un ID de entidad de SAML para tu IdP.
    • La URL de inicio de sesión único para tu IdP.
    • Al menos una clave pública de firma. Consulta los requisitos de las claves más adelante en esta guía para obtener información sobre las claves de firma.

Console

Para configurar el proveedor de SAML con la consola de Google Cloud, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Grupos de identidades de personal:

    Ir a Grupos de identidades de personal

  2. En la tabla grupos de identidad del personal, selecciona el grupo para el que deseas crear el proveedor.

  3. En la tabla Proveedores, haz clic en Agregar proveedor.

  4. En Selecciona un protocolo, selecciona SAML.

  5. En Crea un proveedor de grupos, haz lo siguiente:

    1. En Nombre del proveedor, ingresa un nombre para el proveedor.

    2. Opcional: En Descripción, ingresa una descripción para el proveedor.

    3. En Archivo de metadatos de IdP (XML), selecciona el archivo XML de metadatos que generaste antes en esta guía.

    4. Asegúrate de que la opción Proveedor habilitado esté habilitada.

    5. Haz clic en Continuar.

  6. En Configurar proveedor, haz lo siguiente:

    1. En Asignación de atributos, ingresa una expresión CEL para google.subject.

    2. Opcional: Para ingresar otras asignaciones, haz clic en Agregar asignación y, luego, ingresa otras asignaciones:

      google.subject=assertion.subject,
      google.groups=assertion.attributes['https://example.com/aliases'],
      attribute.costcenter=assertion.attributes.costcenter[0]
      En este ejemplo, se asignan los atributos de IdP assertion.subject, assertion.attributes['https://example.com/aliases'] y assertion.attributes.costcenter[0] a los atributos de Google Cloud google.subject, google.groups y google.costcenter, respectivamente.

    3. Opcional: Para agregar una condición de atributo, haz clic en Agregar condición y, luego, ingresa una expresión de CEL que represente una condición de atributo. Por ejemplo, para limitar el atributo ipaddr a un rango de IP determinado, puedes establecer la condición assertion.attributes.ipaddr.startsWith('98.11.12.'). Esta condición de ejemplo garantiza que solo los usuarios con una dirección IP que comienza con 98.11.12. puedan acceder mediante este proveedor de personal.

    4. Haga clic en Continuar.

  7. Para crear el proveedor, haz clic en Enviar.

gcloud

Para configurar el proveedor de SAML a través de gcloud CLI, haz lo siguiente:

  gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
      --workforce-pool=WORKFORCE_POOL_ID \
      --display-name="DISPLAY_NAME" \
      --description="DESCRIPTION" \
      --idp-metadata-path=METADATA_FILE_PATH \
      --attribute-mapping="ATTRIBUTE_MAPPING" \
      --attribute-condition="ATTRIBUTE_CONDITION" \
      --location=global

Reemplaza lo siguiente:

  • WORKFORCE_PROVIDER_ID: El ID del proveedor del grupo de identidades de personal.
  • WORKFORCE_POOL_ID: El ID del grupo de identidades de personal.
  • DISPLAY_NAME: El nombre visible del proveedor; por ejemplo, idp-eu-employees.
  • DESCRIPTION: La descripción del proveedor de grupos de Workforce Identity; por ejemplo, IdP for Partner Example Organization EU employees.
  • METADATA_FILE_PATH: La ruta de acceso del archivo de metadatos de SAML.
  • ATTRIBUTE_MAPPING: Es la asignación de atributos; por ejemplo:

    google.subject=assertion.subject,
    google.groups=assertion.attributes['https://example.com/aliases'],
    attribute.costcenter=assertion.attributes.costcenter[0]
    En este ejemplo, se asignan los atributos de IdP assertion.subject, assertion.attributes['https://example.com/aliases'] y assertion.attributes.costcenter[0] a los atributos de Google Cloud google.subject, google.groups y google.costcenter, respectivamente.

  • ATTRIBUTE_CONDITION: Una condición de atributo. Por ejemplo, para limitar el atributo ipaddr a un rango de IP determinado, puedes establecer la condición assertion.attributes.ipaddr.startsWith('98.11.12.'). Esta condición de ejemplo garantiza que solo los usuarios con una dirección IP que comienza con 98.11.12. puedan acceder mediante este proveedor de personal.

El proveedor puede tardar unos minutos en comenzar a aceptar solicitudes.

Para la federación de SAML, puedes usar las siguientes palabras clave en las condiciones y la asignación de atributos:

  • assertion.subject: una string igual al atributo NameID en la aserción de SAML.
  • assertion.attributes.NAME: una lista de strings igual a los valores de los atributos con nombre similar en la aserción de SAML.

Opcional: Acepta las aserciones de SAML encriptadas de tu IdP

Para permitir que tu IdP de SAML 2.0 produzca aserciones de SAML encriptadas que la federación de identidades de personal pueda aceptar, haz lo siguiente:

  • En la federación de identidades de personal, haz lo siguiente:
    • Crea un par de claves asimétricas para tu proveedor de grupos de identidades de personal.
    • Descargar un archivo de certificado que contenga la clave pública
    • Configura tu IdP de SAML para usar la clave pública a fin de encriptar las aserciones de SAML que emite.
  • En el IdP, haz lo siguiente:
    • Habilita la encriptación de aserciones, también conocida como encriptación de tokens.
    • Sube la clave pública que creaste en la federación de identidades de personal.
    • Confirma que tu IdP produzca aserciones de SAML encriptadas.
Ten en cuenta que, incluso con las claves de proveedor de encriptación de SAML configuradas, la federación de identidades de personal aún puede procesar una aserción de texto simple.

Crea claves de encriptación de aserciones de SAML de la federación de identidades de personal

En esta sección, se explica cómo crear un par de claves asimétricas que permite que la federación de identidades de personal acepte aserciones de SAML encriptadas.

Google Cloud usa la clave privada para desencriptar las aserciones de SAML que emite tu IdP. Para crear un par de claves asimétricas que se usarán con la encriptación SAML, ejecuta el siguiente comando. Para obtener más información, consulta Algoritmos de encriptación de SAML compatibles.

gcloud iam workforce-pools providers keys create KEY_ID \
    --workforce-pool WORKFORCE_POOL_ID \
    --provider WORKFORCE_PROVIDER_ID \
    --location global \
    --use encryption \
    --spec KEY_SPECIFICATION

Reemplaza lo siguiente:

  • KEY_ID: un nombre de clave que elijas
  • WORKFORCE_POOL_ID: el ID del grupo
  • WORKFORCE_PROVIDER_ID: El ID del proveedor del grupo de identidades de personal
  • KEY_SPECIFICATION: la especificación de clave, que puede ser rsa-2048, rsa-3072 y rsa-4096.

Después de crear el par de claves, ejecuta el siguiente comando para descargar la clave pública en un archivo de certificado. Solo la federación de identidades de personal tiene acceso a la clave privada.

gcloud iam workforce-pools providers keys describe KEY_ID \
    --workforce-pool WORKFORCE_POOL_ID \
    --provider WORKFORCE_PROVIDER_ID \
    --location global \
    --format "value(keyData.key)" \
    > CERTIFICATE_PATH

Reemplaza lo siguiente:

  • KEY_ID: el nombre de la clave
  • WORKFORCE_POOL_ID: el ID del grupo
  • WORKFORCE_PROVIDER_ID: El ID del proveedor del grupo de identidades de personal
  • CERTIFICATE_PATH: la ruta en la que se escribe el certificado, por ejemplo, saml-certificate.cer o saml-certificate.pem

Configura tu IdP compatible con SAML 2.0 para emitir aserciones de SAML encriptadas

Configura tu IdP de SAML para usar el certificado público descargado del último paso a fin de encriptar las aserciones de SAML que emite. Consulta al equipo de IdP para obtener instrucciones específicas.

Después de configurar tu IdP para encriptar las aserciones de SAML, te recomendamos que te asegures de que las aserciones que genera en realidad estén encriptadas. Incluso con la encriptación de aserciones de SAML configurada, la federación de identidades de personal puede procesar aserciones de texto simple.

Borra claves de encriptación de la federación de identidades de personal

Para borrar claves de encriptación de SAML, ejecuta el siguiente comando:
  gcloud iam workforce-pools providers keys delete KEY_ID \
      --workforce-pool WORKFORCE_POOL_ID \
      --provider WORKFORCE_PROVIDER_ID \
      --location global

Reemplaza lo siguiente:

  • KEY_ID: el nombre de la clave
  • WORKFORCE_POOL_ID: el ID del grupo
  • WORKFORCE_PROVIDER_ID: El ID del proveedor del grupo de identidades de personal

Algoritmos de encriptación SAML compatibles

La federación de identidades de personal admite los siguientes algoritmos de transporte de claves:

La federación de identidades de personal admite los siguientes algoritmos de encriptación de bloques:

Requisitos de la clave de firma de SAML X.509

Las siguientes especificaciones de claves se aplican a las claves de firma de SAML X.509:

  • Una clave pública RSA que está unida en un certificado X.509 v3.

  • A continuación, se detallan los requisitos de validez del certificado:

    • notBefore: una marca de tiempo que no sea superior a 7 días en el futuro
    • notAfter: una marca de tiempo que no sea más de 20 años en el futuro
  • Algoritmos recomendados:

Un proveedor de grupos de Workforce Identity se puede configurar con un máximo de tres claves de firma en un momento determinado. Cuando existen varias claves, Google Cloud las itera y trata de usar cada clave no vencida para entregar una solicitud de intercambio de tokens.

Como práctica recomendada de seguridad, te recomendamos que no vuelvas a usar el mismo par de claves con otros servicios.

Administración de claves

Para actualizar las claves de firma del IdP, haz lo siguiente:

  1. Crea un nuevo par de claves asimétricas y configura el proveedor de identidad SAML con el par de claves. En un principio, debes marcarlo como inactivo antes de activarlo en un paso posterior.

  2. Descarga un documento XML de metadatos de SAML de tu IdP.

  3. Actualiza el recurso del proveedor de grupos de Workforce Identity con el documento de metadatos de SAML. Cuando hay varias claves, Google Cloud itera a través de cada clave no vencida e intenta entregar una solicitud de intercambio de tokens.

    Para actualizar el proveedor de grupos de Workforce Identity con los metadatos de SAML, ejecuta el siguiente comando.

    gcloud iam workforce-pools providers update-saml WORKFORCE_PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --idp-metadata-path=SAML_METADATA_FILE_PATH \
        --location=global
    

    Reemplaza lo siguiente:

    • WORKFORCE_PROVIDER_ID: El ID del proveedor del grupo de identidades de personal
    • WORKFORCE_POOL_ID: el ID del grupo de Workforce Identity
    • SAML_METADATA_FILE_PATH: la ruta de acceso al archivo de metadatos de SAML
  4. Espera a que se complete la operación del paso anterior (la operación se marca como completada) y, luego, en el IdP de SAML, activa la clave de firma nueva. La clave de firma anterior se marca como inactiva. Las aserciones emitidas por el IdP se firman con la clave nueva.

Los siguientes pasos son opcionales, pero recomendamos realizarlos como práctica recomendada:

  1. Borra la clave de firma antigua, ahora inactiva, de tu IdP.
  2. Descarga el documento XML de metadatos de SAML de tu IdP.
  3. Actualiza el recurso del proveedor de grupos de Workforce Identity con el documento de metadatos de SAML. Google Cloud rechaza las aserciones que estén firmadas con la clave de firma vencida. Para actualizar el documento, ejecuta el siguiente comando:

    gcloud iam workforce-pools providers update-saml WORKFORCE_PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --idp-metadata-path=SAML_METADATA_FILE_PATH \
        --location=global
    

    Reemplaza lo siguiente:

    • WORKFORCE_PROVIDER_ID: El ID del proveedor del grupo de identidades de personal
    • WORKFORCE_POOL_ID: el ID del grupo de Workforce Identity
    • SAML_METADATA_FILE_PATH: la ruta de acceso de los metadatos de SAML

Restricción de eliminación de claves

Google Cloud rechaza las aserciones firmadas con una clave borrada.

Representa a los usuarios del grupo de personal en las políticas de IAM

En la tabla siguiente, se muestran los identificadores principales que usas para otorgar roles a un solo usuario, a un grupo de usuarios, a los usuarios que realizan una reclamación particular o a todos los usuarios de un grupo de personal.

Identidades Formato del identificador
Identidad única en un grupo de identidad de personal principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE
Todas las identidades del personal de un grupo principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/GROUP_ID
Todas las identidades del personal con un valor de atributo específico principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
Todas las identidades en un grupo de identidad de personal principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/*

Otorga roles de IAM a las principales

Puedes otorgar roles a las principales, como identidades individuales, grupos de identidades o un grupo completo.

Para otorgar un rol en un proyecto a una principal, ejecuta el siguiente comando:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role="ROLE" \
    --member="PRINCIPAL"

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto
  • ROLE: el rol que se otorgará
  • PRINCIPAL: el principal. Consulta Identificadores principales para la federación de identidades de personal.

En el siguiente ejemplo, el comando otorga Storage Admin (roles/storage.admin) a todas las identidades dentro del grupo GROUP_ID:

gcloud projects add-iam-policy-binding my-project \
    --role="roles/storage.admin" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"

Para obtener más información sobre el formato principal, consulta Identificadores principales de la federación de identidades de personal.

Borrar usuarios

La federación de identidades de personal crea metadatos y recursos de usuario para identidades de usuario federadas. Por ejemplo, si eliges borrar usuarios, en tu IdP, también debes borrar de forma explícita estos recursos en Google Cloud. Para hacerlo, consulta Borra los usuarios de la federación de identidades de personal y sus datos.

Es posible que veas que los recursos siguen asociados con un usuario que se borró. Esto se debe a que para borrar metadatos y recursos del usuario se requiere una operación de larga duración. Después de iniciar la eliminación de la identidad de un usuario, los procesos que este inició antes de la eliminación pueden seguir ejecutándose hasta que se completen o se cancelen los procesos.

¿Qué sigue?