En este documento, 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 preliminares de CORS.
- Cómo se autentican los usuarios
- La página de error que se muestra a los usuarios cuando se niega el acceso
Administrar configuración
Puedes ver y actualizar la configuración de IAP en las aplicaciones de balanceador de cargas y App Engine con la Google Cloud consola, 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:
Console
Para ver y modificar la configuración con la Google Cloud consola, 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 APLICACIONES.
- Abre el menú más acciones y haz clic en Configuración.
- Haz clic en Guardar.
gcloud
Para obtener y modificar la configuración con Google Cloud CLI, usa los
gcloud iap settings get
y los
gcloud iap settings set
comandos de la siguiente manera:
- 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 Google Cloud consola 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 setpara 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 seleccionado 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
Roles y permisos de configuración de IAP
En esta sección, se describen los roles y los permisos necesarios para ver y actualizar la configuración de IAP.
Roles de configuración
Puedes otorgar el rol de administrador de configuración de IAP
(roles/iap.settingsAdmin) a nivel de la organización, la carpeta y el
proyecto. Para ver los permisos que otorga el rol de administrador de configuración de IAP,
consulta Configuración de permisos.
Para obtener más información sobre los roles y permisos de IAP, consulta Roles y permisos de Identity-Aware Proxy.
Los siguientes roles básicos proporcionan estos permisos:
El rol de visualizador del proyecto (
roles/viewer) otorga todos los permisosgetSettings.El rol de editor (
roles/editor) otorga todos los permisos que se describen en la tabla.
Configuración de permisos
En la siguiente tabla, se enumeran los permisos de IAM necesarios para leer y modificar la configuración de cada tipo de recurso. Para obtener una descripción de los diferentes tipos de recursos, consulta Recursos y permisos.
| 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 |
| Tipos web | iap.webTypes.getSettings |
iap.webTypes.updateSettings |
| Servicios web | iap.webServices.getSettings |
iap.webServices.updateSettings |
| Versiones de servicios web | iap.webServiceVersions.getSettings |
iap.webServiceVersions.updateSettings |
| Tipos web | iap.webTypes.getSettings |
iap.webTypes.updateSettings |
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 detalles, consulta Configura 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.
Si usas access_settings.cors_settings.allow_http_options como ejemplo, puedes configurar los parámetros de 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 Access-Control-Allow-Origin encabezado. 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 solicitud preliminar adecuada (que contenga los encabezados de respuesta Access-Control-* obligatorios), el navegador bloqueará la solicitud con un error. Además, dado que las solicitudes preliminares 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_optionsatruepara que IAP pase solicitudesOPTIONSa 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 laboral y una cuenta personal), el sistema seleccionará de manera automática su cuenta laboral 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
aliceen lugar dealice@example.com, por ejemplo).Si tu dominio de Google Workspace 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 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. 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.
Emite los ID de malla RCToken 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 integrado 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 encuentra, 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.