Preguntas frecuentes y solución de problemas

En este artículo, se incluyen preguntas frecuentes sobre Identity-Aware Proxy (IAP).

¿Qué aplicaciones puedo proteger con IAP?

IAP se puede usar con lo siguiente:

  • Entorno estándar de App Engine y aplicaciones de entorno flexible de App Engine
  • Instancias de Compute Engine con servicios de backend de balanceo de cargas HTTP(S)
  • Contenedores de Google Kubernetes Engine
  • Apps de Cloud Run con servicios de backend de balanceo de cargas HTTP(S)

Actualmente, IAP no se puede usar con Cloud CDN.

¿Por qué aparece un # al final de mi URL después de acceder a mi aplicación?

Es posible que algunos navegadores en ciertas circunstancias agreguen un # a la URL después de autenticarla. Esto es normal, y no ocasionará problemas para acceder a la aplicación.

¿Por qué mis solicitudes fallan y se muestra un código de estado 405 Método no permitido?

El origen de este error puede estar en que tus solicitudes no llevan cookies adjuntas. Según la configuración predeterminada, los métodos de JavaScript no adjuntan cookies a las solicitudes.

La forma de incluir cookies varía dependiendo del método de solicitud que utilices. Por ejemplo, las solicitudes enviadas con un objeto XMLHttpRequest necesita la propiedad withCredentials establecida en true, mientras que las solicitudes enviadas con la API de recuperación necesitan la opción credentials configurada en include o same-origin.

Para obtener información sobre cómo manejar los errores que se producen después de un tiempo, consulta Administración de las sesiones de Cloud IAP.

¿Por qué recibo un código de estado HTTP 401 No autorizado en lugar de un HTTP 302 Redireccionamiento?

IAP responde con un código de estado 302 Redirect cuando un cliente está configurado para manejar redireccionamientos. Para indicar que tu cliente puede manejar redireccionamientos, asegúrate de que HTTP Accept="text/html,*/*" esté en el encabezado de las solicitudes.

¿Por qué las solicitudes POST no activan redireccionamientos?

Para activar redireccionamientos, asegúrate de que las llamadas a IAP no sean solicitudes POST. Los navegadores no redireccionan como respuesta a las solicitudes POST. Debido a esto, IAP responde con un código de estado 401 Unauthorized en lugar de 302 Redirect.

Si necesitas IAP para entregar solicitudes POST, asegúrate de que el token de ID o las cookies válidas se envíen en el encabezado de la solicitud.

Incluye el token de ID en un encabezado Authorization: Bearer para realizar una solicitud autenticada al recurso protegido con IAP. Para obtener cookies válidas, actualiza la sesión.

¿Puedo usar IAP si inhabilité la API?

Sí, el acceso a los recursos protegidos con IAP funciona con la API inhabilitada, pero no podrás realizar cambios en los permisos de IAM.

¿Cómo puedo evitar que los usuarios con la función de propietario usen IAP para TCP?

Primero, evita usar la función de propietario (roles/owner) tanto como sea posible. La función de propietario otorga amplios permisos en Google Cloud. Asignar funciones y permisos más detallados puede aumentar la seguridad de tu proyecto. Para obtener más información, consulta las prácticas recomendadas de IAM.

Si no puedes reducir el uso de la función de propietario, puedes bloquear IAP para TCP mediante reglas de firewall.

¿Qué dominio usa IAP para TCP?

IAP usa los siguientes dominios, que son propiedad de Google:

Si te conectas a través de un servidor proxy o un firewall, asegúrate de que permitan el tráfico a estos dominios y que no bloqueen el uso de conexiones WebSocket.

De lo contrario, no podrás usar IAP para TCP. Es posible que recibas uno de los siguientes mensajes de error.

Si usas gcloud, el mensaje de error podría ser el siguiente:

