Personalizar IAP

En este artículo se describe cómo personalizar la configuración de Identity-Aware Proxy (IAP). Con estos ajustes, puedes controlar comportamientos como los siguientes:

  • Compatibilidad con GKE Enterprise e Istio en Google Kubernetes Engine.
  • La gestión de las solicitudes preparatorias de CORS.
  • Cómo se autentican los usuarios.
  • Página de error que se muestra a los usuarios cuando se les deniega el acceso.

Gestionar la configuración

Puedes ver y actualizar la configuración de IAP en aplicaciones de balanceador de carga y de App Engine mediante la Google Cloud consola, la API de IAP o la CLI de Google Cloud.

Para actualizar la configuración de IAP en todos los recursos, incluidas las carpetas, los proyectos y las organizaciones, usa la API o Google Cloud CLI.

Para gestionar los ajustes de IAP, sigue estos pasos:

Consola

Para ver y modificar la configuración mediante la consola Google Cloud , sigue estos pasos:

  1. Ve a la página Identity-Aware Proxy.
    Ir a la página Identity-Aware Proxy
  2. Busca el recurso en la pestaña APLICACIONES.
  3. Abre el menú Más acciones y haz clic en Configuración.
  4. Haz clic en Guardar.

gcloud

Para obtener y modificar ajustes con la CLI de Google Cloud, usa los comandos gcloud iap settings get y gcloud iap settings set como se muestra a continuación:

  • Para obtener la configuración de un proyecto, una carpeta o una organización, usa los siguientes comandos. Para configurar los ajustes de IAP mediante la consola de Google Cloud o la CLI de gcloud, consulta Personalizar IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
  • Para obtener la configuración de un tipo de recurso de IAP específico de un proyecto, sigue estos pasos:
gcloud iap settings get --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME
  • Para definir la configuración de un proyecto, una carpeta o una organización, o de un tipo de recurso de IAP de un proyecto, crea un archivo JSON o YAML que contenga la nueva configuración que quieras y especifica la ruta al archivo. Consulta el tema gcloud iap settings set para obtener más información:
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME

API

Para obtener y modificar la configuración mediante la API IAP, haz solicitudes con los verbos HTTP GET o PATCH al endpoint de recurso que quieras en Google Cloud. Combina el :iapSettings sufijo de ruta con una ruta de recurso (como se detalla en Recursos y permisos) y un método HTTP adecuado para obtener o modificar un ajuste. Consulta getIapSettings() y updateIapSettings() para obtener más información:

  • Para obtener o definir la configuración de un tipo de recurso de IAP específico en un proyecto, sigue estos pasos:
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
  • Para obtener o definir la configuración de un proyecto, sigue estos pasos:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
  • Para obtener o definir la configuración de una carpeta, sigue estos pasos:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
  • Para obtener o definir los ajustes de una organización, sigue estos pasos:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings

Información sobre el control de acceso a los ajustes

Se necesitan permisos específicos para ver y modificar la configuración de las compras en la aplicación. En la siguiente tabla se indican los permisos necesarios para leer y modificar los ajustes de cada tipo de recurso. Consulta la sección Recursos y permisos para ver una descripción de los diferentes tipos de recursos.

Recurso Permiso para ver la configuración Permiso para modificar ajustes
Organización iap.organizations.getSettings iap.organizations.updateSettings
Carpeta iap.folders.getSettings iap.folders.updateSettings
Proyecto iap.projects.getSettings iap.projects.updateSettings
Todos los servicios web iap.web.getSettings iap.web.updateSettings
Tipo de servicio web iap.webTypes.getSettings iap.webTypes.updateSettings
Servicio web iap.webServices.getSettings iap.webServices.updateSettings
Versión del servicio web iap.webServiceVersions.getSettings iap.webServiceVersions.updateSettings

El rol Administrador de configuración de IAP (roles/iap.settingsAdmin) concede todos estos permisos, al igual que el rol Editor de proyectos (roles/editor). El rol Lector de proyectos (roles/viewer) concede todos los permisos getSettings.

Para obtener más información sobre cómo conceder roles de gestión de identidades y accesos, consulta el artículo sobre cómo conceder, cambiar y revocar el acceso.

Personalizar los ajustes de IAP

IAP ofrece los siguientes ajustes de personalización:

Campo Descripción
access_settings.cors_settings.allow_http_options Controlar las opciones HTTP (solicitud preparatoria de CORS)
access_settings.oauth_settings.login_hint Simplificar el inicio de sesión de los usuarios de un dominio de G Suite
application_settings.access_denied_page_settings.access_denied_page_uri Mostrar una página de error personalizada cuando se deniega el acceso
application_settings.csm_settings.rctoken_aud Emitir RCTokens de GKE Enterprise e Istio
access_settings.gcip_settings Autenticar con Identity Platform
access_settings.ReauthSettings Configura una política de reautenticación. Para obtener más información, consulta Configurar la reautenticación.

Puedes aplicar ajustes a nivel de proyecto o a cualquier nivel inferior de recursos de IAP.

Puede configurar los ajustes de los recursos de IAP basados en web, pero no los recursos a los que se accede con IAP para reenviar TCP.

Por ejemplo, puedes configurar los ajustes de personalización de access_settings.cors_settings.allow_http_options de la siguiente manera:

YAML

access_settings:
  cors_settings:
    allow_http_options: "false"

JSON

