Usar condiciones de nombre de host y ruta

En esta página se describen las condiciones de Gestión de Identidades y Accesos (IAM) de nombre de host y ruta.

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

Para obtener más información sobre el uso de las condiciones de nombre de host y ruta, consulta los atributos de solicitud.

Normalización de cadenas

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

Los back-ends pueden interpretar los nombres de host y las rutas de diferentes formas. Para evitar ambigüedades, IAP normaliza las cadenas de nombre de host y de ruta al comprobar las políticas.

IAP realiza dos comprobaciones de políticas cuando una solicitud tiene una ruta no normalizada. Si la ruta no normalizada supera la comprobación de la política, IAP normaliza la ruta y se realiza una segunda comprobación de la política. Se concederá acceso si tanto la ruta no normalizada como la normalizada superan la comprobación de la política.

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

Nombres de host

La normalización de nombres de host implica lo siguiente:

  • Eliminar puntos finales
  • Convertir caracteres a minúsculas
  • Convertir a ASCII

Los nombres de host que incluyen caracteres que no son ASCII se normalizan aún más mediante Punycode. Debes usar Punycode para normalizar la cadena de nombre de host y poder hacer una coincidencia.

Para normalizar la cadena de nombre de host con Punycode, usa un convertidor como Punycode.

A continuación, se muestran ejemplos de nombres de host normalizados:

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

Rutas

La normalización de rutas implica lo siguiente:

  • Eliminar parámetros de ruta
  • Resolver rutas relativas a su equivalente absoluto

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

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

Estos son algunos ejemplos de rutas normalizadas:

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

Terminaciones de subdominio

Una política definida con request.host.endsWith("google.com") coincide con sub_domain.google.com y testgoogle.com. Si tu objetivo es limitar tu política a los subdominios que terminen en google.com, define tu política como request.host.endsWith(".google.com").