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 enrutándolo a IAP para la autenticación. Si habilitas IAP desde Cloud Run, puedes dirigir el tráfico con un solo clic desde todas las rutas de entrada, incluidas las URLs run.app
predeterminadas y los balanceadores de carga.
Limitaciones conocidas
- El proyecto debe pertenecer a una organización.
- Las identidades deben pertenecer a la misma organización.
- No puedes configurar IAP en el balanceador de carga y en el servicio de Cloud Run.
- Es posible que algunas integraciones, como Pub/Sub, dejen de funcionar si se habilita la compra en la aplicación.
Antes de empezar
Habilitar IAP desde Cloud Run
Puedes habilitar IAP desde Cloud Run.
Si usas IAP y gestión de identidades y accesos en el mismo servicio de Cloud Run, ten en cuenta las siguientes condiciones:
Se realizan las comprobaciones de IAP e IAM.
La comprobación de las compras en la aplicación se realiza primero y acepta o bloquea las solicitudes en función de la configuración de las compras en la aplicación.
Si la solicitud supera la comprobación de IAP, IAP usa su propia cuenta de servicio para autenticarse en la comprobación de IAM de Cloud Run.
Como la comprobación de las compras en aplicaciones se realiza primero, es posible que algunos servicios, como Pub/Sub, no se autentiquen correctamente.
Habilita IAP desde Cloud Run mediante la consola de Google Cloud , la CLI de Google Cloud o Terraform.
Consola
Para habilitar IAP desde Cloud Run, sigue estos pasos:
En la Google Cloud consola, ve a la página Cloud Run:
Si vas a configurar un servicio nuevo en el que vas a implementar un contenedor, selecciona Implementar contenedor > Servicio. Si va a configurar y desplegar un servicio que ya tiene, haga clic en el servicio y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio según sea necesario y, a continuación, selecciona Autenticación avanzada con Identity-Aware Proxy (IAP).
Si vas a configurar e implementar un servicio, haz clic en el servicio y, a continuación, selecciona Autenticación avanzada con Identity-Aware Proxy (IAP).
Haz clic en Editar política para crear una política de acceso contextual:
Añade uno o varios principales y, opcionalmente, el nivel de acceso que debe cumplir cada principal para acceder a la aplicación.
Haz clic en Guardar.
Haz clic en Guardar.
gcloud
Para habilitar IAP directamente desde Cloud Run, añade la marca --iap
al desplegar tu aplicación:
Despliega tu servicio de Cloud Run con uno de los siguientes comandos:
Para un servicio nuevo:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-allow-unauthenticated \ --iap
Para un servicio ya creado:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap
Haz los cambios siguientes:
- SERVICE_NAME: el nombre de tu servicio de Cloud Run.
- REGION: el nombre de tu región de Cloud Run.
Por ejemplo,
europe-west1
. - IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue 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 debe contener la siguiente cadena:
Iap Enabled: true
Ahora, todo el tráfico destinado al servicio de Cloud Run configurado se dirige a IAP para autenticarse antes de pasar al contenedor.
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade la política de gestión de identidades y accesos para conceder el rol Invocador de Cloud Run (roles/run.invoker
) al agente de servicio de IAP. Para obtener más información, consulta Gestionar el acceso a recursos protegidos por IAP.
Añade 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 }
Añade 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" } } }
Inhabilitar IAP desde Cloud Run
Puedes inhabilitar IAP mediante la Google Cloud consola o la CLI de Google Cloud.
Consola
Para inhabilitar IAP desde Cloud Run, sigue estos pasos:
En la Google Cloud consola, ve a la página Cloud Run:
Haz clic en el servicio que quieras modificar.
Haz clic en Seguridad y, a continuación, desmarca Autenticación avanzada con Identity-Aware Proxy (IAP).
Haz clic en Guardar.
gcloud
Para inhabilitar IAP directamente desde Cloud Run, añade la marca --no-iap
al desplegar tu aplicación:
Despliega tu servicio de Cloud Run con uno de los siguientes comandos:
Para un servicio nuevo:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-iap
Para un servicio ya creado:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --no-iap
Haz los cambios siguientes:
- SERVICE_NAME: el nombre de tu servicio de Cloud Run.
- REGION: el nombre de tu región de Cloud Run.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue 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 debe 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 que se autentique antes de pasar al contenedor.
Gestionar el acceso de usuarios o grupos
De forma predeterminada, IAP para Cloud Run usa identidades de la organización con cuentas de Google. Puedes añadir o quitar el acceso a un servicio de Cloud Run mediante la Google Cloud consola o la CLI de Google Cloud.
Consola
Para añadir o quitar el acceso, sigue estos pasos:
En la Google Cloud consola, ve a la página Cloud Run:
Haga clic en el servicio que quiera modificar y, a continuación, en Seguridad.
En IAP, haz clic en Editar política.
Para añadir acceso, introduce la entidad y, opcionalmente, el nivel o los niveles de acceso que quieras añadir.
Para quitar el acceso de un principal, haz clic en el icono Eliminar política situado junto a Niveles de acceso.
Haz clic en Guardar.
gcloud
Para añadir o quitar el acceso a un servicio de Cloud Run a usuarios o grupos concretos de tu organización, ejecuta uno de los siguientes comandos:
Para añadir acceso, sigue estos pasos:
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:
gcloud beta iap web get-iam-policy \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Haz los cambios siguientes:
- USER_EMAIL: la dirección de correo del usuario.
- REGION: el nombre de tu región de Cloud Run.
- SERVICE_NAME: el nombre de tu servicio de Cloud Run.
Solución de problemas
El error del agente de servicio provoca un error al definir la gestión de identidades y accesos
Si habilitas IAP en un proyecto nuevo por primera vez, puede producirse el siguiente error:
Setting IAM permissions failed
Esto se debe a que el agente de servicio de Cloud Run ha fallado. Para solucionar el problema, vuelve a habilitar IAP o define la política de gestión de identidades y accesos manualmente.
Siguientes pasos
- Para obtener instrucciones sobre cómo habilitar IAP con IAP desde un servicio de backend o un balanceador de carga, consulta el artículo Habilitar IAP en Cloud Run.
- Si tienes problemas para habilitar las compras en la aplicación en Cloud Run, consulta la sección Solución de errores.
- Habilitar identidades externas
- Habilitar la configuración de OAuth.
- Gestionar el acceso a los recursos protegidos mediante IAP
- Usar políticas de organización para controlar la habilitación de IAP.