En esta guía, se muestra cómo configurar la federación de identidades de personal mediante Okta como proveedor de identidad (IdP), administrar el acceso y permitir que los usuarios accedan a los servicios de Google Cloud que admiten la federación de identidades de personal.
Antes de comenzar
Debes tener configurada una organización de Google Cloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
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.
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 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 mediante roles personalizados o cualquier otro rol predefinido.
Como alternativa, el rol básico Owner (roles/owner
) de IAM 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.
Crea un grupo de Workforce Identity
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:
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.
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).
Para crear el grupo en el estado habilitado, asegúrate de que la opción Grupo habilitado esté activada.
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 una integración de app de Okta
En esta sección, se proporcionan los pasos para crear una integración de una app de Okta con la Consola del administrador de Okta. Para obtener más detalles, consulta Cómo crear integraciones de apps personalizadas.
Los grupos de trabajadores admiten la federación mediante el uso de protocolos OIDC y SAML.
Consulta la guía de integración de OIDC y SAML de Okta para obtener más detalles. La configuración básica se describe en esta sección.
OIDC
Para crear una integración de app de Okta que use el protocolo OIDC, sigue estos pasos:
- Accede a la Consola del administrador de Okta.
- Ve a Aplicaciones > Aplicaciones.
Para comenzar a configurar la integración de app, haz lo siguiente:
- Haz clic en Crear integración de aplicaciones.
- En Método de acceso, selecciona OIDC - OpenID Connect.
- En Tipo de aplicación, selecciona un tipo de aplicación, por ejemplo, Aplicación web.
- Para crear la app, haz clic en Siguiente.
- En Nombre de la integración de la app, ingresa un nombre para tu app.
- En la sección Tipo de otorgamiento, selecciona la casilla de verificación Implícito (híbrido).
En la sección URI de redireccionamiento de acceso, en el campo de texto, ingresa una URL de redireccionamiento. Se redirecciona a tus usuarios a esta URL después de que acceden de forma correcta. Si configuras el acceso a la consola (federada), usa el siguiente formato de URL:
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
Reemplaza lo siguiente:
WORKFORCE_POOL_ID
: el ID del grupo de personal que creaste antes en esta guía.WORKFORCE_PROVIDER_ID
: un ID de proveedor de Workforce Identity que elijas; por ejemplo:okta-oidc-provider
Para obtener información sobre el formato del ID, consulta la sección Parámetros de consulta en la documentación de la API.
Selecciona la casilla de verificación Omitir la asignación del grupo por ahora.
Para guardar la integración de app, haz clic en Guardar.
Opcional: Para agregar atributos personalizados a un perfil de usuario de Okta, haz lo siguiente:
- En Tipo de datos, selecciona
string
. - En Nombre visible, ingresa
Department
. - En Nombre de la variable, ingresa
department
. - Para guardar la asignación, haz clic en Guardar.
Para obtener más información sobre cómo agregar atributos personalizados, consulta Cómo agregar atributos personalizados a un perfil de usuario de Okta.
- En Tipo de datos, selecciona
Opcional: Si deseas crear asignaciones para los atributos que se envían en el token de OIDC, en Directorio, haz clic en Editor de perfiles y haz lo siguiente:
- Busca la aplicación OIDC que creaste antes en esta guía.
- Haz clic en Asignaciones.
- Selecciona la pestaña Usuario de Okta a la app.
- En la pestaña Perfil de usuario de Okta, en un cuadro combinado disponible, ingresa
department
. Okta se completa automáticamente enuser.department
. - Para guardar las asignaciones, haz clic en Guardar asignaciones. Para obtener más detalles, consulta Agrega asignación de atributos.
Para obtener más información sobre las asignaciones, consulta Cómo asignar atributos de Okta a los atributos de la app en el Editor de perfiles.
Para configurar una reclamación de grupo, haz lo siguiente (opcional):
- Si usas un servidor de autorización de la organización, haz lo siguiente:
- Go to Aplicaciones > Aplicaciones
- Selecciona la aplicación cliente de OpenID Connect que creaste antes en esta sección.
- Ve a la pestaña Acceder.
- En la sección Token de ID de OpenID Connect, haz clic en Editar.
- En la sección Tipo de reclamación de grupos, puedes seleccionar cualquiera de las siguientes opciones:
- Selecciona Expresión.
- Selecciona Coincide con la regex y, luego, ingresa
.*
.
- Para guardar la reclamación de los grupos, haz clic en Guardar.
- Cuando crees el proveedor de grupos de la identidad del personal más adelante en esta guía, agrega
groups
como alcance adicional para solicitar la reclamación de grupos de Okta para el inicio de sesión único en la web. Este paso solo es necesario si usas la consola (federada) o el flujo de acceso basado en el navegador de la gcloud CLI.
- Si usas un servidor de autorización personalizado, sigue estos pasos:
- En la Consola del administrador, en el menú Seguridad, selecciona API.
- Selecciona el servidor de autorización personalizado que deseas configurar.
- Ve a la pestaña Reclamos y haz clic en Agregar reclamo.
- Ingresa un nombre para la reclamación. Para este ejemplo, asígnale el nombre
groups
. - En tu reclamación, en Incluir en tipo de token, selecciona Token de ID y, luego, Siempre.
- Selecciona Grupos como Tipo de valor.
- En el cuadro desplegable Filtro, selecciona Coincide con la regex y, luego, ingresa la siguiente expresión como el valor:
.*
. - Haz clic en Crear.
- Si usas un servidor de autorización de la organización, haz lo siguiente:
Para obtener más detalles sobre las reclamaciones de grupos, consulta Agrega una reclamación de grupos.
SAML
Para crear una integración de app de Okta que use el protocolo SAML, sigue estos pasos:
- Accede a la Consola del administrador de Okta.
- Ve a Aplicaciones > Aplicaciones.
- Haz clic en Crear integración de aplicaciones.
- En Método de acceso, selecciona SAML 2.0 y haz clic en Siguiente.
- Ingresa un nombre para tu aplicación y haz clic en Siguiente a fin de continuar con las opciones de Configurar SAML.
En URL de inicio de sesión único, ingresa una URL de redireccionamiento. Esta es la URL a la que se redirecciona a los usuarios después de acceder correctamente. Si configuras el acceso a la consola, usa el siguiente formato de URL.
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
Ingresa el URI de público (
SP Entity ID
). El ID tiene el siguiente formato:https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
Reemplaza lo siguiente:
WORKFORCE_POOL_ID
: el ID del grupo de personal que creaste antes en esta guía.WORKFORCE_PROVIDER_ID
: un ID de proveedor de Workforce Identity que elijas; por ejemplo:okta-saml-provider
Para obtener información sobre el formato del ID, consulta la sección Parámetros de consulta en la documentación de la API.
Opcional: Usa declaraciones de atributos para especificar cualquier atributo personalizado que quieras enviar en la aserción de SAML. Después de la configuración, estos atributos se pueden usar en Google Cloud para crear políticas de administración de acceso o en attribute_condition. Por ejemplo, en esta guía, debes asignar el departamento de la siguiente manera:
Nombre Valor department
user.department
Opcional: Para agregar la reclamación de los grupos, que se usa más adelante en esta guía, consulta Cómo pasar la membresía del grupo de un usuario en una aserción de SAML.
Termina de crear la integración de la app de Okta.
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 Workforce Identity para tu integración de apps de Okta, mediante el protocolo OIDC, haz lo siguiente:
Para obtener el ID de cliente para la integración de tu app de Okta, haz lo siguiente:
- Ve a tu integración de app de Okta.
- Haz clic en la pestaña General.
- Copia el contenido del campo ID de cliente.
Para crear un proveedor de grupos de Workforce Identity de OIDC para el acceso basado en la Web, haz lo siguiente:
Console
Flujo de código
En Okta, haz lo siguiente:
En Autenticación del cliente, selecciona Secreto del cliente.
En la tabla Secretos del cliente, busca el secreto y haz clic en content_copy Copiar.
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:
En la consola de Google Cloud, ve a la página Grupos de identidades de personal:
En la tabla grupos de identidad del personal, selecciona el grupo para el que deseas crear el proveedor.
En la tabla Proveedores, haz clic en Agregar proveedor.
En Seleccionar un protocolo, selecciona Open ID Connect (OIDC).
En Crear un proveedor de grupos, haz lo siguiente:
- En Nombre del proveedor, ingresa un nombre para el proveedor.
- 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
. - 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. - Para crear un proveedor habilitado, asegúrate de que la opción Enabled Provider esté activada.
- Haz clic en Continuar.
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.
- En Tipo de respuesta, selecciona Código.
- En Secreto de cliente, ingresa el secreto de cliente de tu IdP.
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
Haz clic en Continuar.
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.
Obligatorio: En OIDC 1, ingresa el asunto del IdP, por ejemplo,
assertion.sub
.Opcional: Para agregar asignaciones de atributos adicionales, haz lo siguiente:
- Haz clic en Agregar asignación.
- En Google n, donde n es un número, ingresa una de las claves compatibles con Google Cloud.
- En el campo OIDC n correspondiente, ingresa el nombre del campo específico de la IdP que deseas asignar, en formato CEL.
Para crear una condición de atributo, haz lo siguiente:
- Haz clic en Agregar condición:
- En Condiciones del atributo, ingresa una condición en formato CEL. Por ejemplo,
assertion.subject.endsWith('@example.com')
cuando el valor desubject
asignado antes contiene una dirección de correo electrónico que termina con@example.com
.
Para crear el proveedor, haz clic en Enviar.
Flujo implícito
En la consola de Google Cloud, haz lo siguiente:
En la consola de Google Cloud, ve a la página Grupos de identidades de personal:
En la tabla grupos de identidad del personal, selecciona el grupo para el que deseas crear el proveedor.
En la tabla Proveedores, haz clic en Agregar proveedor.
En Seleccionar un protocolo, selecciona Open ID Connect (OIDC).
En Crear un proveedor de grupos, haz lo siguiente:
- En Nombre del proveedor, ingresa un nombre para el proveedor.
- 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
. - 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. - Para crear un proveedor habilitado, asegúrate de que la opción Enabled Provider esté activada.
- Haz clic en Continuar.
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.
- En Tipo de respuesta, selecciona Token de ID.
- Haz clic en Continuar.
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.
Obligatorio: En OIDC 1, ingresa el asunto del IdP, por ejemplo,
assertion.sub
.Opcional: Para agregar asignaciones de atributos adicionales, haz lo siguiente:
- Haz clic en Agregar asignación.
- En Google n, donde n es un número, ingresa una de las claves compatibles con Google Cloud.
- En el campo OIDC n correspondiente, ingresa el nombre del campo específico de la IdP que deseas asignar, en formato CEL.
Para crear una condición de atributo, haz lo siguiente:
- Haz clic en Agregar condición:
En Condiciones del atributo, ingresa una condición en formato CEL. Por ejemplo,
assertion.subject.endsWith('@example.com')
cuando el valor desubject
asignado antes contiene una dirección de correo electrónico que termina con@example.com
.
Para crear el proveedor, haz clic en Enviar.
gcloud
Flujo de código
En Okta, haz lo siguiente:
En Autenticación del cliente, selecciona Secreto del cliente.
En la tabla Secretos del cliente, busca el secreto y haz clic en content_copy Copiar.
En Google Cloud, para 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 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=globalReemplaza lo siguiente:
PROVIDER_ID
: un ID de proveedor único. El prefijogcp-
está reservado y no se puede usar en un ID de grupo ni de proveedor.WORKFORCE_POOL_ID
: el ID del grupo de Workforce Identity 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 conhttps
; 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ónaud
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; por ejemplo,groups
para solicitar la reclamación de grupos a Okta si se usa el servidor de autorización de la organización de Okta.ATTRIBUTE_MAPPING
: Una asignación de atributos. A continuación, se muestra un ejemplo de una asignación de atributos: En este ejemplo, se asignan los atributos de IdPgoogle.subject=assertion.sub, google.groups=assertion.group1, attribute.costcenter=assertion.costcenter
subject
,group1
ycostcenter
en la aserción de OIDC a los atributosgoogle.subject
,google.groups
yattribute.costcenter
, respectivamente.ATTRIBUTE_CONDITION
: Una condición de atributo, por ejemplo,assertion.subject.endsWith('@example.com')
cuando el valor desubject
asignado antes contiene una dirección de correo electrónico que termina con@example.com
.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.
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 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:
PROVIDER_ID
: un ID de proveedor único. El prefijogcp-
está reservado y no se puede usar en un ID de grupo ni de proveedor.WORKFORCE_POOL_ID
: el ID del grupo de Workforce Identity 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 conhttps
; 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ónaud
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; por ejemplo,groups
para solicitar la reclamación de grupos a Okta si se usa el servidor de autorización de la organización de Okta.ATTRIBUTE_MAPPING
: Una asignación de atributos. A continuación, se muestra un ejemplo de una asignación de atributos: En este ejemplo, se asignan los atributos de IdPgoogle.subject=assertion.sub, google.groups=assertion.group1, attribute.costcenter=assertion.costcenter
subject
,group1
ycostcenter
en la aserción de OIDC a los atributosgoogle.subject
,google.groups
yattribute.costcenter
, respectivamente.ATTRIBUTE_CONDITION
: Una condición de atributo, por ejemplo,assertion.subject.endsWith('@example.com')
cuando el valor desubject
asignado antes contiene una dirección de correo electrónico que termina con@example.com
.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.
locations/global/workforcePools/enterprise-example-organization-employees
.
Crea un proveedor de grupos de personal de SAML
En tu IdP de SAML, registra una aplicación nueva para la federación de identidades de personal de Google Cloud.
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/PROVIDER_ID
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.
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:
En la consola de Google Cloud, ve a la página Grupos de identidades de personal:
En la tabla grupos de identidad del personal, selecciona el grupo para el que deseas crear el proveedor.
En la tabla Proveedores, haz clic en Agregar proveedor.
En Selecciona un protocolo, selecciona SAML.
En Crea un proveedor de grupos, 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 que generaste antes en esta guía.
Asegúrate de que la opción Proveedor habilitado esté habilitada.
Haz clic en Continuar.
En Configurar proveedor, haz lo siguiente:
En Asignación de atributos, ingresa una expresión CEL para
google.subject
.Opcional: Para ingresar otras asignaciones, haz clic en Agregar asignación y, luego, ingresa otras asignaciones:
En este ejemplo, se asignan los atributos de IdPgoogle.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
assertion.subject
,assertion.attributes['https://example.com/aliases']
yassertion.attributes.costcenter[0]
a los atributos de Google Cloudgoogle.subject
,google.groups
ygoogle.costcenter
, respectivamente.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ónassertion.attributes.ipaddr.startsWith('98.11.12.')
. Esta condición de ejemplo garantiza que solo los usuarios con una dirección IP que comienza con98.11.12.
puedan acceder mediante este proveedor de personal.Haz clic en Continuar.
Para crear el proveedor, haz clic en Enviar.
gcloud
Para crear un proveedor de grupos de Workforce Identity para la integración de tu app de Okta mediante el protocolo SAML, haz lo siguiente:
A fin de guardar los metadatos de SAML para tu app de Okta, haz lo siguiente:
- Ve a la app de Okta.
- Haz clic en la pestaña Acceder.
- En la sección Certificados de firma de SAML, haz clic en Acciones > Ver metadatos de IdP para el certificado activo.
- En la página nueva que se abre, copia los metadatos XML.
- Guarda los metadatos como un archivo XML local.
A fin de crear un proveedor de personal para tu aplicación de Okta, ejecuta el siguiente comando:
gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --idp-metadata-path="XML_METADATA_PATH" \ --location="global"
Reemplaza lo siguiente:
WORKFORCE_PROVIDER_ID
: el ID del proveedor de personal que creaste antes en esta guía.WORKFORCE_POOL_ID
: el ID del grupo de personal que creaste antes en esta guía.ATTRIBUTE_MAPPING
: una asignación de atributo; por ejemplo: En este ejemplo, se asignan los atributos de IdPgoogle.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
assertion.subject
,assertion.attributes['https://example.com/aliases']
yassertion.attributes.costcenter[0]
a los atributos de Google Cloudgoogle.subject
,google.groups
ygoogle.costcenter
, respectivamente.ATTRIBUTE_CONDITION
: Es una condición de atributo opcional. Por ejemplo, para limitar el atributoipaddr
a un rango de IP determinado, puedes establecer la condiciónassertion.attributes.ipaddr.startsWith('98.11.12.')
. Esta condición de ejemplo garantiza que solo los usuarios con una dirección IP que comienza con98.11.12.
puedan acceder mediante este proveedor de personal.XML_METADATA_PATH
: Es la ruta de acceso al archivo de metadatos con formato XML para la app de Okta que creaste antes en esta guía.
El prefijo
gcp-
está reservado y no se puede usar en un ID de grupo ni de proveedor.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.
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 PROVIDER_ID \ --location global \ --use encryption \ --spec KEY_SPECIFICATION
Reemplaza lo siguiente:
KEY_ID
: un nombre de clave que elijasWORKFORCE_POOL_ID
: el ID del grupoPROVIDER_ID
: el ID del proveedor-
KEY_SPECIFICATION
: la especificación de clave, que puede serrsa-2048
,rsa-3072
yrsa-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 PROVIDER_ID \ --location global \ --format "value(keyData.key)" \ > CERTIFICATE_PATH
Reemplaza lo siguiente:
KEY_ID
: el nombre de la claveWORKFORCE_POOL_ID
: el ID del grupoPROVIDER_ID
: el ID del proveedorCERTIFICATE_PATH
: la ruta en la que se escribe el certificado, por ejemplo,saml-certificate.cer
osaml-certificate.pem
Configura tu IdP compatible con SAML 2.0 para emitir aserciones de SAML encriptadas
Si deseas configurar Okta para encriptar las aserciones de SAML, haz lo siguiente:
- Ve al panel de Okta y accede
- Ve a Aplicaciones>Aplicaciones.
- Haz clic en tu app.
- En la pestaña General, en la sección Configuración de SAML, haz clic en Editar.
- Haz clic en Siguiente para ver la Configuración de SAML.
- Haz clic en Mostrar configuración avanzada.
- En Configuración de SAML, haz lo siguiente:
- En Respuesta (opción preferida) o Firma de confirmación, selecciona
Signed
. - En Algoritmo de firma y Algoritmo de resumen, selecciona cualquier opción.
- Configura los siguientes valores:
- Encriptación de aserción: Encriptada.
- Algoritmo de encriptación: Cualquier algoritmo que elijas.
- Certificado de encriptación: Sube el archivo de certificado que generaste antes en esta guía.
- Para guardar la configuración, haz clic en Siguiente y, luego, en Finalizar.
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 PROVIDER_ID \ --location global
Reemplaza lo siguiente:
KEY_ID
: el nombre de la claveWORKFORCE_POOL_ID
: el ID del grupoPROVIDER_ID
: el ID del proveedor
Algoritmos de encriptación SAML compatibles
La federación de identidades de personal admite los siguientes algoritmos de transporte de claves:
- http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
- http://www.w3.org/2009/xmlenc11#rsa-oaep"
- http://www.w3.org/2001/04/xmlenc#rsa-1_5"
La federación de identidades de personal admite los siguientes algoritmos de encriptación de bloques:
- http://www.w3.org/2001/04/xmlenc#aes128-cbc
- http://www.w3.org/2001/04/xmlenc#aes192-cbc
- http://www.w3.org/2001/04/xmlenc#aes256-cbc
- http://www.w3.org/2009/xmlenc11#aes128-gcm
- http://www.w3.org/2009/xmlenc11#aes256-gcm
Administra el acceso a los recursos de Google Cloud
En esta sección, se proporciona un ejemplo en el que se muestra cómo administrar el acceso a los recursos de Google Cloud mediante los usuarios de la federación de identidades de personal.
En este ejemplo, otorgas un rol de Identity and Access Management (IAM) en un proyecto de muestra. Luego, los usuarios pueden acceder y usar este proyecto para acceder a los productos de Google Cloud.
Puedes administrar los roles de IAM 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.
Para la identidad única
Para otorgar el rol Administrador de almacenamiento (roles/storage.admin
) a una sola identidad para el proyecto TEST_PROJECT_ID
, ejecuta el siguiente comando:
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
Reemplaza lo siguiente:
TEST_PROJECT_ID
: El ID del proyectoWORKFORCE_POOL_ID
: el ID del grupo de la identidad de personalSUBJECT_VALUE
: La identidad del usuario
Usa el atributo de departamento asignado
A fin de otorgar el rol Storage Admin (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
: El ID del proyectoWORKFORCE_POOL_ID
: el ID del grupo de personalDEPARTMENT_VALUE
: el valorattribute.department
asignado
Usa grupos asignados
A fin de otorgar el rol de Administrador de almacenamiento (roles/storage.admin
) a todas las identidades dentro de un grupo 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/group/GROUP_ID"
Reemplaza lo siguiente:
TEST_PROJECT_ID
: El ID del proyectoWORKFORCE_POOL_ID
: el ID del grupo de personalGROUP_ID
: un grupo en la reclamacióngoogle.groups
asignada.
Accede y prueba el acceso
En esta sección, accederás como un usuario de grupo de Workforce Identity y probarás que tienes acceso a un producto de Google Cloud.
Acceso
En esta sección, se muestra cómo acceder como un usuario federado y acceder a los recursos de Google Cloud.
Acceso a la consola (federada)
Para acceder a la consola de la federación de identidades de personal de Google Cloud, 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
- Ingresa las credenciales de usuario en la integración de la app de Okta, si se te solicita.
Si inicias un acceso iniciado por IdP, usa la siguiente URL en Configuración de SAML para el parámetro RelayState predeterminado anidado:
https://console.cloud.google/
.
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:
Crea un archivo de configuración
Para crear el archivo de configuración de acceso, ejecuta el siguiente comando. De manera opcional, puedes activar el archivo como predeterminado para la CLI de gcloud mediante la marca --activate
.
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \ --output-file=LOGIN_CONFIG_FILE
Reemplaza lo siguiente:
WORKFORCE_POOL_ID
: el ID del grupo de personalPROVIDER_ID
: el ID del proveedorLOGIN_CONFIG_FILE
: una ruta de acceso al 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 proveedor que creaste antes en esta guía. 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/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", }
Accede con autenticación basada en el navegador
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 congcloud 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
-
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.
Inhabilita el acceso basado en el navegador
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 congcloud 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 la gcloud CLI con un flujo sin interfaz gráfica, haz lo siguiente:
OIDC
Haz que un usuario acceda a tu app de Okta y obtén el token de OIDC de Okta.
Guarda el token de OIDC que muestra Okta en una ubicación segura de tu máquina local.
Genera un archivo de configuración como se muestra a continuación. Ejecuta el comando siguiente:
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \ --subject-token-type="urn:ietf:params:oauth:token-type:id_token" \ --credential-source-file="PATH_TO_OIDC_ID_TOKEN" \ --workforce-pool-user-project="WORKFORCE_POOL_USER_PROJECT" \ --output-file="config.json"
Reemplaza lo siguiente:
WORKFORCE_POOL_ID
: el ID del grupo de personalPROVIDER_ID
: el ID del proveedorPATH_TO_OIDC_TOKEN
: la ruta de acceso al archivo de credenciales del IdP de OIDCWORKFORCE_POOL_USER_PROJECT
: el número de proyecto asociado con el proyecto de usuario de grupos de personal.
La principal debe tener el permiso serviceusage.services.use
en este proyecto.
Cuando ejecutas el comando, se produce un archivo de configuración del IdP de OIDC con un formato similar al siguiente:
{
"type": "external_account",
"audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID",
"subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
"token_url": "https://sts.googleapis.com/v1/token",
"workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
"credential_source": {
"file": "PATH_TO_OIDC_CREDENTIALS_FILE"
}
}
SAML
Haz que un usuario acceda a tu app de Okta y obtén la Respuesta SAML de Okta.
Guarda la respuesta SAML que muestra Okta en una ubicación segura de tu máquina local y, luego, almacena la ruta de acceso de la siguiente manera:
SAML_ASSERTION_PATH=SAML_ASSERTION_PATH
Para generar un archivo de configuración, ejecuta el siguiente comando:
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:
WORKFORCE_PROVIDER_ID
: el ID del proveedor de personal que creaste antes en esta guía.WORKFORCE_POOL_ID
: el ID del grupo de personal que creaste antes en esta guía.SAML_ASSERTION_PATH
: la ruta de acceso del archivo de aserción de SAML.PROJECT_ID
: 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
mediante el intercambio de tokens, ejecuta el siguiente comando:
gcloud auth login --cred-file="config.json"
Luego, gcloud
intercambia de manera transparente tus credenciales de Okta por tokens de acceso temporales de Google Cloud, lo que te permite realizar otras llamadas de gcloud
a Google Cloud.
Verás un resultado similar al 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 actual, ejecuta el siguiente comando:
gcloud auth list
Prueba el acceso
Ahora 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 (roles/storage.admin
) a todas las identidades dentro de un departamento específico para el proyecto TEST_PROJECT_ID
. Para probar que tienes acceso, enumera los buckets de Cloud Storage.
Consola (federada)
Para mostrar una lista de los buckets de Cloud Storage mediante la consola (federada), haz lo siguiente:
- Ve a la página de Cloud Storage
- Verifica que puedas ver la lista de depósitos existentes para
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 storage ls --project="TEST_PROJECT_ID"
La principal debe tener el permiso serviceusage.services.use
en el proyecto especificado.
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?
- Borra los usuarios de la federación de identidades de personal y sus datos
- Obtén información sobre qué productos de Google Cloud admiten la federación de identidades de personal.
- Configura el acceso de usuario a la consola (federada)