Utiliza las condiciones del nombre de host y la ruta de acceso

En esta página, se describen las condiciones de administración de identidades y accesos (IAM) del nombre de host y la ruta.

Puedes proteger los recursos de Identity-Aware Proxy (IAP) con el nombre de host y la ruta de una URL de solicitud. Por ejemplo, la condición request.path.startsWith de IAM se puede usar para otorgar acceso únicamente a los empleados del grupo de Acceso privilegiado si la ruta de URL comienza con /admin.

Para obtener más información sobre cómo usar las condiciones de nombre de host y ruta de acceso, consulta los atributos de solicitud.

Normalización de strings

Una URL tiene un nombre de host y una ruta de acceso. Por ejemplo, la URL https://sheets.google.com/create?query=param tiene el nombre de host sheets.google.com y la ruta /create.

Los backends pueden interpretar nombres de host y rutas de acceso de diferentes maneras. Para evitar la ambigüedad, IAP normaliza las strings de ruta de acceso y nombre de host mediante la comprobación de las políticas.

IAP realiza dos verificaciones de la política cuando una solicitud tiene una ruta de acceso no normalizada. Si la ruta no normalizada supera la verificación de la política, IAP normaliza la ruta de acceso y se realiza una segunda verificación de la política. El acceso se otorga si las rutas normalizadas y no normalizadas pasan la verificación de la política.

Por ejemplo, si una solicitud tiene la ruta /internal;some_param/admin, IAP primero realiza una verificación de política en la ruta no normalizada (/internal). Si esa verificación pasa, IAP realiza una segunda verificación de política en la ruta normalizada (/internal/admin).

Nombres de host

La normalización del nombre de host incluye lo siguiente:

  • Eliminación de puntos finales
  • Caracteres en minúscula
  • Conversión a ASCII

Los nombres de host que incluyen caracteres que no son ASCII tienen una normalización adicional mediante Punycode. Debes usar Punycode para normalizar la string de nombre de host para que se realice una coincidencia.

Para normalizar tu string de nombre de host con Punycode, usa un conversor, como Punycoder.

Los siguientes son ejemplos de nombres de host normalizados:

  • FOO.com se normaliza en foo.com
  • café.fr se normaliza en xn--caf-dma.fr

Rutas

La normalización de rutas implica lo siguiente:

  • Eliminación de parámetros de ruta de acceso
  • Resolución de rutas relativas a su equivalente absoluto

Un parámetro de ruta de acceso incluye todos los caracteres desde un ; hasta el siguiente / o el final de la ruta.

Las solicitudes que contienen secciones de ruta que comienzan con ..; se consideran no válidas. Por ejemplo, /..;bar/ y /bar/..;/ muestran el error HTTP 400: Bad Request.

Los siguientes son ejemplos de rutas de acceso normalizadas:

  • /internal;some_param/admin se normaliza en /internal/admin
  • /a/../b se normaliza en /b
  • /bar;param1/baz;baz;param2 se normaliza en /bar/baz

Terminaciones de subdominios

Una política establecida con request.host.endsWith("google.com") coincide con sub_domain.google.com y con testgoogle.com. Si tu objetivo es limitar tu política solo a los subdominios que terminan con google.com, establece tu política en request.host.endsWith(".google.com").