Personaliza IAP

En este artículo, se describe cómo personalizar la configuración de Identity-Aware Proxy (IAP). Con esta configuración, puedes controlar comportamientos que incluyen lo siguiente:

  • Compatibilidad con Istio y GKE Enterprise en Google Kubernetes Engine.
  • El manejo de las solicitudes de comprobación previa de CORS
  • Cómo se autentican los usuarios
  • La página de error que se muestra a los usuarios cuando se niega el acceso

Administra la configuración

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

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

Para administrar la configuración en IAP, haz lo siguiente:

Consola

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

  1. Ve a la página Identity-Aware Proxy.
    Ir a la página Identity-Aware Proxy
  2. Busca tu recurso en la pestaña Aplicaciones.
  3. Abra el menú más acciones y haga clic en Configuración.
  4. Haz clic en Guardar.

gcloud

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

  • Si quieres obtener la configuración de un proyecto, una carpeta o una organización, usa los siguientes comandos. Para establecer la configuración de IAP con la consola de Google Cloud o gcloud CLI, consulta Personaliza 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 en un proyecto, sigue estos pasos:
gcloud iap settings get --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME
  • Para establecer la configuración de un proyecto, carpeta, organización o tipo de recurso de IAP en un proyecto, crea un archivo JSON o YAML que contenga la configuración nueva deseada 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 con la API de IAP, realiza solicitudes con los verbos HTTP GET o PATCH al extremo del recurso deseado en Google Cloud. Combina el sufijo de ruta :iapSettings, una ruta de acceso al recurso (como se detalla en Recursos y permisos) y un método HTTP adecuado para obtener o modificar una configuración. Consulta getIapSettings() y updateIapSettings() para obtener más información:

  • A fin de obtener o establecer la configuración para un tipo de recurso 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
  • Sigue estos pasos para obtener o establecer la configuración de un proyecto:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
  • Para obtener o establecer la configuración de una carpeta:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
  • Para obtener o establecer la configuración de una organización, haz lo siguiente:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings

Información sobre el control de acceso para la configuración

Se requieren permisos específicos para ver y modificar la configuración de IAP. La siguiente tabla enumera los permisos necesarios para leer y modificar la configuración de cada tipo de recurso. Consulta Recursos y permisos para obtener una descripción de los diferentes tipos de recursos.

Recurso Permiso para ver la configuración Permiso para modificar la configuración
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

La función Administrador de configuración de IAP (roles/iap.settingsAdmin) otorga todos estos permisos, al igual que Editor del proyecto (roles/editor). El Visualizador del proyecto (roles/viewer) otorga todos los permisos getSettings.

Para obtener más información sobre cómo otorgar funciones, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.

Personaliza la configuración de IAP

IAP proporciona la siguiente configuración de personalización:

Campo Descripción
access_settings.cors_settings.allow_http_options Controla las OPCIONES DE HTTP (comprobación previa de CORS).
access_settings.oauth_settings.login_hint Simplifica el acceso para los usuarios de un dominio de G Suite
application_settings.access_denied_page_settings.access_denied_page_uri Muestra una página de error personalizada cuando se niega el acceso
application_settings.csm_settings.rctoken_aud Emite RCTokens de Istio y GKE Enterprise
access_settings.gcip_settings Autentica con Identity Platform
access_settings.ReauthSettings Establece una política de reautenticación. Para obtener más información, consulta Cómo configurar la reautenticación.

Puedes aplicar la configuración a nivel de proyecto o en cualquier nivel de recurso IAP más bajo.

Puedes definir la configuración para los recursos de IAP basados en la Web, pero no los recursos a los que se accede con IAP para el reenvío de TCP.

Con access_settings.cors_settings.allow_http_options como ejemplo, puedes configurar ajustes de personalización 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 configuración.

Permite solicitudes de OPCIONES DE HTTP (comprobación previa de CORS)

Campo Valor predeterminado
access_settings.cors_settings.allow_http_options false

La política de mismo origen de la Web impide que los navegadores envíen solicitudes AJAX entre sitios web. De forma predeterminada, JavaScript en una página que se entrega 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 una ejecutar una solicitud de manera automática, 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 de comprobación previa de CORS, un tipo de solicitud de OPTIONS de HTTP, antes de enviar la solicitud de origen cruzado. Si tu aplicación no responde con una respuesta de comprobación previa adecuada (que contenga los encabezados de respuesta Access-Control-* requeridos), el navegador bloqueará la solicitud con un error. Además, dado que 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. Agrega código a tu aplicación que responda a las solicitudes OPTIONS.

  2. Cambia la configuración access_settings.cors_settings.allow_http_options a true para que IAP pase solicitudes OPTIONS a tu aplicación.

Autentica 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 usarán tu aplicación, puedes configurar IAP para optimizar el flujo de autenticación. Esto tiene varios beneficios, como los siguientes:

  • Si un usuario accede con varias cuentas (como una cuenta de trabajo y una cuenta personal), el sistema seleccionará de manera automática su cuenta de trabajo en lugar de mostrar la IU de selección de cuenta.

  • Si un usuario no accede a su Cuenta de Google, la IU de acceso llenará de manera automática la parte del dominio de su dirección de correo electrónico (es decir, el usuario solo debe escribir alice en lugar de alice@example.com).

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

Para habilitar este comportamiento, configura el valor de access_settings.oauth_settings.login_hint con tu nombre de dominio de Google Workspace (como example.com). La propiedad del dominio debe estar verificada: no puedes usar dominios DNS de Internet arbitrarios que te pertenezcan. (los dominios que se agregaron como dominio principal o secundario de Google Workspace se verifican y, por lo tanto, se pueden usar aquí).

Si necesitas autenticar usuarios fuera del dominio, puedes usar la autenticación programática.

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

Configura una página de error personalizada de acceso denegado

Campo Valor predeterminado
application_settings.access_denied_page_settings.access_denied_page_uri ""

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

También puedes incorporar la URL de solución de problemas con esta función. Si deseas obtener más información, consulta Cómo habilitar la URL de solución de problemas para tu página de error personalizada de acceso denegado.

Emite los IDs de malla RCToken de Istio y GKE Enterprise

Campo Valor predeterminado
application_settings.csm_settings.rctoken_aud ""

Si usas Istio en GKE, puedes configurar IAP para producir un RCToken compatible con Istio. Si este campo se configura como una string no vacía, IAP agregará un encabezado HTTP Ingress-Authorization que contenga un RCToken. El reclamo aud se establecerá en el valor del campo.

Autentica con Identity Platform

Campo Valor predeterminado
access_settings.gcip_settings null

De forma predeterminada, IAP usa el sistema de identidad nativo de Google. Si se configura este campo, IAP usará Identity Platform para autenticar usuarios.

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

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

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

Para determinar la configuración que se aplicará a una versión de servicio web, IAP comienza con un conjunto predeterminado de valores y, luego, recorre la jerarquía de arriba abajo. La configuración se aplica a medida que se encuentran, por lo que los valores establecidos en un nivel inferior anulan los valores establecidos en un nivel superior. Por ejemplo, si access_settings.cors_settings.allow_http_options se establece en true a nivel de proyecto, pero false a nivel de servicio, entonces el valor efectivo será false.

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