En este documento, se muestra cómo configurar la federación de identidades de personal con el proveedor de identidad (IdP) 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 personal con el protocolo SAML 2.0.
Antes de comenzar
- Asegúrate de configurar una Google Cloud organización.
-
Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
- Para el acceso, tu IdP debe proporcionar información de autenticación firmada: las respuestas del IdP de SAML deben estar firmadas.
- Para recibir información importante sobre los cambios en tu organización o en los productos deGoogle Cloud , debes proporcionar Essential Contacts. Para obtener más información, consulta la descripción general de la federación de identidades de personal.
Costos
La federación de identidades de personal está disponible como una función sin costo. Sin embargo, el registro de auditoría detallado de la federación de identidades de la fuerza laboral usa Cloud Logging. Para obtener información sobre los precios de Logging, consulta los precios de Google Cloud Observability.
Roles obligatorios
Para 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
Administrador de grupos de trabajadores de IAM (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 a través de roles personalizados o cualquier otro rol predefinido.
Si configuras permisos en un entorno de desarrollo o de prueba, pero no en un entorno de producción, puedes otorgar el rol básico de propietario de IAM (roles/owner). Este rol también incluye permisos para la federación de identidades de personal.
Crea un grupo de Workforce Identity
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: Es un ID que elijas para representar tu Google Cloud grupo de personal. El ID del grupo debe ser único a nivel global en todos los grupos de identidades para cargas de trabajo 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: Es el ID de organización numérico de tu organización Google Cloud para el grupo de identidades de personal. Los grupos de identidades del personal están disponibles en todos los proyectos y carpetas de la organización.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 Duración de la sesión, expresada como un número al que se agregas, por ejemplo,3600s. La duración de la sesión 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 predeterminada de la sesión es de una hora (3,600 s). El valor de duración de la sesión debe estar entre 15 minutos (900 s) y 12 horas (43,200 s).
Console
Para crear el grupo de identidades de personal, haz lo siguiente:
En la consola de Google Cloud , ve a la página Grupos de identidades de personal:
Selecciona la organización para tu grupo de identidades del personal. Los grupos de identidades para cargas de trabajo están disponibles en todos los proyectos y carpetas de una organización.
Haz clic en Crear grupo y haz lo siguiente:
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.
Opcional: En Descripción, ingresa una descripción del grupo.
Para crear el grupo de identidades de personal, haz clic en Siguiente.
La duración de la sesión del grupo de identidades del personal se establece de forma predeterminada en una hora (3,600 s). La duración de la sesión determina el tiempo de validez de los tokens de acceso Google Cloud , la consola (federada) y las sesiones de acceso a gcloud CLI de este grupo de personal. Después de crear el grupo, puedes actualizar el grupo para establecer una duración de la sesión personalizada. La duración de la sesión debe ser de 15 minutos (900 s) a 12 horas (43,200 s).
Crea una aplicación de PingFederate
En esta sección, se muestra cómo crear una integración de aplicaciones de PingFederate.
Para configurar una aplicación de PingFederate que use el protocolo SAML 2.0, haz lo siguiente en PingFederate:
- Establece el ID de entidad de SAML 2.0 de tu IdP de PingFederate. Para obtener más detalles, consulta Cómo especificar información de federación.
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:
- En Tipo de conexión, selecciona Perfiles de SSO del navegador y Protocolo SAML 2.0.
- En Importar metadatos, selecciona Ninguno.
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_IDEn 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.
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.
En Attribute Contract Fulfillment, asegúrate de que
SAML_SUBJECTesté 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.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_IDReemplaza 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.
Establece Binding para este extremo en POST.
Para habilitar el acceso a la consola (federado), en Allowable SAML Bindings, selecciona Redirect.
En Política de firma, selecciona Firmar respuesta según sea necesario.
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 del 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 identidades para cargas de trabajo 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
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=globalReemplaza lo siguiente:
WORKFORCE_PROVIDER_ID: Es un 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 atributoipaddra un rango de IP determinado, establece la condición enassertion.ipaddr.startsWith('98.11.12.').
Con este comando, se asigna
subject,groupsydepartmenten la aserción de SAML a los atributosgoogle.subject,google.groupsyattribute.department, respectivamente. La condición del atributo también garantiza que solo los usuarios dentro de un rango de IP determinado puedan acceder mediante este proveedor de personal.Console
Para configurar el proveedor de SAML con la consola de Google Cloud , haz lo siguiente:
- En la consola de Google Cloud , ve a la página Grupos de identidades de personal: Ir a Grupos de identidades de personal
- En la tabla Grupos de identidades del personal, selecciona el grupo para el que deseas crear el proveedor.
- En la sección Proveedores, haz clic en Agregar proveedor.
- En la lista Selecciona un proveedor de identidad, elige Proveedor de identidad genérico.
- En Selecciona un protocolo de autenticación, selecciona SAML.
- En la sección Crear un proveedor, haz lo siguiente:
- En Nombre del proveedor, ingresa un nombre para el proveedor.
- Opcional: En Descripción, ingresa una descripción para el proveedor.
- En Archivo de metadatos de IdP (XML), selecciona el archivo XML de metadatos de PingFederate.
- Para crear un proveedor habilitado, asegúrate de que la opción Habilitar proveedor esté activada.
- Haz clic en Continuar.
- En la sección Comparte la información de tu proveedor, haz clic en Continuar.
- Opcional: Para activar el registro de auditoría detallado, en la sección Configurar proveedor, en Registro detallado, haz clic en el botón de activación Habilitar el registro de auditoría del valor de atributos.
El registro de auditoría detallado de la federación de identidades de personal registra la información que recibe de tu IdP en Logging. El registro de auditoría detallado puede ayudarte a solucionar problemas relacionados con la configuración del proveedor de grupo de identidades de personal. Para obtener información sobre cómo solucionar problemas de errores de asignación de atributos con registros de auditoría detallados, consulta Errores generales de asignación de atributos. Para obtener información sobre los precios de Logging, consulta los precios de Google Cloud Observability.
Para inhabilitar el registro de auditoría detallado de un proveedor de grupo de identidades de personal, deja desactivado el botón de activación Habilitar el registro de auditoría del valor de atributos cuando crees el proveedor. Para inhabilitar el registro de auditoría detallado, también puedes actualizar el proveedor.
- Para crear el proveedor, haz clic en Enviar.
Después de crear el proveedor, se te redireccionará a la página de atributos del proveedor.
Para configurar las asignaciones y las condiciones de los atributos, haz lo siguiente:
- Cuando se te solicite, accede a tu IdP externo para validar las asignaciones de atributos predeterminadas.
En la página de atributos del proveedor, consulta y edita las asignaciones y condiciones de los atributos:
Para agregar o editar asignaciones de atributos, haz lo siguiente:
- Haz clic en Agregar asignación para agregar una asignación nueva o editar las existentes.
- En el campo Google n, donde n es un número, selecciona una clave compatible con Google Cloud.
En el campo SAML n correspondiente, ingresa el nombre del atributo del IdP o una expresión CEL, por ejemplo:
google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
Para agregar una condición de atributo, haz lo siguiente:
- Haz clic en Agregar condición:
- En el campo Condiciones del atributo, ingresa una condición en formato CEL, por ejemplo,
assertion.ipaddr.startsWith('98.11.12.').
Para validar tus asignaciones, haz clic en Guardar y volver a obtener el token.
Para completar la configuración, haz clic en Guardar y salir.
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 Identificadores principales de personal para políticas de permiso.
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 valorattribute.departmentasignado.
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óngoogle.groupsasignada.
Accede y prueba el acceso
En esta sección, accederás como 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 Workforce Identity Federation, también conocida como consola (federada), haz lo siguiente:
-
Ve a la página de acceso de la consola (federada).
-
Ingresa el nombre del proveedor, que tiene el siguiente formato:
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
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:
Ejecuta el siguiente comando para crear un archivo de configuración de acceso:
Linux y macOS
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --output-file=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud iam workforce-pools create-login-config ` locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID ` --output-file=LOGIN_CONFIG_PATH
Reemplaza lo siguiente:
WORKFORCE_POOL_ID: Es el ID del grupo de federación de identidades de personal.WORKFORCE_PROVIDER_ID: Es el ID del proveedor de la federación de identidades de personal.-
LOGIN_CONFIG_PATH: Es la ruta de acceso en la que se escribirá el archivo de configuración de acceso. Por ejemplo,login-config.json
El archivo de configuración de acceso contiene los endpoints 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 contenido del archivo de configuración de acceso se ve de la siguiente manera:
{ "universe_domain": "googleapis.com", "universe_cloud_web_domain": "cloud.google", "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" }
Apunta al archivo de configuración de acceso con una variable de entorno, una propiedad en la configuración activa de la gcloud CLI o úsalo directamente con el comando gcloud auth login:
Variable de entorno
Para usar el archivo de configuración de acceso con una variable de entorno, completa las siguientes instrucciones:
-
Establece la variable de entorno
CLOUDSDK_AUTH_LOGIN_CONFIG_FILEen la ruta de acceso del archivo de configuración de acceso. -
Ejecuta el comando siguiente:
gcloud auth login
- Gcloud CLI hace referencia a la variable de entorno para encontrar el archivo de configuración de acceso y, luego, inicia el proceso de autenticación. Sigue el flujo basado en el navegador para autenticar y autorizar gcloud CLI a acceder a los recursos en tu nombre para futuros comandos.
Para dejar de usar el archivo de configuración de acceso para los comandos gcloud auth login, borra la variable de entorno CLOUDSDK_AUTH_LOGIN_CONFIG_FILE.
Configuración de gcloud CLI
Para usar el archivo de configuración de acceso con una propiedad de configuración de gcloud CLI, completa las siguientes instrucciones:
-
Establece la propiedad
auth/login_config_filede la configuración activa de la gcloud CLI en la ruta de acceso del archivo de configuración de acceso con el siguiente comando:gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
-
Ejecuta el comando siguiente:
gcloud auth login
- Gcloud CLI hace referencia a la propiedad de configuración para encontrar el archivo de configuración de acceso y, luego, inicia el proceso de autenticación. Sigue el flujo basado en el navegador para autenticar y autorizar gcloud CLI a acceder a los recursos en tu nombre para futuros comandos.
Para dejar de usar el archivo de configuración de acceso para los comandos de gcloud auth login, anula la configuración de la propiedad con el siguiente comando:
gcloud config unset auth/login_config_file
gcloud auth login
Para usar el archivo de configuración de acceso directamente con el comando gcloud auth login, sigue estas instrucciones:
-
Si usaste la marca
--activatecuando creaste el archivo de configuración de acceso, ejecuta el siguiente comando:gcloud auth login
-
Si no usaste la marca
--activatecuando creaste el archivo de configuración de acceso, ejecuta el siguiente comando:Linux y macOS
gcloud auth login \ --login-config=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud auth login ` --login-config=LOGIN_CONFIG_PATH
Reemplaza LOGIN_CONFIG_PATH por la ruta de acceso del archivo de configuración de acceso.
El comando gcloud auth login almacena las credenciales de acceso en tu directorio principal. La principal autenticada se convierte en la principal activa en tu configuración activa de gcloud CLI. A menos que se anulen, la gcloud CLI usa estas credenciales almacenadas para acceder a Google Cloud.
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:
- Haz que un usuario acceda a tu app de PingFederate y obtén la respuesta de SAML.
- 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. 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.jsonReemplaza lo siguiente:
SAML_ASSERTION_PATH: la ruta de acceso del archivo de aserción de SAML.PROJECT_ID: Es el ID del proyecto.
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" }Para acceder a gcloud CLI con el intercambio de tokens, ejecuta el siguiente comando:
gcloud auth login --cred-file=config.jsonLuego,
gcloudintercambia de manera transparente tus credenciales de PingFederate por tokens de acceso temporales de Google Cloud , lo que te permite realizar otras llamadas degclouda 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].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:
- Ve a la página Cloud Storage.
- 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?
- Borra los usuarios de la federación de identidades de personal y sus datos.
- 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).