1. Introducción
Descripción general
En este codelab, se explica 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 de run.app predeterminadas y los balanceadores de cargas.
En este codelab, implementarás el servicio de contenedor hello. Solo los usuarios que se incluyeron en la lista de entidades permitidas con IAP tienen acceso al servicio.
Para conocer otras limitaciones conocidas, consulta la documentación sobre IAP en Cloud Run.
Qué aprenderás
- Cómo habilitar IAP con un solo clic para Cloud Run
- Cómo otorgar acceso de identidad de usuario a un servicio de Cloud Run a través de IAP
2. Antes de comenzar
Habilita las APIs
Antes de comenzar a usar este codelab, habilita las siguientes APIs ejecutando el siguiente comando:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. Crea variables de entorno
Configura las variables de entorno que se usarán en este codelab
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>
export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")
4. Implementa un servicio con IAP habilitado
Para crear la cuenta de servicio (que se usa como la identidad del servicio de Cloud Run), ejecuta este comando:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
Implementa la imagen de contenedor hello con IAP habilitado.
gcloud beta run deploy ${SERVICE_NAME} \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--region=${REGION} \
--service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
--no-allow-unauthenticated \
--iap
Nota: Si intentas acceder a la aplicación ahora, verás la página de error You don't have access. En el siguiente paso, otorgarás acceso a un usuario a través de IAP.
5. Configura el control de acceso de IAP
Crea el agente de servicio de IAP.
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
Asigna el rol de invocador de Cloud Run a la cuenta de servicio de IAP
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
Cómo otorgar acceso a un usuario permitiendo usuarios o grupos específicos a través del IAP
EMAIL_ADDRESS=<YOUR_EMAIL>
gcloud beta iap web add-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor \
--condition=None
Nota: Si lo prefieres, también puedes usar group:your-group@example.com en el parámetro member.
6. Prueba la aplicación
Verifica el acceso a la app
Obtén la URL del servicio de ejemplo de Cloud Run.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
Abre la URL en tu navegador y deberías ver el mensaje "It's Running!". Felicitaciones, implementaste correctamente una imagen de contenedor en Cloud Run".
Verifica que se haya quitado el acceso a la app
Puedes quitar tu acceso a la app ejecutando el siguiente comando.
gcloud beta iap web remove-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor
Espera unos minutos para que se propague la política de IAM. Ahora intenta abrir la URL en tu navegador y verás la página de error You don't have access.
7. ¡Felicitaciones!
¡Felicitaciones por completar el codelab!
Te recomendamos que revises la documentación de Cloud Run IAP.
Temas abordados
- Cómo habilitar IAP con 1 clic para Cloud Run
- Cómo otorgar acceso de identidad de usuario a un servicio de Cloud Run a través de IAP
8. Limpia
Para evitar cargos involuntarios, por ejemplo, si los servicios de Cloud Run se invocan de forma involuntaria más veces que tu asignación mensual de invocaciones de Cloud Run en el nivel gratuito, puedes borrar el servicio de Cloud Run iap-example que creaste en el paso 6.
Para borrar el servicio de Cloud Run, ve a la consola de Cloud Run en https://console.cloud.google.com/run y borra el servicio iap-example.
Para borrar todo el proyecto, ve a Administrar recursos, selecciona tu proyecto y elige Borrar. Si borras el proyecto, deberás cambiar de proyecto en el SDK de Cloud. Para ver la lista de todos los proyectos disponibles, ejecuta gcloud projects list.