使用主机名和路径条件

本页面介绍主机名和路径身份和访问权限管理 (IAM) 条件

您可以使用请求网址的主机名和路径来保护 Identity-Aware Proxy (IAP) 资源。例如,如果网址路径以 /admin 开头,则 request.path.startsWith IAM 条件只能用于向特权访问组中的员工授予访问权限。

如需详细了解如何使用主机名和路径条件,请参阅请求属性

字符串规范化

网址具有主机名和路径。例如,网址 https://sheets.google.com/create?query=param 的主机名为 sheets.google.com,路径为 /create

后端可以以不同方式解读主机名和路径。 为了消除歧义,IAP 在检查政策时会将主机名和路径字符串规范化。

如果请求具有非规范化路径,则 IAP 会执行两次政策检查。如果非规范化路径通过政策检查,则 IAP 会将路径规范化,然后执行第二次政策检查。如果非规范化路径和规范化路径都通过政策检查,则授予访问权限。

例如,如果请求具有路径 /internal;some_param/admin,则 IAP 首先对非规范化路径 (/internal) 执行政策检查。如果该检查通过,则 IAP 会对规范化路径 (/internal/admin) 执行第二次政策检查。

主机名

主机名规范化涉及以下内容:

  • 移除结尾的点
  • 将字符转为小写
  • 转换为 ASCII

使用 Punycode 进一步规范化包含非 ASCII 字符的主机名。您需要使用 Punycode 对主机名字符串进行规范化,才能进行匹配。

要使用 Punycode 对主机名字符串进行规范化,请使用转换器,例如 Punycoder

下面是一些规范化主机名的示例:

  • FOO.com 已规范化为 foo.com
  • café.fr 已规范化为 xn--caf-dma.fr

路径

路径规范化涉及以下内容:

  • 移除路径参数
  • 解析相对于其绝对对等项的路径

路径参数包含从 ; 到下一个 / 或路径末尾之间的所有字符。

包含以 ..; 开头的路径部分的请求将被视为无效。例如,/..;bar//bar/..;/ 会返回 HTTP 400: Bad Request 错误。

下面是一些规范化路径的示例:

  • /internal;some_param/admin 已规范化为 /internal/admin
  • /a/../b 已规范化为 /b
  • /bar;param1/baz;baz;param2 已规范化为 /bar/baz

子网域结尾

使用 request.host.endsWith("google.com") 设置的政策与 sub_domain.google.comtestgoogle.com 都匹配。如果您的目标是将政策仅限为以 google.com 结尾的子网域,请将政策设置为 request.host.endsWith(".google.com")