Error while connecting [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

Si usas SSH desde el navegador, el mensaje de error es el siguiente:

Cloud Identity-Aware Proxy Failed

No hay un código de error asociado.

¿Por qué recibo el error Server Error?

Si recibes el siguiente mensaje de error, es posible que tu firewall no permita las IP 130.211.0.0/22 y 35.191.0.0/16:

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.

Si las IPs del balanceador de cargas 130.211.0.0/22 y 35.191.0.0/16 no pueden conectarse a tu backend, es posible que no se pueda acceder a tus aplicaciones. Para obtener más información, consulta Configura un balanceador de cargas HTTPS externo.

Si usas IAP para TCP para conectarte a una VM específica, esta debe aceptar conexiones de direcciones en el rango 35.235.240.0/20.

¿Por qué recibo errores internos del servidor de forma intermitente?

Un mensaje de error con el siguiente formato indica una falla interna:

An internal server error occurred while authorizing your request. Error code X

Los errores internos con los códigos de error 1, 30, 62, 63, 64 o 703 indican fallas del backend. Una tasa baja de estos errores de backend suele indicar un problema transitorio. Los clientes deben reintentar la solicitud con una retirada exponencial.

¿Cómo puedo abordar los errores de cuota excedida (código de error 429)?

El código de error 429 indica que la IAP limita el tráfico a la aplicación. IAP aplica un límite de 360,000 solicitudes por minuto por proyecto. Si hay varias aplicaciones alojadas en un solo proyecto, las cuotas se aplican al total de solicitudes que reciben todas las aplicaciones protegidas por IAP del proyecto.

Si experimentas errores de cuota excedida de IAP, estas son algunas técnicas que puedes aplicar para aliviar el problema. * No se recomienda realizar pruebas de carga en instancias de producción. Si el aumento de la carga se debe a las pruebas de carga, te recomendamos que encuentres rutas de red alternativas para tu aplicación que no invoquen la IAP.

  • Si tu aplicación recibe un tráfico alto de servicio a servicio, te recomendamos que implementes la retirada exponencial del cliente para controlar los errores 429 de forma fluida.

  • Si hay varias aplicaciones con mucho tráfico dentro del mismo proyecto, considera mover algunas de ellas a un proyecto diferente.

  • Si la aplicación se compila como una API en lugar de una aplicación web, considera usar soluciones de puerta de enlace de API, como Apigee.

  • Si el motivo del tráfico alto es el crecimiento orgánico, comunícate con la Asistencia de Google Cloud para solicitar un aumento del límite de cuota.

Códigos de error

En la siguiente tabla, se enumeran los códigos de error comunes y los mensajes que se muestran cuando configuras y usas IAP.

Código o mensaje de error Descripción Soluciona problemas
Código de error 7 Tu ID de cliente de OAuth o los valores secretos están vacíos. A fin de verificar que tu ID de cliente y tu secreto estén configurados correctamente para tu aplicación, consulta la página Credenciales. Si parece que tu ID de cliente y tu secreto están configurados correctamente, usa el método GET para ver el estado actual y el método PATCH a fin de restablecer el ID de cliente y el secreto:
API de Compute Engine: GET, PATCH
API de App Engine: GET, PATCH
Código de error 9 No se completó un redireccionamiento de OAuth. Este es un error interno que se registró para su revisión.
Código de error 9 (con reglas de reescritura de rutas) No se completó un redireccionamiento de OAuth. Las reglas de reescritura de rutas de Google Cloud Load Balancing interfieren con la capacidad de la IAP para completar correctamente un flujo de OAuth. Si alojas varios backends detrás del balanceador de cargas de Google Cloud y usas reglas de reescritura de ruta, asegúrate de que ambos backends usen los mismos IDs de cliente de OAuth para la IAP. Puedes cambiar un ID de cliente de OAuth para un servicio de backend con el comando gcloud compute backend-services update.
Código de error 11 Tu ID de cliente de OAuth no está configurado correctamente. A fin de verificar que tu ID de cliente y tu secreto estén configurados correctamente para tu aplicación, consulta la página Credenciales. Si parece que tu ID de cliente y tu secreto están configurados correctamente, usa el método GET para ver el estado actual y el método PATCH a fin de restablecer el ID de cliente y el secreto:
API de Compute Engine: GET, PATCH
API de App Engine: GET, PATCH
Código de error 13 El token de OpenID Connect (OIDC) no es válido. A fin de asegurarte de que el ID de cliente configurado para IAP no se borre, consulta la página Credenciales.
Código de error 51 Tu navegador no admite el grupo de conexiones. Un navegador actual y actualizado puede controlar los errores de aprovisionamiento de conexiones. Asegúrate de que los usuarios finales usen un navegador actual y actualizado. Para obtener más información, consulta Cómo restringir el acceso a recursos a dominios específicos.
Código de error 52 El nombre de host proporcionado no coincide con el certificado SSL del servidor. Es posible que el administrador del sistema deba actualizar el certificado SSL. Para obtener más información, consulta Cómo restringir el acceso a recursos a dominios específicos.
Código de error 53 El nombre de host no coincide con los dominios que permite el administrador de IAP. El administrador debe actualizar la lista de dominios permitidos para incluir tu nombre de host. Para obtener más información, consulta Cómo restringir el acceso a recursos a dominios específicos.
Código de error 429 Tu proyecto supera el límite por minuto para las solicitudes. Los proyectos de IAP están limitados a un máximo de 360,000 solicitudes por minuto. Si encuentras este error, reduce el volumen de solicitudes de tu proyecto. Si tienes más preguntas, comunícate con el equipo de Asistencia de Google Cloud.
Códigos de error 700 y 701 El grupo de trabajadores configurado no tiene ningún proveedor (700) o tiene más de uno (701). La IAP requiere exactamente un proveedor en un grupo de personal para usar la federación de identidades de personal. Consulta Limitaciones cuando se trabaja con grupos de trabajadores.
Código de error 705 Tu ID de cliente de OAuth para usar la IAP con la federación de identidades de personal está vacío. Verifica que se hayan seguido los pasos para crear un ID de cliente y un secreto de OAuth y actualizar la configuración de IAP.
Código de error 708 Tu grupo de trabajadores no existe o el nombre no tiene el formato correcto. Asegúrate de que tu grupo de personal exista y de que el nombre tenga el siguiente formato: locations/global/workforcePools/WORKFORCE_POOL_ID.
Código de error 4003 Esto puede significar que la instancia no escucha en el puerto al que intentas conectarte o que el firewall está cerrado. Cualquiera de esos problemas también podría hacer que falle la prueba de conectividad de inicio de la instancia de la VM. Asegúrate de que el proceso de escucha en la VM se esté ejecutando y escuchando en el puerto correcto. Además, verifica que tu firewall de Google Cloud esté configurado correctamente y que esté abierto en el puerto al que te estás conectando.
Código de error 4010 Se estableció una conexión, pero la instancia de destino la cerró. Por lo general, esto indica un problema en la instancia o el programa que escucha en el puerto de destino. Restablece la instancia. Si usas SSH para conectarte, revisa el registro de auth.log en busca de errores inesperados. La ubicación predeterminada del archivo de registro es /var/log/. Si no puedes acceder a los registros con SSH, intenta usar la consola en serie o desconecta y vuelve a conectar el disco a una VM nueva para ver los registros. Adjunta los registros cuando te comuniques con el servicio de asistencia al cliente.
Código de error 4033 O bien no tienes permiso para acceder a la instancia, la instancia no existe o la instancia está detenida. Visualiza la página de Identity-Aware Proxy para asegurarte de tener la función de usuario de túnel protegido con IAP de IAM aplicada en el recurso al que te estás conectando.
Código de error 4047 La instancia no existe o está detenida. Asegúrate de que la VM esté encendida y haya completado su inicio.

Si no puedes resolver el problema o no ves el error en esta página, comunícate con Atención al cliente de Cloud. Proporciona la descripción del error y la respuesta que obtienes de una llamada GET a la API. Asegúrate de quitar el secreto de tu cliente de la respuesta.