Personaliza una configuración de OAuth para habilitar IAP

En esta página, se explica cuándo y cómo personalizar una configuración de OAuth para Identity-Aware Proxy (IAP).

IAP usa un cliente de OAuth administrado por Google para autenticar usuarios.

El cliente de OAuth administrado por Google restringe el acceso a los usuarios dentro de la misma organización cuando acceden a aplicaciones habilitadas para IAP a través de un navegador.

Cuándo usar una configuración de OAuth personalizada

Debes usar una configuración de OAuth personalizada para hacer lo siguiente:

  • Permitir el acceso a aplicaciones habilitadas con IAP para los usuarios ajenos a la organización
  • Mostrar tu propia información de marca durante la autenticación
  • Para habilitar el acceso programático a tu aplicación.

Cuando personalizas tu configuración de OAuth, debes configurar la pantalla de consentimiento de OAuth. Esto requiere que la información de desarrollo de la marca de tu aplicación pase por el proceso de verificación de Google. Para obtener más información sobre el proceso de verificación, consulta Cómo configurar tu pantalla de consentimiento de OAuth.

Eres responsable de crear y administrar las credenciales de un cliente de OAuth personalizado. Esto incluye almacenar el secreto del cliente de forma segura y compartirlo con usuarios autorizados cuando sea necesario.

Comparación de clientes OAuth personalizados y clientes de OAuth administrados por Google

En la siguiente tabla, se muestra una comparación entre el cliente de OAuth administrado por Google y un cliente de OAuth personalizado.

Cliente de OAuth administrado por Google Cliente de OAuth personalizado
Usuarios Solo para uso interno Socios internos y externos
Brand La marca de Google Cloud Marca del cliente
Configuración de OAuth La configuración de Google Configurada por el cliente
Credenciales de OAuth Administrado por Google Administrada por el cliente
Acceso a aplicaciones Solo flujo del navegador Flujo del navegador y acceso programático

Habilita IAP con una configuración personalizada de cliente de OAuth

App Engine

Consola

Archivo de inclusión dinámico

Si aún no has configurado la pantalla de consentimiento de OAuth para tu proyecto, se te solicitará hacerlo. Para configurar la pantalla de consentimiento de OAuth, consulta Configura la pantalla de consentimiento de OAuth.

Configura el acceso de IAP

  1. Ve a la página Identity-Aware Proxy.
    Ir a la página Identity-Aware Proxy
  2. Selecciona el proyecto que deseas proteger con IAP.
  3. Selecciona la casilla de verificación junto al recurso al que deseas otorgar acceso.
  4. En el panel de la derecha, haz clic en Agregar principal.
  5. En el diálogo Agregar principales que aparece, ingresa las direcciones de correo electrónico de los grupos o Las personas que deberían tener la función Usuario de aplicación web protegida con IAP para el proyecto.

    Los siguientes tipos de principales pueden tener este rol:

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

    Asegúrate de agregar una Cuenta de Google a la que tengas acceso.

  6. En la lista desplegable Funciones, selecciona Cloud IAP > Usuario de aplicación web protegida con IAP.
  7. Haz clic en Guardar.

Activa IAP

  1. En la página Identity-Aware Proxy, en APPLICATIONS, busca la aplicación a la que deseas restringir el acceso. Para activar IAP para un recurso, haz lo siguiente:
  2. En la ventana Activar IAP que aparece, haz clic en Activar para confirmar que deseas que IAP proteja tu 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

Antes de configurar IAP y tu proyecto, necesitas una versión actualizada de gcloud CLI. Para obtener instrucciones sobre cómo instalar gcloud CLI, consulta Instala gcloud CLI.

  1. Para realizar la autenticación, usa Google Cloud CLI y ejecuta el siguiente comando.
    gcloud auth login
  2. Para acceder, sigue la URL que aparece.
  3. Después de acceder, 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 el recurso que quieres proteger con IAP.
    gcloud config set project PROJECT_ID
  5. Sigue las instrucciones que se indican en Cómo crear clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.
  6. Guarda el ID de cliente y el secreto de OAuth.
  7. Para habilitar IAP, ejecuta el siguiente comando.
    gcloud iap web enable \
        --oauth2-client-id=CLIENT_ID \
        --oauth2-client-secret=CLIENT_SECRET \
        --resource-type=app-engine

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

API

  1. Sigue las instrucciones que se indican en Cómo crear clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.

  2. Guarda el ID y el secreto de cliente de OAuth.

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

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true,
        "oauth2ClientId" : CLIENT_ID,
        "oauth2ClientSecret" : CLIENT_SECRET,
      }
    }
    EOF
    

  4. 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 la Google Cloud CLI para modificar el Política de acceso de IAP con el rol de IAM roles/iap.httpsResourceAccessor Obtén más información sobre cómo administrar funciones y permisos.

Compute Engine

Consola

Si no has configurado la pantalla de consentimiento de OAuth para tu proyecto, podrás que se te solicite hacerlo. Para configurar tu pantalla de consentimiento de OAuth, consulta Configura tu pantalla de consentimiento de OAuth.

