本頁面說明主機名稱和路徑的 身分與存取權管理 (IAM) 條件。
您可以使用要求網址的主機名稱和路徑,保護 Identity-Aware Proxy (IAP) 資源。舉例來說,request.path.startsWith
IAM 條件只有在網址路徑以 /admin
開頭時,才會授予存取權給「特殊存取權限」群組中的員工。
如要進一步瞭解主機名稱和路徑條件的使用方式,請參閱「要求屬性」一文。
字串正規化
網址有主機名稱和路徑。例如,網址 https://sheets.google.com/create?query=param
的主機名稱為 sheets.google.com
,路徑為 /create
。
後端解譯主機名稱和路徑的方式有很多種。為免產生混淆,IAP 檢查政策時會將主機名稱和路徑字串正規化。
當要求使用非正規路徑,IAP 會進行兩項政策檢查。如果非正規化路徑通過政策檢查,IAP 會將路徑正規化並開始進行第二項政策檢查。非正規化和正規化後的路徑都通過政策檢查,系統才會授予存取權。
舉例來說,如果要求含有路徑 /internal;some_param/admin
,IAP 首先會對非正規化路徑 (/internal
) 進行其中一項政策檢查。如果檢查通過,IAP 會對正規化路徑 (/internal/admin
) 進行第二項政策檢查。
主機名稱
主機名稱正規化程序包括:
- 移除結尾的句點 (.)
- 將字元轉換成小寫字元
- 轉換成 ASCII
包含非 ASCII 字元的網域名稱會進一步使用 Punycode 編碼來正規化。您必須使用 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")
。