{
  "access_settings": {
    "cors_settings": {
      "allow_http_options": "false"
    }
  }
}

En las siguientes secciones se proporciona más información sobre cada ajuste.

Permitir solicitudes HTTP OPTIONS (solicitud preparatoria de CORS)

Campo Valor predeterminado
access_settings.cors_settings.allow_http_options false

La política del mismo origen de la Web impide que los navegadores envíen solicitudes AJAX entre sitios web. De forma predeterminada, el código JavaScript de una página publicada desde un origen no puede usar AJAX para enviar una solicitud a una aplicación protegida con IAP alojada en un origen diferente.

En algunos casos, los navegadores intentarán automáticamente enviar una solicitud, pero descartarán el contenido de la respuesta si no incluye un encabezado Access-Control-Allow-Origin. Para permitir este tipo de solicitudes, incluye este encabezado en las respuestas de tu aplicación.

En otros casos, el navegador enviará una solicitud preparatoria de CORS, un tipo de solicitud OPTIONS HTTP, antes de enviar la solicitud entre orígenes. Si tu aplicación no responde con una respuesta de comprobación previa adecuada (que contenga los encabezados de respuesta Access-Control-* obligatorios), el navegador bloqueará la solicitud con un error. Además, como las solicitudes de comprobación previa no se envían con ninguna credencial de autenticación (como una cookie de sesión de IAP), IAP también responderá con un error.

Para permitir estas solicitudes, haz lo siguiente:

  1. Añade código a tu aplicación para que responda a las solicitudes OPTIONS.

  2. Cambia el ajuste access_settings.cors_settings.allow_http_options a true para que la compra en la aplicación transmita las solicitudes OPTIONS a tu aplicación.

Autenticación mediante un dominio de Google Workspace

Campo Valor predeterminado
access_settings.oauth_settings.login_hint ""

Si solo los miembros de un dominio de Google Workspace específico van a usar tu aplicación, puedes configurar IAP para optimizar el flujo de autenticación. Esto tiene varias ventajas:

  • Si un usuario ha iniciado sesión con varias cuentas (por ejemplo, una cuenta de trabajo y una cuenta personal), el sistema seleccionará automáticamente su cuenta de trabajo en lugar de mostrar la interfaz de selección de cuentas.

  • Si un usuario no ha iniciado sesión en su cuenta de Google, la interfaz de usuario de inicio de sesión rellenará automáticamente la parte del dominio de su dirección de correo (es decir, el usuario solo tendrá que escribir alice en lugar de alice@example.com, por ejemplo).

  • Si tu dominio de Google Workspace está configurado para usar un proveedor de inicio de sesión único externo, el sistema mostrará esa página de inicio de sesión personalizada en lugar de la de Google.

Para habilitar este comportamiento, asigna el valor de access_settings.oauth_settings.login_hint al nombre de tu dominio de Google Workspace (por ejemplo, example.com). Debes haber verificado la propiedad del dominio: no puedes usar dominios DNS de Internet arbitrarios que sean de tu propiedad. Los dominios que se hayan añadido como dominio principal o secundario de Google Workspace se verifican y, por lo tanto, se pueden usar aquí.

Si necesitas autenticar a usuarios que no pertenezcan al dominio, puedes usar la autenticación programática.

Para obtener más información, consulta la documentación de OpenID Connect.

Configurar una página de error de acceso denegado personalizada

Campo Valor predeterminado
application_settings.access_denied_page_settings.access_denied_page_uri ""

Puede definir una URL en este campo que redirija a los usuarios a una página personalizada en lugar de a la página de error predeterminada de IAP cada vez que una política deniegue el acceso.

También puedes insertar la URL de solución de problemas con esta función. Para obtener más información, consulta Habilitar la URL de solución de problemas en la página de error de acceso denegado personalizada.

Emitir IDs de malla de RCToken de GKE Enterprise e Istio

Campo Valor predeterminado
application_settings.csm_settings.rctoken_aud ""

Si usas Istio en GKE, puedes configurar IAP para que genere un RCToken compatible con Istio. Si este campo se define como una cadena no vacía, IAP añadirá un encabezado HTTP Ingress-Authorization que contenga un RCToken. La reclamación aud se definirá como el valor del campo.

Autenticación con Identity Platform

Campo Valor predeterminado
access_settings.gcip_settings null

De forma predeterminada, las compras en aplicaciones usan el sistema de identidad nativo de Google. Si se define este campo, IAP usará Identity Platform para autenticar a los usuarios.

Información sobre la herencia de la configuración en la jerarquía de recursos

IAP siempre evalúa las solicitudes de una versión específica de un servicio web. Este tipo de recurso se encuentra en el nivel más bajo de la jerarquía de recursos, que tiene este aspecto:

- Organization
  - Folder
    - Project
      - All web services
        - Web service type
          - Web service
            - Web service version

Para determinar la configuración que se debe aplicar a una versión de un servicio web, IAP empieza con un conjunto de valores predeterminado y, a continuación, recorre la jerarquía de arriba abajo. Los ajustes se aplican a medida que se encuentran, por lo que los valores definidos en un nivel inferior anulan los valores definidos en un nivel superior. Por ejemplo, si access_settings.cors_settings.allow_http_options tiene el valor true en el nivel de proyecto, pero false en el nivel de servicio, el valor efectivo será false.

Consulta Recursos y permisos para obtener más información sobre la jerarquía de recursos de IAP.