Autentica usuarios con Cuentas de Google

En esta página, se explica cómo implementar una aplicación de entorno flexible o estándar de App Engine y cómo protegerla con Identity-Aware Proxy (IAP). En la guía de inicio rápido, se incluye un código de muestra para una aplicación web de entorno estándar de App Engine que verifica el nombre de un usuario que accedió a ella. En esta guía de inicio rápido, se usa Cloud Shell para clonar y también implementar la aplicación de muestra. Puedes usarla a fin de habilitar IAP para tu aplicación en el entorno estándar o flexible de App Engine.

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

Cuando una aplicación de App Engine consta de varios servicios, es posible configurar diferentes permisos de IAP en los distintos servicios, lo que incluye hacer que solo algunos de los servicios sean de acceso público y mantener protegidos a los demás.


Para seguir la guía paso a paso sobre esta tarea directamente en la consola Google Cloud , haz clic en Guiarme:

GUIARME


Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

Antes de comenzar

Para habilitar IAP para App Engine, necesitas lo siguiente:

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

Si aún no configuraste tu instancia de App Engine, consulta Cómo implementar App Engine para obtener una explicación completa.

IAP usa un cliente de OAuth administrado por Google para autenticar a los usuarios. Solo los usuarios de la organización pueden acceder a la aplicación habilitada para las IAP. Si deseas permitir el acceso a usuarios fuera de tu organización, consulta Habilita IAP para aplicaciones externas.

Habilita IAP

Console

El cliente de OAuth administrado por Google no está disponible cuando se habilita IAP con la consola de Google Cloud .

Archivo de inclusión dinámica

Si no has configurado la pantalla de consentimiento de OAuth de tu proyecto, se te pedirá que lo hagas. Para configurar la pantalla de consentimiento de OAuth, consulta el artículo Configurar la pantalla de consentimiento de OAuth.

Configurar el acceso a IAP

  1. Ve a la página Identity-Aware Proxy.
    Ve a la página Identity-Aware Proxy
  2. Selecciona el proyecto que quieras proteger con IAP.
  3. Seleccione la casilla situada junto al recurso al que quiera conceder acceso.
  4. En el panel lateral de la derecha, haz clic en Añadir principal.
  5. En el cuadro de diálogo Añadir principales que aparece, introduce las direcciones de correo de los grupos o las personas que deban tener el rol Usuario de aplicaciones web protegidas mediante IAP en el proyecto.

    Los siguientes tipos de principales pueden tener este rol:

    • Cuenta de Google: usuario@gmail.com
    • Grupo de Google: admins@googlegroups.com
    • Cuenta de servicio: servidor@example.gserviceaccount.com
    • Dominio de Google Workspace: example.com

    Asegúrate de añadir una cuenta de Google a la que tengas acceso.

  6. En la lista desplegable Roles, selecciona Cloud IAP > IAP-secured Web App User (Cloud IAP > Usuario de aplicación web protegida con IAP).
  7. Haz clic en Guardar.

Activando IAP

  1. En la página Identity-Aware Proxy, en APLICACIONES, busca la aplicación a la que quieras restringir el acceso. Para activar IAP en un recurso, haz lo siguiente:
  2. En la ventana Activar IAP que aparece, haz clic en Activar para confirmar que quieres que IAP proteja tu recurso. Una vez que hayas activado IAP, se requerirán credenciales de inicio de sesión para todas las conexiones con tu balanceador de carga. Solo se concederá acceso a las cuentas que tengan el rol Usuario de aplicaciones web protegidas mediante IAP en el proyecto.

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"
    

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

Probar la autenticación de usuarios

  1. Accede a la URL de la app desde una Cuenta de Google que agregaste a IAP con la función de Usuario de aplicación web protegida con IAP, como se describió antes. Debes tener acceso ilimitado a la aplicación.

  2. Usa una ventana de incógnito en Chrome para acceder a la aplicación y cuando se te solicite. Si intentas acceder a la aplicación con una cuenta que no está autorizada con la función Usuario de aplicación web protegida con IAP, verás un mensaje que indica que no tienes acceso.

¿Qué sigue?