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:
- Ve a la página Identity-Aware Proxy.
Ir a la página Identity-Aware Proxy - Busca el recurso en la pestaña APLICACIONES.
- Abre el menú Más acciones y haz clic en Configuración.
- 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:
Añade código a tu aplicación para que responda a las solicitudes
OPTIONS
.Cambia el ajuste
access_settings.cors_settings.allow_http_options
atrue
para que la compra en la aplicación transmita las solicitudesOPTIONS
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 dealice@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.