En esta página, se describe cómo habilitar Identity-Aware Proxy desde Cloud Run y proteger el tráfico destinado a un servicio de Cloud Run mediante el enrutamiento a IAP para la autenticación. Si habilitas IAP desde Cloud Run, puedes enrutar el tráfico con un solo clic desde todas las rutas de acceso de entrada, incluidas las URLs run.app
predeterminadas y los balanceadores de cargas.
Limitaciones conocidas
- El proyecto debe estar dentro de una organización.
- Las identidades deben pertenecer a la misma organización.
- No puedes configurar IAP en el balanceador de cargas y en el servicio de Cloud Run.
- Es posible que algunas integraciones, como Pub/Sub, dejen de funcionar si se habilitan las IAP.
Antes de comenzar
Habilita IAP desde Cloud Run
Puedes habilitar IAP desde Cloud Run.
Si usas IAP y IAM en el mismo servicio de Cloud Run, ten en cuenta las siguientes condiciones:
Se realizan las verificaciones de IAP y de IAM.
Primero, se realiza la verificación de la IAP, que acepta o bloquea las solicitudes según la configuración de la IAP.
Si la solicitud pasa la verificación de IAP, IAP usa su propia cuenta de servicio para autenticarse en la verificación de IAM de Cloud Run.
Debido a que la verificación de IAP se realiza primero, es posible que algunos servicios, como Pub/Sub, no se autentiquen correctamente en él.
Habilita IAP desde Cloud Run con la consola de Google Cloud , Google Cloud CLI o Terraform.
Console
Para habilitar IAP desde Cloud Run, haz lo siguiente:
En la consola de Google Cloud , ve a la página de Cloud Run:
Si estás configurando un servicio nuevo en el que realizarás la implementación, selecciona Implementar contenedor > Servicio. Si quieres configurar y, luego, implementar un servicio existente, haz clic en el servicio y, luego, en Implementar y editar una nueva revisión.
Si configuras un servicio nuevo, completa la página de configuración del servicio inicial según sea necesario y, luego, selecciona Autenticación avanzada con Identity-Aware Proxy (IAP).
Si quieres configurar y, luego, implementar un servicio existente, haz clic en el servicio y, luego, selecciona Autenticación avanzada con Identity-Aware Proxy (IAP).
Haz clic en Editar política para crear una política de acceso adaptado al contexto:
Agrega una o más principales y, de forma opcional, el nivel de acceso que cada principal debe satisfacer para acceder a la aplicación.
Haz clic en Guardar.
Haz clic en Guardar.
gcloud
Para habilitar IAP directamente desde Cloud Run, agrega la marca --iap
cuando implementes tu app:
Implementa tu servicio de Cloud Run con uno de los siguientes comandos:
Para un servicio nuevo, sigue estos pasos:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-allow-unauthenticated \ --iap
Para un servicio existente, haz lo siguiente:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap
Reemplaza lo siguiente:
- SERVICE_NAME por el nombre del servicio de Cloud Run.
- REGION por el nombre de tu región de Cloud Run.
Por ejemplo,
europe-west1
- IMAGE_URL por una referencia a la imagen del contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Para verificar que tu servicio esté configurado con IAP habilitado, ejecuta el siguiente comando:
gcloud beta run services describe SERVICE_NAME
El resultado debería contener la siguiente cadena:
Iap Enabled: true
Ahora enrutas todo el tráfico destinado al servicio de Cloud Run configurado a IAP para la autenticación antes de pasarlo al contenedor.
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega la política de IAM para otorgar el rol de Invocador de Cloud Run (roles/run.invoker
) al agente de servicio de IAP. Para obtener más información, consulta Administra el acceso a los recursos protegidos por IAP.
Agrega lo siguiente a un recurso
google_cloud_run_v2_service_iam_policy
en tu configuración de Terraform.data "google_cloud_run_v2_service_iam_policy" "policy" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name }
Agrega lo siguiente a un recurso
google_cloud_run_v2_service
en tu configuración de Terraform.resource "google_cloud_run_v2_service" "default" { provider = google-beta name = "cloudrun-iap-service" location = "europe-west1" ingress = "INGRESS_TRAFFIC_ALL" launch_stage = "BETA" iap_enabled = true template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } }
Inhabilita IAP desde Cloud Run
Puedes inhabilitar el IAP con la consola de Google Cloud o Google Cloud CLI.
Console
Para inhabilitar IAP desde Cloud Run, haz lo siguiente:
En la consola de Google Cloud , ve a la página de Cloud Run:
Haz clic en el servicio existente que deseas modificar.
Haz clic en Seguridad y, luego, desmarca Autenticación avanzada con Identity-Aware Proxy (IAP).
Haz clic en Guardar.
gcloud
Para inhabilitar el IAP directamente desde Cloud Run, agrega el parámetro --no-iap
cuando implementes tu app:
Implementa tu servicio de Cloud Run con cualquiera de los siguientes comandos:
Para un servicio nuevo, sigue estos pasos:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-iap
Para un servicio existente, haz lo siguiente:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --no-iap
Reemplaza lo siguiente:
- SERVICE_NAME por el nombre del servicio de Cloud Run.
- REGION por el nombre de tu región de Cloud Run.
- IMAGE_URL por una referencia a la imagen del contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Para verificar que tu servicio ya no esté configurado con IAP habilitado, ejecuta el siguiente comando:
gcloud beta run services describe SERVICE_NAME
El resultado ya no debería contener la siguiente cadena:
Iap Enabled: true
Ya no enrutarás todo el tráfico destinado al servicio de Cloud Run configurado a IAP para la autenticación antes de pasarlo al contenedor.
Administra el acceso de usuarios o grupos
De forma predeterminada, IAP para Cloud Run usa identidades internas de la organización con Cuentas de Google. Puedes agregar o quitar el acceso a un servicio de Cloud Run con la consola de Google Cloud o Google Cloud CLI.
Console
Sigue estos pasos para agregar o quitar el acceso:
En la consola de Google Cloud , ve a la página de Cloud Run:
Haz clic en el servicio existente que deseas modificar y, luego, en Seguridad.
En IAP, haz clic en Editar política.
Para agregar acceso, ingresa la principal y, de forma opcional, el nivel o los niveles de acceso que deseas agregar.
Para quitar el acceso de una principal existente, haz clic en el ícono de Borrar política junto a Niveles de acceso.
Haz clic en Guardar.
gcloud
Para agregar o quitar el acceso a un servicio de Cloud Run para usuarios o grupos individuales dentro de tu organización, ejecuta uno de los siguientes comandos:
Sigue estos pasos para agregar el acceso:
gcloud beta iap web add-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Para quitar el acceso, sigue estos pasos:
gcloud beta iap web remove-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Para ver el acceso, sigue estos pasos:
gcloud beta iap web get-iam-policy \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Reemplaza lo siguiente:
- USER_EMAIL con la dirección de correo electrónico del usuario.
- REGION por el nombre de tu región de Cloud Run.
- SERVICE_NAME por el nombre del servicio de Cloud Run.
Soluciona problemas
La falla del agente de servicio provoca un error de configuración de IAM
Habilitar las IAP en un proyecto nuevo por primera vez puede provocar el siguiente error:
Setting IAM permissions failed
Esto se debe a que falló 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.
¿Qué sigue?
- Si quieres obtener instrucciones para habilitar IAP con IAP desde un servicio de backend o un balanceador de cargas, consulta Habilita IAP para Cloud Run.
- Si tienes problemas para habilitar IAP para Cloud Run, consulta Solución de errores.
- Habilita identidades externas.
- Habilitar la configuración de OAuth
- Administra el acceso a los recursos protegidos con IAP.
- Cómo usar políticas de la organización para controlar la habilitación de IAP