Proteger aplicaciones de App Engine con IAP

En esta página se explica cómo desplegar una aplicación del entorno estándar o flexible de App Engine y protegerla con Identity-Aware Proxy (IAP). La guía de inicio rápido incluye código de ejemplo para una aplicación web del entorno estándar de App Engine que verifica el nombre de un usuario que ha iniciado sesión.

Si tienes previsto servir recursos desde una red de distribución de contenido (CDN), consulta la guía de prácticas recomendadas para obtener información importante.

Para proteger los recursos que no están en Google Cloud, consulta Proteger aplicaciones y recursos on-premise.

Antes de empezar

Para habilitar IAP para App Engine, necesitas lo siguiente:

  • Un proyecto de la consola de Google Cloud con la facturación habilitada. Google Cloud

Si aún no has configurado tu instancia de App Engine, consulta la guía completa para implementar App Engine.

IAP usa un cliente de OAuth gestionado por Google para autenticar a los usuarios. Solo los usuarios de la organización pueden acceder a la aplicación con IAP. Si quieres permitir el acceso a usuarios ajenos a tu organización, consulta Habilitar las compras en aplicaciones para aplicaciones externas.

Habilitar IAP

Consola

El cliente de OAuth gestionado por Google no está disponible al habilitar IAP mediante la Google Cloud consola.

Dynamic include file

If you haven't configured your project's OAuth consent screen, you'll be prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen.

Setting up IAP access

  1. Go to the Identity-Aware Proxy page.
    Go to the Identity-Aware Proxy page
  2. Select the project you want to secure with IAP.
  3. Select the checkbox next to the resource you want to grant access to.
  4. On the right side panel, click Add principal.
  5. In the Add principals dialog that appears, enter the email addresses of groups or individuals who should have the IAP-secured Web App User role for the project.

    The following kinds of principals can have this role:

    • Google Account: user@gmail.com
    • Google Group: admins@googlegroups.com
    • Service account: server@example.gserviceaccount.com
    • Google Workspace domain: example.com

    Make sure to add a Google Account that you have access to.

  6. Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
  7. Click Save.

Turning on IAP

  1. On the Identity-Aware Proxy page, under Applications, find the application you want to restrict access to. To turn on IAP for a resource,
  2. In the Turn on IAP window that appears, click Turn On to confirm that you want IAP to secure your resource. After you turn on IAP, it requires login credentials for all connections to your load balancer. Only principals with the IAP-Secured Web App User (roles/iap.httpsResourceAccessor) role on the project will be given access.

gcloud

Antes de configurar tu proyecto y las compras en la aplicación, necesitas una versión actualizada de la CLI de gcloud. Para obtener instrucciones sobre cómo instalar gcloud CLI, consulta Instalar gcloud CLI.

  1. Para autenticarte, usa la CLI de Google Cloud y ejecuta el siguiente comando.
    gcloud auth login
  2. Haz clic en la URL que aparece e inicia sesión.
  3. Después de iniciar sesión, copia el código de verificación que aparece y pégalo en la línea de comandos.
  4. Ejecuta el siguiente comando para especificar el proyecto que contiene las aplicaciones que quieres proteger con la compra en la aplicación.
    gcloud config set project PROJECT_ID
  5. Para habilitar IAP, ejecuta el siguiente comando.
    gcloud iap web enable --resource-type=app-engine --versions=version
  6. Añade al proyecto las entidades que deban tener el rol de usuario de aplicaciones web protegidas mediante IAP.
    gcloud projects add-iam-policy-binding PROJECT_ID \
           --member=PRINCIPAL_IDENTIFIER \
           --role=roles/iap.httpsResourceAccessor
    • Sustituye PROJECT_ID por el ID del proyecto.
    • Sustituye PRINCIPAL_IDENTIFIER por los principales necesarios. Puede ser un tipo de dominio, grupo, cuenta de servicio o usuario. Por ejemplo, user:myemail@example.com.

Una vez que hayas habilitado IAP, puedes usar la CLI de gcloud para modificar la política de acceso de IAP con el rol de IAM roles/iap.httpsResourceAccessor. Más información sobre cómo gestionar roles y permisos

API

  1. Ejecuta el siguiente comando para preparar un archivo settings.json.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true
      }
    }
    EOF
    

  2. Ejecuta el siguiente comando para habilitar IAP.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
    

Después de habilitar IAP, puedes usar Google Cloud CLI para modificar la política de acceso de IAP con la función de IAM roles/iap.httpsResourceAccessor. Obtén más información sobre cómo administrar funciones y permisos.

Probar la autenticación de usuarios

  1. Accede a la URL de la aplicación desde una cuenta de Google que hayas añadido a IAP con el rol Usuario de aplicaciones web protegidas mediante IAP, tal como se ha descrito anteriormente. Deberías poder acceder a ella sin problemas.

  2. Usa una ventana de Incógnito en Chrome para acceder a la aplicación e inicia sesión cuando aparezca el mensaje correspondiente. Si intentas acceder a la aplicación con una cuenta que no tiene autorización con el rol Usuario de aplicación web protegida por IAP, verás un mensaje que indica que no tienes acceso.

Pasos siguientes