Configura el acceso de IAP

  1. Ve a la página Identity-Aware Proxy.
    Ir a la página Identity-Aware Proxy
  2. Selecciona el proyecto que deseas proteger con IAP.
  3. Selecciona la casilla de verificación junto al recurso al que deseas otorgar acceso.

    Si no ves un recurso, asegúrate de que se haya creado y que el controlador de entrada de Compute Engine de BackendConfig está sincronizado.

    Para verificar que el servicio de backend esté disponible, ejecuta el siguiente comando: gcloud:

    gcloud compute backend-services list
  4. En el panel de la derecha, haz clic en Agregar principal.
  5. En el diálogo Agregar principales que aparece, ingresa las direcciones de correo electrónico de los grupos o Las personas que deberían tener la función Usuario de aplicación web protegida con IAP para el proyecto.

    Los siguientes tipos de principales pueden tener este rol:

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

    Asegúrate de agregar una Cuenta de Google a la que tengas acceso.

  6. En la lista desplegable Funciones, selecciona Cloud IAP > Usuario de aplicación web protegida con IAP.
  7. Haz clic en Guardar.

gcloud

Antes de configurar IAP y tu proyecto, necesitas una versión actualizada de la gcloud CLI. Para obtener instrucciones sobre cómo instalar gcloud CLI, consulta Instala gcloud CLI.

  1. Para autenticarte, usa Google Cloud CLI y ejecuta el siguiente comando.
    gcloud auth login
  2. Para acceder, sigue la URL que aparece.
  3. Después de acceder, 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 el recurso que deseas proteger con IAP.
    gcloud config set project PROJECT_ID
  5. Sigue las instrucciones que se indican en Crea clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.
  6. Guarda el ID y el secreto de cliente de OAuth.
  7. Para habilitar IAP, ejecuta el comando con alcance global o regional.

    Alcance global
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    Permiso regional
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
        

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

API

  1. Sigue las instrucciones que se indican en Cómo crear clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.

  2. Guarda el ID y el secreto de cliente de OAuth.

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

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

  4. 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://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
    

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

Cloud Run

Consola

Si no configuraste la pantalla de consentimiento de OAuth para tu proyecto, que se te solicite hacerlo. Para configurar tu pantalla de consentimiento de OAuth, consulta Configura tu pantalla de consentimiento de OAuth.

Configura el acceso de IAP

  1. Abre la página Identity-Aware Proxy.
    Ir a Identity-Aware Proxy
  2. Selecciona el proyecto que deseas proteger con IAP.
  3. En Aplicaciones, selecciona la casilla de verificación junto al servicio de backend del balanceador de cargas al que deseas agregar miembros.
  4. En el panel de la derecha, haz clic en Agregar miembro.
  5. En el diálogo Agregar miembros, ingresa las cuentas de grupos o personas. que deben 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 usuario@google.com o algún otro dominio de Google Workspace.
    • Grupo de Google: administradores@googlegroups.com
    • Cuenta de servicio: servidor@ejemplo.gserviceaccount.com
    • Dominio de Google Workspace: example.com
  6. Selecciona Cloud IAP > Usuario de aplicación web protegida con IAP de la lista Funciones.

  7. Haz clic en Guardar.

Activa IAP

  1. En la página IAP, en Aplicaciones, busca el servicio de backend del balanceador de cargas al que deseas restringir el acceso. Haz clic en el botón de activación IAP para habilitar IAP en un recurso.
  2. En la ventana Activar IAP que aparece, haz clic en Activar para confirmar que deseas que IAP proteja tu recurso. Después de activar IAP, se requieren credenciales de acceso para todas las conexiones a tu balanceador de cargas. Solo se otorgará acceso a las cuentas con el rol Usuario de la aplicación web protegida con IAP en el proyecto.
  3. Para autorizar a IAP a enviar tráfico al servicio de backend de Cloud Run, sigue las instrucciones en Agrega principales a un servicio para agregar el siguiente principio y función.

    • Principal: service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
    • Función: Invocador de Cloud Run

gcloud

  1. Sigue las instrucciones que se indican en Cómo crear clientes de OAuth para IAP para configurar la pantalla de consentimiento de OAuth y crear el cliente de OAuth.
  2. Guarda el ID y el secreto de cliente de OAuth.
  3. Si aún no lo has hecho, ejecuta el siguiente comando para crear una cuenta de servicio. Si ya creaste una cuenta de servicio, la ejecución del comando no crea cuentas de servicio duplicadas.
    gcloud beta services identity create \
        --service=iap.googleapis.com --project=PROJECT_ID
    
  4. Ejecuta el siguiente comando para otorgarle permiso a la cuenta de servicio creada en el paso anterior.
    gcloud run services add-iam-policy-binding SERVICE-NAME \
        --member='serviceAccount:service-PROJECT-NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \
        --role='roles/run.invoker'
    
  5. Habilita IAP ejecutando el comando con alcance global o regional, según si el servicio de backend del balanceador de cargas es global o regional. Usa el ID y el secreto de 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
    

    Permiso 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: Es el ID de cliente de OAuth del paso anterior.
    • CLIENT_SECRET: Es el secreto del 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 Google Cloud CLI para modificar la política de acceso de IAP con el rol de Identity and Access Management roles/iap.httpsResourceAccessor. Consulta Administra roles y permisos para obtener más información.