Recomendado: Habilita IAP directamente en un servicio de Cloud Run, lo que tiene los siguientes beneficios:
Protege el extremo
run.appdirectamente para que no tengas que aprovisionar recursos del balanceador de cargas.Proporciona una configuración más sencilla y evita costos adicionales del balanceador de cargas.
Si eliges colocar un balanceador de cargas delante de Cloud Run, el extremo del balanceador de cargas también estará protegido.
Habilita IAP en el servicio de backend que se encuentra frente a los servicios de Cloud Run: Si ejecutas Cloud Run en varias regiones conectadas al mismo servicio de backend global del balanceador de cargas y necesitas una administración de acceso central, sigue las instrucciones de esta página. De lo contrario, te recomendamos que habilites IAP directamente en el servicio de Cloud Run.
Limitaciones conocidas
No se puede usar IAP en los servicios de Cloud Run ni en el balanceador de cargas. Si habilitas IAP en un balanceador de cargas, IAP protege el tráfico solo a través del balanceador de cargas y no con el tráfico que podría llegar al servicio de Cloud Run a través de su URL de
run.app. Para permitir solo el tráfico autorizado por IAP, consulta Configura Cloud Run para limitar el acceso.IAP se autentica en Cloud Run con el encabezado
X-Serverless-Authorization. Cloud Run pasa este encabezado a tu servicio después de quitar su firma. Si tu servicio está diseñado para reenviar la solicitud a otro servicio de Cloud Run que requiere autenticación de IAM, actualiza tu servicio para quitar este encabezado primero.IAP no es compatible con Cloud CDN.
IAP aumenta la latencia. Habilita IAP solo para los servicios que no son sensibles a la latencia.
Antes de comenzar
Te recomendamos que habilites IAP directamente en Cloud Run.Si eliges habilitar IAP para los recursos de Cloud Run en el balanceador de cargas en lugar de hacerlo directamente en Cloud Run, debes tener lo siguiente:
- Un proyecto de la consola de Google Cloud con la facturación habilitada
- Un grupo de uno o más servicios de Cloud Run entregados a través de un balanceador de cargas.
- Obtén información sobre cómo configurar un balanceador de cargas HTTPS externo.
- Obtén más información para configurar un balanceador de cargas de HTTPS interno.
- Un nombre de dominio registrado con la dirección de tu balanceador de cargas
El código de la aplicación para verificar que todas las solicitudes tengan una identidad
- Aprender cómo obtener la identidad del usuario
Habilita IAP desde un servicio de backend o un balanceador de cargas
Nota: Te recomendamos que habilites IAP directamente en Cloud Run, como se describe en la documentación de Cloud Run.Para habilitar IAP en un servicio de backend de un balanceador de cargas, sigue las instrucciones que se indican a continuación.
Console
Si aún no configuras la pantalla de consentimiento de OAuth para tu proyecto, se te solicitará hacerlo. Para configurar tu pantalla de consentimiento de OAuth, consulta Configura tu pantalla de consentimiento de OAuth.
Configura el acceso de IAP
- Ve a la página Identity-Aware Proxy.
- Selecciona el proyecto que deseas proteger con IAP.
- En APLICACIONES, selecciona la casilla de verificación junto al servicio de backend del balanceador de cargas al que deseas agregar miembros.
- En el panel de la derecha, haz clic en Agregar principal.
En el diálogo Agregar principal, ingresa las cuentas de los grupos o las personas que deben tener el rol Usuario de aplicación web protegida con IAP para el proyecto. Las siguientes cuentas pueden ser miembros:
- Cuenta de Google: usuario@gmail.com (también puede ser una cuenta de Google Workspace, como usuario@google.com o algún otro dominio de Workspace)
- Grupo de Google: administradores@googlegroups.com
- Cuenta de servicio: server@example.iam.gserviceaccount.com
- Dominio de Google Workspace: example.com
En la lista desplegable Roles, selecciona Cloud IAP > Usuario de app web protegida con IAP.
Haz clic en Guardar.
Habilita el acceso a usuarios ajenos a tu organización
De forma predeterminada, cuando habilitas IAP, se usa un cliente de OAuth administrado por Google para autenticar a los usuarios. Como resultado, solo los usuarios de la organización pueden acceder a la aplicación habilitada para IAP.
Para habilitar el acceso a usuarios ajenos a tu organización o sin una organización, actualiza la configuración del cliente de OAuth para usar un cliente de OAuth personalizado, como se describe en Habilita IAP para aplicaciones externas.
Activa IAP
- En la página de IAP, en APLICACIONES, busca el servicio de backend del balanceador de cargas al que deseas restringir el acceso. Para activar IAP en un recurso, haz clic en el botón de activación de IAP.
Para habilitar IAP, sigue estos pasos:
- Al menos un protocolo en la configuración de frontend del balanceador de cargas debe ser HTTPS. Obtén más información para configurar un balanceador de cargas.
- Necesitas los permisos
compute.backendServices.update,clientauthconfig.clients.createyclientauthconfig.clients.getWithSecret. Estos permisos se otorgan por funciones, como la función de Editor de proyectos. Para obtener más información, consulta Administra el acceso a los recursos protegidos por IAP.
- En la ventana Activar IAP que aparece, haz clic en Activar para confirmar que quieres que IAP proteja tu recurso. Después de activar IAP, se requieren credenciales de acceso para todas las conexiones a tu balanceador de cargas. Solo las cuentas con el rol Usuario de la app web protegida con IAP en el proyecto tendrán acceso.
Sigue las instrucciones que se indican en Control de acceso con IAM para autorizar a IAP a enviar tráfico al servicio de Cloud Run de backend.
- Principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com - Rol: Invocador de Cloud Run
La cuenta de servicio de IAP se crea cuando se habilita IAP. Si la cuenta de servicio de IAP no está en la lista de principales, puedes crearla ejecutando el siguiente comando de gcloud:
gcloud services identity create \ --service=iap.googleapis.com \ --project=PROJECT_ID- Principal:
gcloud
- Si aún no lo hiciste en el proyecto, ejecuta el siguiente comando para crear el agente de servicio de IAP. Si ya creaste el agente de servicio, ejecutar el comando no lo duplicará.
gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
- Ejecuta el siguiente comando para otorgar el permiso de invocador a la cuenta de servicio que creaste en el paso anterior.
gcloud run services add-iam-policy-binding [SERVICE-NAME] \ --member='serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com' \ --role='roles/run.invoker' Ejecuta el comando con alcance global o regional para habilitar IAP, según si el servicio de backend del balanceador de cargas es global o regional. Usa el ID de cliente de OAuth y el secreto del paso anterior.
Alcance global
gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
Alcance regional
Reemplaza lo siguiente:gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
- BACKEND_SERVICE_NAME: el nombre del servicio de backend.
- REGION_NAME: Es la región en la que deseas habilitar IAP.
Después de habilitar IAP, puedes usar Google Cloud CLI para manipular una política de acceso de IAP con el rol de Identity and Access Management
roles/iap.httpsResourceAccessor. Consulta Administra el acceso a los recursos protegidos por IAP para obtener más información.
Terraform
- Si aún no lo hiciste, en un proyecto, ejecuta el siguiente comando para crear el agente de servicio de IAP. Si ya creaste el agente de servicio, ejecutar el comando no lo duplicará.
resource "google_project_service" "project" { project = "your-project-id" service = "iap.googleapis.com" } Agrega lo siguiente para otorgar el rol
roles/run.invokeral agente de servicio de IAP.resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "serviceAccount:service-"PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com" }Reemplaza PROJECT_NUMBER por el número del proyecto.
Ejecuta el comando global o regional, según el balanceador de cargas, para habilitar IAP. Usa el ID de cliente de OAuth y el secreto del paso anterior.
Alcance global
resource "google_compute_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }Alcance regional
resource "google_compute_region_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }
Configura Cloud Run para limitar el acceso
Para evitar que el tráfico se enrute a través de la URL
run.apppredeterminada de un servicio de Cloud Run, inhabilita la URL predeterminada. De lo contrario, establece la configuración de entrada para restringir la entrada de red para Cloud Run.Solución de errores
Se denegó el permiso para acceder a Cloud Run
Your client does not have permission to get URL from this serverIAP usa los permisos de la cuenta de servicio de IAP para invocar tu servicio de Cloud Run. Asegúrate de haber otorgado el rol de invocador de Cloud Run a la siguiente cuenta de servicio:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com.Si otorgaste el rol de invocador de Cloud Run a la cuenta de servicio anterior y aún tienes este problema, vuelve a implementar tu servicio de Cloud Run.
La falla del agente de servicio provoca un error de IAM de configuración
Habilitar IAP en un proyecto nuevo por primera vez puede causar el siguiente error:
Setting IAM permissions failedEsto se debe a que se produjo un error en el agente de servicio de Cloud Run. Para resolver el problema, vuelve a habilitar IAP o establece la política de IAM de forma manual.
No se puede configurar IAP con gcloud CLI
The IAP service account is not provisionedSi ves este error, ejecuta el siguiente comando:
gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]La cuenta de servicio de IAP no necesita el permiso
run.routes.invokeDurante la versión preliminar de IAP con Cloud Run, Cloud Run no realizó la verificación de permisos
run.routes.invokepara las llamadas de IAP que usan el rol de invocador de Cloud Run. Con la disponibilidad general (DG), Cloud Run realiza esta verificación de permisos.Para evitar cambios rotundos, algunos proyectos de clientes que dependían de este comportamiento durante la versión preliminar se colocaron en una lista de entidades permitidas para que no se verificara el permiso. Comunícate con el equipo de asistencia de Cloud Run para quitar esos proyectos de la lista de entidades permitidas solo para la versión preliminar.
¿Qué sigue?
Configura IAP para Cloud Run
Habilita IAP para Cloud Run
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Puedes habilitar Identity-Aware Proxy para tus servicios de Cloud Run con uno de
los siguientes métodos: