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 GKE Enterprise y Istio 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 apps de App Engine con 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, proyectos y organizaciones, usa Google Cloud CLI o la API.
Para administrar la configuración en IAP, haz lo siguiente:
Console
Para ver y modificar la configuración con la consola de Google Cloud, haz lo siguiente:
- Ve a la página Identity-Aware Proxy.
Ir a la página Identity-Aware Proxy - Busca tu recurso en la pestaña APPLICATIONS.
- Abra el menú más acciones y haga clic en Configuración.
- 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 configurar la configuración de IAP con la consola de Google Cloud o gcloud CLI, consulta Cómo 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 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 |
Carpetas | 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 GKE Enterprise y Istio |
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 reautorizació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.
Tomando access_settings.cors_settings.allow_http_options
como ejemplo, puedes configurar la configuración 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 app 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:
Agrega código a tu aplicación que responda a las solicitudes
OPTIONS
.Cambia la configuración
access_settings.cors_settings.allow_http_options
atrue
para que IAP pase solicitudesOPTIONS
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 dealice@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, establece el valor de access_settings.oauth_settings.login_hint
en tu nombre de dominio de Google Workspace (como example.com
). Se debe haber verificado la propiedad del dominio: No puedes usar dominios DNS de Internet arbitrarios que sean de tu propiedad. (Los dominios que se agregaron como dominio principal o secundario de Google Workspace están verificados 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 de acceso denegado personalizada
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. Para obtener más información, consulta Habilita la URL de solución de problemas para tu página de error de acceso denegado personalizada.
Cómo emitir IDs de malla de RCToken de GKE Enterprise y Istio
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.