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

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 accounts with the IAP-Secured Web App User role on the project will be given access.

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 Crea 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 la CLI de gcloud 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. Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.

  2. Save the OAuth client ID and secret.

  3. Run the following command to prepare a settings.json file.

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

  4. Run the following command to enable 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"
    

After you enable IAP, you can use the Google Cloud CLI to modify the IAP access policy using the IAM role roles/iap.httpsResourceAccessor. Learn more about managing roles and permissions.

Compute Engine

Consola

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.

    If you don't see a resource, ensure that the resource is created and that the BackendConfig Compute Engine ingress controller is synced.

    To verify that the backend service is available, run the following gcloud command:

    gcloud compute backend-services list
  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.

gcloud

Before you set up your project and IAP, you need an up-to-date version of the gcloud CLI. For instructions on how to install the gcloud CLI, see Install the gcloud CLI.

  1. To authenticate, use the Google Cloud CLI and run the following command.
    gcloud auth login
  2. To sign in, follow the URL that appears.
  3. After you sign in, copy the verification code that appears and paste it in the command line.
  4. Run the following command to specify the project that contains the resource that you want to protect with IAP.
    gcloud config set project PROJECT_ID
  5. Follow the instructions in Creating OAuth clients for IAP. to configure the OAuth consent screen and create the OAuth client.
  6. Save the OAuth client ID and secret.
  7. To enable IAP, run either the globally or regionally scoped command.

    Global scope
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    Regional scope
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
        

After you enable IAP, you can use the gcloud CLI to modify the IAP access policy using the IAM role roles/iap.httpsResourceAccessor. Learn more about managing roles and permissions.

API

  1. Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.

  2. Save the OAuth client ID and secret.

  3. Run the following command to prepare a settings.json file.

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

  4. Run the following command to enable 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"
    

After you enable IAP, you can use the gcloud CLI to modify the IAP access policy using the IAM role roles/iap.httpsResourceAccessor. Learn more about managing roles and permissions.

Cloud Run

Consola

Si aún no configuraste la pantalla de consentimiento de OAuth de tu proyecto, se te solicitará hacerlo. Para configurarla, 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 de 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 la función Usuario de aplicación web protegida con IAP en el proyecto.
  3. Para autorizar a IAP para que envíe tráfico al servicio de Cloud Run de backend, sigue las instrucciones que se indican en Cómo agregar principales a un servicio para agregar el siguiente principal y rol.

    • 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 de cliente y el secreto de OAuth.
  3. Si aún no lo hiciste, ejecuta el siguiente comando para crear una cuenta de servicio. Si ya creaste una cuenta de servicio, ejecutar el comando no creará cuentas de servicio duplicadas.
    gcloud beta services identity create \
        --service=iap.googleapis.com --project=PROJECT_ID
    
  4. Ejecuta el siguiente comando para otorgar el permiso de invocador a la cuenta de servicio que creaste 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. Para habilitar los IAP, ejecuta 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 de cliente y el secreto 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.