本页面介绍主机名和路径身份和访问权限管理 (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.com
和 testgoogle.com
都匹配。如果您的目标是将政策仅限为以 google.com
结尾的子网域,请将政策设置为 request.host.endsWith(".google.com")
。