Como usar as condições de nome e caminho do host

Nesta página, descrevemos as condições do Identity and Access Management (IAM).

É possível proteger recursos do Identity-Aware Proxy (IAP) usando o nome do host e o caminho de um URL de solicitação. Por exemplo, a condição do IAM request.path.startsWith só pode ser usada para conceder acesso aos funcionários no grupo Acesso prioritário se o caminho do URL começar com /admin.

Para mais informações sobre as condições de nome e caminho do host, veja Atributos de solicitação.

Normalização de strings

Um URL tem um nome e caminho de host. Por exemplo, o URL https://sheets.google.com/create?query=param tem o nome de host sheets.google.com e o caminho /create.

Os back-ends podem interpretar os nomes e caminhos de host de maneiras diferentes. Para remover a ambiguidade, o IAP normaliza essas informações ao verificar as políticas.

O IAP executa duas verificações de política quando uma solicitação tem um caminho não normalizado. Se esse caminho passar na verificação, ele será normalizado e uma segunda verificação de política será executada pelo IAP. Será concedido acesso se os caminhos não normalizados e normalizados passarem na verificação.

Por exemplo, se uma solicitação tiver o caminho /internal;some_param/admin, o IAP primeiro executará uma verificação de política no caminho não normalizado (/internal). Se essa verificação for aprovada, o IAP executará uma segunda verificação no normalizado (/internal/admin).

Nomes de host

A normalização de nome de host envolve o seguinte:

  • Removendo pontos à direita
  • Colocando os caracteres em minúsculo
  • Convertendo para ASCII

Os nomes de host que incluem caracteres não ASCII são normalizados usando o Puncode. Você precisa usar o Punycode para normalizar a string do nome do host para que uma correspondência seja feita.

Para normalizar sua string de nome de host com o punycode, use um conversão como o punycoder.

Veja a seguir exemplos de nomes de host normalizados:

  • FOO.com é a versão normalizada para foo.com.
  • café.fr é a versão normalizada para xn--caf-dma.fr.

Caminhos

A normalização de caminho envolve o seguinte:

  • Removendo parâmetros de caminho
  • Resolvendo caminhos relativos ao equivalente absoluto deles.

Um parâmetro de caminho inclui todos os caracteres de ; até o próximo / ou o fim desse caminho.

Solicitações que contenham seções de caminho começando com ..; são consideradas inválidas. Por exemplo, /..;bar/ e /bar/..;/ retornam o erro HTTP 400: Bad Request.

Veja a seguir exemplos de caminhos normalizados:

  • /internal;some_param/admin é a versão normalizada para /internal/admin.
  • /a/../b é a versão normalizada para /b.
  • /bar;param1/baz;baz;param2 é a versão normalizada para /bar/baz.

Terminações de subdomínios

Uma política definida com request.host.endsWith("google.com") corresponde a sub_domain.google.com e testgoogle.com. Se seu objetivo é limitar a política somente aos subdomínios que terminam com google.com, defina a política como request.host.endsWith(".google.com").