Habilita IAP para Cloud Run

En esta página, se explica cómo proteger un servicio de Cloud Run con Identity-Aware Proxy (IAP).

Limitación conocida

Una limitación conocida es que se debe configurar IAM para otorgar a allUsers la función de Invocador en el servicio de Cloud Run. Puedes bloquear el acceso a nivel de la red, por lo que todas las solicitudes externas se deben autorizar a través de IAP. Consulta Cómo configurar Cloud Run para limitar el acceso si necesitas más información. Se está abordando esta limitación para que puedas otorgar explícitamente acceso de CDA específico del proyecto al servicio de Cloud Run.

Antes de comenzar

Si quieres habilitar IAP para Cloud Run, necesitas lo siguiente:

  • Un proyecto de Cloud Console con facturación habilitada
  • Un grupo de uno o más servicios de Cloud Run, entregados por un balanceador de cargas.
  • Un código de aplicación para verificar que todas las solicitudes tengan una identidad

Habilita IAP

Console

Si aún no configuraste la pantalla de consentimiento de OAuth de tu proyecto, debes hacerlo. Para poder acceder a esta pantalla, se necesita la dirección de correo electrónico y el nombre del producto.

  1. Ve a la pantalla de consentimiento de OAuth.
  2. En Correo electrónico de asistencia, selecciona la dirección de correo electrónico que deseas mostrar como contacto público. Esta debe ser tu dirección de correo electrónico o un Grupo de Google de tu propiedad.
  3. Ingresa el Nombre de la aplicación que deseas mostrar.
  4. Agrega cualquier detalle opcional.
  5. Haz clic en Guardar.

Para cambiar más adelante la información en la pantalla de consentimiento de OAuth, como el nombre del producto o la dirección de correo electrónico, repite los pasos anteriores para configurar esa pantalla.

Configura el acceso de IAP

  1. Ve a la página Identity-Aware Proxy.
  2. Selecciona el proyecto que deseas proteger con IAP.
  3. En HTTPS RESOURCES, seleccione la casilla de verificación junto al servicio de backend del balanceador de cargas al que desea agregar miembros.
  4. En el panel de la derecha, haz clic en Agregar miembro.
  5. En el cuadro de diálogo Agregar miembros, ingresa las cuentas de los grupos o las personas que deberían tener la función de Usuario de app 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 user@google.com o un dominio de Workspace.
    • Grupo de Google: administradores@googlegroups.com
    • Cuenta de servicio: servidor@ejemplo.cuentadeserviciog.com
    • Dominio de Google Workspace: example.com
  6. Selecciona Cloud IAP > IAP-secure Web App User en la lista desplegable Roles.

  7. Haz clic en Guardar.

Activa IAP

  1. En la página Identity-Aware Proxy, en Recursos de HTTPS, busque el servicio de backend del balanceador de cargas al que desea restringir el acceso. Para activar IAP para un recurso, activa o desactiva el interruptor en la columna IAP. Para habilitar IAP, haz lo siguiente:
    • Al menos un protocolo en la configuración del frontend del balanceador de cargas debe ser HTTPS. Obtén más información sobre cómo configurar un balanceador de cargas.
    • Necesitas los permisos compute.backendServices.update, clientauthconfig.clients.create y clientauthconfig.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 recursos protegidos con IAP.
  2. En la ventana Activar IAP que aparece, haga clic en Activar para confirmar que desea que IAP proteja su recurso. Después de activar IAP, se requieren credenciales de acceso para todas las conexiones a tu balanceador de cargas. Solo las cuentas con la función Usuario de la aplicación web protegida con IAP en el proyecto tendrán acceso.

gcloud

  1. Sigue las instrucciones que se detallan en Crea clientes de OAuth de forma programática para IAP a fin de configurar esa pantalla y crear el cliente de OAuth.
  2. Guarda el secreto y el ID de cliente de OAuth.
  3. Habilita IAP mediante la ejecución del comando con alcance global o regional, según si tu servicio de backend del balanceador de cargas es global o regional. Usa el ID y secreto del cliente de OAuth del paso anterior.

    Alcance global:

    gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

    Alcance regional:

    gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    
    Reemplaza lo siguiente:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • CLIENT_ID: El ID de cliente de OAuth del paso anterior.
    • CLIENT_SECRET: El secreto de cliente de OAuth del paso anterior
    • REGION_NAME: Es la región en la que deseas habilitar IAP.

Después de habilitar IAP, puedes usar la CLI de Google Cloud para manipular una política de acceso de IAP con la función de administración de identidades y accesos roles/iap.httpsResourceAccessor. Consulta Cómo administrar funciones y permisos para obtener más información.

Configura Cloud Run para limitar el acceso

Completa los siguientes pasos para configurar el acceso a tu servicio de Cloud Run.

  1. Configure el servicio de Cloud Run y configure la entrada en Internal y Cloud Load Balancing. Si deseas obtener más detalles, consulta Restringe la entrada para Cloud Run.

    Este paso garantiza que solo los clientes internos y el balanceador de cargas externo puedan llamar al servicio de Cloud Run y que se bloqueen las solicitudes directas desde la Internet pública.

  2. Para el servicio de Cloud Run, otorga a allUsers la función de Invocador. Para obtener más información, consulta Cómo permitir el acceso público (sin autenticar).

    Este paso es importante para garantizar que tu configuración de IAP funcione correctamente, ya que configura Cloud Run para no intentar autenticar y autorizar solicitudes por su cuenta. En cambio, IAP completa la autenticación y la autorización.

Ten en cuenta que esta configuración permite que todos los clientes que se consideren internos (según la definición en Cómo restringir la entrada para Cloud Run) accedan al servicio de Cloud Run sin necesidad de autenticarse. Todos los demás clientes que llegan a través del balanceador de cargas externo se autentican a través de IAP. Esta es una limitación conocida que se abordará en el futuro.