Configura la federación de identidades de personal con PingFederate

En este documento, se muestra cómo configurar la federación de identidades de personal con el proveedor de identidad (IdP) de PingFederate y administrar el acceso aGoogle Cloud. Después de configurar el IdP de PingFederate, los usuarios federados pueden acceder a los servicios de Google Cloud que admiten la federación de identidades de personalcon el protocolo SAML 2.0.

Antes de comenzar

  1. Asegúrate de configurar una organización Google Cloud .
  2. Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:

    gcloud init

    Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  3. Para configurar una aplicación de PingFederate que use el protocolo SAML 2.0, haz lo siguiente en PingFederate:

    1. Establece el ID de la entidad de SAML 2.0 de tu IdP de PingFederate. Para obtener más detalles, consulta Cómo especificar información de federación.
    2. Crea una conexión de SP de SAML 2.0. Para ello, consulta Cómo elegir un tipo de conexión de SP y haz lo siguiente:

      1. En Tipo de conexión, selecciona Perfiles de SSO del navegador y Protocolo SAML 2.0.
      2. En Importar metadatos, selecciona Ninguno.
    3. En General Info, establece el ID de la entidad del socio (ID de conexión) en lo siguiente:

      https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      
    4. En SAML Profiles, habilita SP-initiated SSO. Si también planeas usar el inicio de sesión único (SSO) iniciado por IdP, también puedes habilitarlo.

    5. En Attribute Contract, define atributos personalizados (por ejemplo, correo electrónico y grupos) para que se pasen en la aserción. Estos atributos se pueden usar en Google Cloud para crear políticas de administración de acceso más adelante.

    6. En Attribute Contract Fulfillment, asegúrate de que SAML_SUBJECT esté asignado a un campo que tenga un valor único para cada usuario. Por ejemplo, una dirección de correo electrónico suele ser única para cada usuario, no cambia y, a menudo, se usa para hacer referencia a un usuario específico en las Google Cloud políticas de administración de acceso.

    7. Para configurar el acceso a la consola (federado), en URL del servicio de confirmación de consumidores, agrega la siguiente URL del extremo:

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

      Reemplaza lo siguiente:

      • WORKFORCE_POOL_ID: Es el ID del grupo de personal que creaste antes.
      • WORKFORCE_PROVIDER_ID: Es el ID del proveedor de personal que crearás más adelante.
    8. Establece Binding para este extremo en POST.

    9. Para habilitar el acceso a la consola (federado), en Allowable SAML Bindings, selecciona Redirect.

    10. En Política de firma, selecciona Firmar respuesta según sea necesario.

    11. Guarda y activa la conexión.

    Usa atributos

    En esta sección, se describe cómo usar los atributos de la aserción SAML.

    Usa contratos de atributos para especificar los atributos personalizados en las aserciones de SAML generadas. Después de configurar los atributos, puedes usarlos en Google Cloud para crear políticas de administración de acceso. Para obtener más información sobre los contratos de atributos, consulta Attribute contracts en la documentación del servidor de PingFederate.

    Por ejemplo, en esta guía, usamos PingOne como almacén de datos para PingFederate y asignamos los contratos de atributos email, firstName y groups con los atributos de usuario del almacén de datos de PingOne, de la siguiente manera:

    Contrato de atributo Valor
    email email
    firstName name.given
    groups memberOfGroupIDs

    Crea el proveedor de grupos de Workforce Identity de PingFederate

    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 SAML.

    Crea un proveedor de grupos de identidades para cargas de trabajo de SAML 2.0

    1. Para configurar la aplicación de SAML, haz lo siguiente:

      gcloud

      Para crear el proveedor de grupos de identidades de personal de SAML, ejecuta el siguiente comando:

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

      Reemplaza lo siguiente:

      • WORKFORCE_PROVIDER_ID: ID de proveedor.
      • WORKFORCE_POOL_ID: El ID del grupo de Workforce Identity.
      • DISPLAY_NAME: Es un nombre visible.
      • DESCRIPTION: Una descripción.
      • XML_METADATA_PATH: Es la ruta de acceso al archivo de metadatos con formato XML de PingFederate.
      • ATTRIBUTE_MAPPING: la asignación de atributos; por ejemplo, google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0]
      • ATTRIBUTE_CONDITION: una condición de atributo opcional; por ejemplo, para limitar el atributo ipaddr a un rango de IP determinado, establece la condición en assertion.ipaddr.startsWith('98.11.12.').

      Con este comando, se asigna subject, groups y department en la aserción de SAML a los atributos google.subject, google.groups y attribute.department, respectivamente. La condición del atributo también garantiza que solo los usuarios dentro de un rango de IP determinado puedan acceder con este proveedor de personal.

      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 identidades del personal, selecciona el grupo para el que deseas crear el proveedor.
      3. En la sección Proveedores, haz clic en Agregar proveedor.
      4. En la lista Selecciona un proveedor de identidad, elige Proveedor de identidad genérico.
      5. En Selecciona un protocolo de autenticación, selecciona SAML.
      6. En la sección Crear un proveedor, haz lo siguiente:
        1. En Nombre del proveedor, ingresa un nombre para el proveedor.
        2. En Archivo de metadatos de IdP (XML), selecciona el archivo XML de metadatos de PingFederate.
        3. Haz clic en Continuar.
      7. En la sección Comparte la información de tu proveedor, haz clic en Continuar.
      8. En la sección Configurar proveedor, haz lo siguiente:

        1. En Asignación de atributos, ingresa una expresión CEL para google.subject (por ejemplo, assertion.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]
          
      9. Para activar el registro de auditoría detallado, en Registro detallado, haz clic en el botón de activación Habilitar el registro de auditoría del valor de atributos.

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

    Administra el acceso a los recursos de Google Cloud

    En esta sección, se muestra cómo administrar el acceso a los recursos de Google Cloud para los usuarios de PingFederate.

    El proyecto de muestra que se usa en esta guía puede ser diferente del proyecto que usaste para configurar la federación de identidades de personal.

    Puedes administrar roles para identidades individuales, un grupo de identidades o un grupo completo. Para obtener más información, consulta Representa a los usuarios del grupo de la identidad de personal en políticas del IAM.

    Usa atributos de departamento asignados

    Para otorgar el rol de administrador de almacenamiento (roles/storage.admin) a todas las identidades dentro de un departamento específico para el proyecto TEST_PROJECT_ID, ejecuta el siguiente comando:

    gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
        --role="roles/storage.admin" \
        --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
    

    Reemplaza lo siguiente:

    • TEST_PROJECT_ID: Es el ID del proyecto.
    • WORKFORCE_POOL_ID: El ID del grupo de Workforce Identity.
    • DEPARTMENT_VALUE: Es el valor attribute.department asignado.

    Usa grupos asignados

    Para otorgar el rol de administrador de almacenamiento (roles/storage.admin) a todas las identidades dentro del grupo GROUP_ID para el proyecto TEST_PROJECT_ID, ejecuta el siguiente comando:

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

    Reemplaza lo siguiente:

    • TEST_PROJECT_ID: Es el ID del proyecto.
    • WORKFORCE_POOL_ID: El ID del grupo de Workforce Identity.
    • GROUP_ID: Un grupo en la reclamación google.groups asignada.

    Accede y prueba el acceso

    En esta sección, accederás como un usuario del grupo de identidades de personal y probarás tu acceso.

    Acceder

    acceso a la consola (federada)

    Para acceder a la consola de Google Cloud federación de identidades de personal, también conocida como la consola (federada), haz lo siguiente:

    1. Ve a la página de acceso de la consola (federada).

      Ir a la consola (federada)

    2. Ingresa el nombre del proveedor, que tiene el siguiente formato:
      locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    3. Cuando se te solicite, ingresa tus credenciales de PingFederate.

    Acceso con el navegador de la gcloud CLI

    Para acceder a la gcloud CLI con un flujo de acceso basado en el navegador, haz lo siguiente:

    Para crear el archivo de configuración de acceso, ejecuta el siguiente comando. De manera opcional, puedes activar el archivo como predeterminado para la gcloud CLI agregando la marca --activate. Luego, puedes ejecutar gcloud auth login sin especificar la ruta de acceso al archivo de configuración cada vez.

    gcloud iam workforce-pools create-login-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \
        --output-file=LOGIN_CONFIG_FILE_PATH

    Reemplaza lo siguiente:

    • WORKFORCE_POOL_ID: el ID del grupo de personal
    • PROVIDER_ID: el ID del proveedor
    • LOGIN_CONFIG_FILE_PATH: la ruta de acceso a un archivo de configuración que especifiques, por ejemplo, login.json

    El archivo contiene los extremos que usa la gcloud CLI para habilitar el flujo de autenticación basado en el navegador y establecer el público en el IdP que se configuró en el proveedor del grupo de identidades de personal. El archivo no contiene información confidencial.

    El resultado es similar al siguiente:

    {
      "type": "external_account_authorized_user_login_config",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
      "auth_url": "https://auth.cloud.google/authorize",
      "token_url": "https://sts.googleapis.com/v1/oauthtoken",
      "token_info_url": "https://sts.googleapis.com/v1/introspect"
    }

    Para evitar que gcloud auth login use este archivo de configuración automáticamente, puedes anular su configuración con gcloud config unset auth/login_config_file.

    Para autenticar con la autenticación de acceso basada en el navegador, puedes usar uno de los siguientes métodos:

    • Si usaste la marca --activate cuando creaste el archivo de configuración o si activaste el archivo de configuración con gcloud config set auth/login_config_file, gcloud CLI usa el archivo de configuración de forma automática:

      gcloud auth login
    • Para acceder mediante la especificación de la ubicación del archivo de configuración, ejecuta el siguiente comando:

      gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
    • Para usar una variable de entorno a fin de especificar la ubicación del archivo de configuración, establece CLOUDSDK_AUTH_LOGIN_CONFIG_FILE en la ruta de configuración.

    Para dejar de usar el archivo de configuración de acceso, haz lo siguiente:

    • Si usaste la marca --activate cuando creaste el archivo de configuración o si activaste el archivo de configuración con gcloud config set auth/login_config_file, debes ejecutar el siguiente comando para anularlo:

      gcloud config unset auth/login_config_file
    • Borra la variable de entorno CLOUDSDK_AUTH_LOGIN_CONFIG_FILE, si está configurada.

    Acceso sin interfaz gráfica de la gcloud CLI

    Para acceder a PingFederate con la gcloud CLI a través del protocolo SAML, haz lo siguiente:

    1. Haz que un usuario acceda a tu app de PingFederate y obtén la respuesta de SAML.
    2. Guarda la respuesta SAML que muestra PingFederate en una ubicación segura de tu máquina local. Almacena la ruta de acceso en una variable de entorno, por ejemplo, SAML_ASSERTION_PATH=/path/to/assertion.xml.
    3. Genera un archivo de configuración:

      gcloud iam workforce-pools create-cred-config \
          locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
          --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
          --credential-source-file=SAML_ASSERTION_PATH \
          --workforce-pool-user-project=PROJECT_ID \
          --output-file=config.json
      

      Reemplaza lo siguiente:

      • SAML_ASSERTION_PATH: la ruta de acceso del archivo de aserción de SAML.
      • PROJECT_ID: Es el ID del proyecto.
    4. El archivo de configuración que se genera es similar al siguiente:

      {
        "type": "external_account",
        "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
        "subject_token_type": "urn:ietf:params:oauth:token-type:saml2",
        "token_url": "https://sts.googleapis.com/v1/token",
        "credential_source": {
          "file": "SAML_ASSERTION_PATH"
        },
        "workforce_pool_user_project": "PROJECT_ID"
      }
      
    5. Para acceder a gcloud CLI con el intercambio de tokens, ejecuta el siguiente comando:

      gcloud auth login --cred-file=config.json
      

      Luego, gcloud intercambia de manera transparente tus credenciales de PingFederate por tokens de acceso temporales de Google Cloud , lo que te permite realizar otras llamadas de gcloud a Google Cloud. El resultado es similar a lo siguiente:

      Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].

    6. Para enumerar las cuentas con credenciales y la cuenta activa, ejecuta el siguiente comando:

      gcloud auth list
      

    Prueba el acceso

    Tienes acceso a los servicios de Google Cloud que admiten la federación de identidades de personal y a los que se te otorga acceso. En una sección anterior de esta guía, otorgaste el rol de administrador de almacenamiento a todas las identidades dentro de un departamento o grupo específico para el proyecto TEST_PROJECT_ID. Para probar que tienes acceso, enumera los buckets de Cloud Storage.

    acceso a la consola (federada)

    Para verificar tu acceso en la consola (federada), haz lo siguiente:

    1. Ve a la página Cloud Storage.
    2. Verifica que puedas ver la lista de buckets existentes para el proyecto TEST_PROJECT_ID.

    gcloud CLI

    Para enumerar los buckets y los objetos de Cloud Storage para el proyecto al que tienes acceso, ejecuta el siguiente comando:

    gcloud alpha storage ls --project="TEST_PROJECT_ID"
    

    La principal debe tener el permiso serviceusage.services.use en el proyecto establecido en la sesión de la gcloud CLI: PROJECT_ID.

    ¿Qué sigue?