Acerca de este codelab
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 enrutándolo a IAP para la autenticación. Si habilitas el IAP desde Cloud Run, puedes enrutar el tráfico con un solo clic desde todas las rutas de acceso de entrada, incluidas las URLs y los balanceadores de cargas predeterminados de run.app.
En este codelab, implementarás el servicio de contenedor hello. Solo los usuarios que se hayan incluido en la lista de entidades permitidas con la IAP tienen acceso al servicio.
Para conocer otras limitaciones conocidas, consulta la documentación de IAP en Cloud Run.
Qué aprenderás
- Cómo habilitar IAP de un clic para Cloud Run
- Cómo otorgar acceso a la identidad de un usuario a un servicio de Cloud Run a través de IAP
2. Antes de comenzar
habilitar 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
Establece 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 el IAP habilitado
Ejecuta este comando para crear la cuenta de servicio (que se usa como la identidad del servicio de Cloud Run):
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
Implementa la imagen de contenedor hello con la IAP habilitada.
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"
Otorga acceso a un usuario permitiendo usuarios o grupos específicos a través de 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:tu-grupo@example.com en el parámetro de miembro.
6. Prueba la aplicación
Verifica el acceso a la app
Obtén la URL del servicio de Cloud Run de ejemplo.
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 la eliminación del acceso a la app
Para quitar tu acceso a la app, ejecuta 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. 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 IAP de Cloud Run.
Temas abordados
- Cómo habilitar IAP de 1 clic para Cloud Run
- Cómo otorgar acceso a la identidad de un usuario a un servicio de Cloud Run a través de IAP
8. Limpia
Para evitar cargos imprevistos, por ejemplo, si los servicios de Cloud Run se invocan por error 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 los proyectos en tu SDK de Cloud. Para ver la lista de todos los proyectos disponibles, ejecuta gcloud projects list
.