本文說明如何自訂 Identity-Aware Proxy (IAP) 設定。您可以透過這些設定控制下列行為:
* 與 Cloud Service Mesh 和 Google Kubernetes Engine 上的 Istio 相容。 * 處理 CORS 預檢要求。* 使用者驗證方式。* 存取遭拒時,向使用者顯示的錯誤頁面。管理設定
您可以使用 Google Cloud 控制台、IAP API 或 Google Cloud CLI,查看及更新負載平衡器和 App Engine 應用程式的 IAP 設定。如要更新所有資源 (包括資料夾、專案和組織) 的 IAP 設定,請使用 Google Cloud CLI 或 API。
如要在 IAP 中管理設定,請按照下列步驟操作:
控制台
如要使用 Google Cloud 控制台查看及修改設定,請按照下列步驟操作:
- 前往「Identity-Aware Proxy」頁面。
前往「Identity-Aware Proxy」頁面 - 在「應用程式」分頁中找到資源。
- 開啟「更多動作」選單 ,然後按一下「設定」。
- 按一下 [儲存]。
gcloud
如要使用 Google Cloud CLI 取得及修改設定,請使用 gcloud iap settings get 和 gcloud iap settings set 指令,如下所示:
- 如要取得專案、資料夾或組織的設定,請使用下列指令。如要使用 Google Cloud 控制台或 gcloud CLI 調整 IAP 設定,請參閱「自訂 IAP」。
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
- 如要取得專案中特定 IAP 資源類型的設定,請按照下列步驟操作:
gcloud iap settings get --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
- 如要設定專案、資料夾、組織或專案下的 IAP 資源類型,請建立 JSON 或 YAML 檔案,並在其中加入所需的新設定,然後指定檔案路徑。詳情請參閱
gcloud iap settings set主題:
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
API
如要使用 IAP API 取得及修改設定,請使用 GET 或 PATCH HTTP 動詞,向 Google Cloud中的所選資源端點提出要求。結合 :iapSettings 路徑後置字串、資源路徑 (詳情請參閱「資源和權限」) 和適當的 HTTP 方法,即可取得或修改設定。詳情請參閱 getIapSettings() 和 updateIapSettings():
- 如要取得或設定專案中特定 IAP 資源類型的設定,請按照下列步驟操作:
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
如要取得或設定專案設定,請按照下列步驟操作:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
如要取得或設定資料夾的設定,請按照下列步驟操作:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
如要取得或設定組織的設定,請按照下列步驟操作:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings
IAP 設定角色和權限
設定角色
您可以在組織、資料夾和專案層級授予 IAP 設定管理員 (roles/iap.settingsAdmin) 角色。如要查看 IAP 設定管理員角色授予的權限,請參閱「設定權限」。
如要進一步瞭解 IAP 的角色和權限,請參閱「Identity-Aware Proxy 角色和權限」。
下列基本角色提供這些權限:
專案檢視者 (
roles/viewer) 角色會授予所有getSettings權限。編輯者 (
roles/editor) 角色會授予表格中說明的所有權限。
設定權限
下表列出讀取及修改各資源類型設定所需的 IAM 權限。如需不同資源類型的說明,請參閱「資源和權限」。
| 資源 | 查看設定的權限 | 修改設定的權限 |
|---|---|---|
| 組織 | iap.organizations.getSettings |
iap.organizations.updateSettings |
| 資料夾 | iap.folders.getSettings |
iap.folders.updateSettings |
| 專案 | iap.projects.getSettings |
iap.projects.updateSettings |
| 所有 Web 服務 | iap.web.getSettings |
iap.web.updateSettings |
| 網頁類型 | iap.webTypes.getSettings |
iap.webTypes.updateSettings |
| 網路服務 | iap.webServices.getSettings |
iap.webServices.updateSettings |
| 網路服務版本 | iap.webServiceVersions.getSettings |
iap.webServiceVersions.updateSettings |
| 網頁類型 | iap.webTypes.getSettings |
iap.webTypes.updateSettings |
如要進一步瞭解如何授予 IAM 角色,請參閱「授予、變更及撤銷存取權」。
自訂 IAP 設定
IAP 提供下列自訂設定:
| 欄位 | 說明 |
|---|---|
access_settings.cors_settings.allow_http_options |
控制 HTTP OPTIONS (CORS 預檢) |
access_settings.oauth_settings.login_hint |
簡化 Google Workspace 網域使用者的登入程序 |
application_settings.access_denied_page_settings.access_denied_page_uri |
存取遭拒時顯示自訂錯誤頁面 |
application_settings.csm_settings.rctoken_aud |
核發 Cloud Service Mesh 和 Istio RCToken |
access_settings.gcip_settings |
使用 Identity Platform 進行驗證 |
access_settings.ReauthSettings |
設定重新驗證政策。詳情請參閱「設定重新驗證」。 |
您可以在專案層級或任何較低的 IAP 資源層級套用設定。
您可以設定網頁式 IAP 資源,但無法設定透過 IAP for TCP 轉送存取的資源。
以access_settings.cors_settings.allow_http_options 為例,您可以按照下列方式調整自訂設定:
YAML
access_settings:
cors_settings:
allow_http_options: "false"JSON
{
"access_settings": {
"cors_settings": {
"allow_http_options": "false"
}
}
}以下各節將進一步說明各項設定。
允許 HTTP OPTIONS 要求 (CORS 預檢)
| 欄位 | 預設值 |
|---|---|
access_settings.cors_settings.allow_http_options |
false |
網路的同源政策會禁止瀏覽器在網站之間傳送 AJAX 要求。根據預設,如果網頁來自某個來源,網頁上的 JavaScript 無法使用 AJAX,將要求傳送至由 IAP 保護且託管於其他來源的應用程式。
在某些情況下,瀏覽器會自動嘗試要求,但如果回應不含 Access-Control-Allow-Origin 標頭,則會捨棄回應內容。如要允許這類要求,請在應用程式的回應中加入這個標頭。
在其他情況下,瀏覽器會先傳送 CORS 預檢要求 (一種 HTTP OPTIONS 要求),再傳送跨源要求。如果應用程式未傳回適當的預檢回應 (包含必要的 Access-Control-* 回應標頭),瀏覽器就會封鎖要求並顯示錯誤。此外,由於預檢要求不會與任何驗證憑證 (例如 IAP 工作階段 Cookie) 一起傳送,因此 IAP 也會回應錯誤。
如要允許這些要求,請按照下列步驟操作:
在應用程式中加入程式碼,回應
OPTIONS要求。將
access_settings.cors_settings.allow_http_options設定變更為true,讓 IAP 將OPTIONS要求傳遞至應用程式。
使用 Google Workspace 網域進行驗證
| 欄位 | 預設值 |
|---|---|
access_settings.oauth_settings.login_hint |
"" |
如果只有特定 Google Workspace 網域的成員會使用您的應用程式,您可以設定 IAP 來最佳化驗證流程。這麼做有幾個好處:
如果使用者登入多個帳戶 (例如工作帳戶和個人帳戶),系統會自動選取工作帳戶,而不會顯示帳戶選取 UI。
如果使用者未登入 Google 帳戶,登入 UI 會自動填入電子郵件地址的網域部分 (也就是說,使用者只需要輸入
alice,而不是alice@example.com)。如果 Google Workspace 網域已設為使用第三方單一登入 (SSO) 服務供應商,系統會顯示自訂登入頁面,而非 Google 的登入頁面。
如要啟用這項行為,請將 access_settings.oauth_settings.login_hint 的值設為您的 Google Workspace 網域名稱 (例如 example.com)。網域擁有權必須經過驗證:您無法使用自己擁有的任意網際網路 DNS 網域。(已新增為 Google Workspace 主網域或次要網域的網域已通過驗證,因此可以在這裡使用)。
如需驗證網域外的使用者,可以使用程式輔助驗證。
詳情請參閱 OpenID Connect 說明文件。
設定自訂的「存取遭拒」錯誤頁面
注意:這項功能僅適用於付費企業安全訂閱方案。如有興趣,歡迎報名。| 欄位 | 預設值 |
|---|---|
application_settings.access_denied_page_settings.access_denied_page_uri |
"" |
您可以在這個欄位中設定網址,在政策拒絕存取時,將使用者重新導向至自訂頁面,而非預設的 IAP 錯誤頁面。
您也可以使用這項功能嵌入疑難排解網址。詳情請參閱「為自訂『存取遭拒』錯誤頁面啟用疑難排解網址」。核發 Cloud Service Mesh 和 Istio RCToken 網格 ID
| 欄位 | 預設值 |
|---|---|
application_settings.csm_settings.rctoken_aud |
"" |
如果您在 GKE 上使用 Istio,可以將 IAP 設為產生與 Istio 相容的 RCToken。如果這個欄位設為非空白字串,IAP 會新增含有 RCToken 的 Ingress-Authorization HTTP 標頭。aud 憑證附加資訊會設為這個欄位的值。
使用 Identity Platform 進行驗證
| 欄位 | 預設值 |
|---|---|
access_settings.gcip_settings |
null |
根據預設,IAP 會使用 Google 的內建身分系統。如果設定這個欄位,IAP 會改用 Identity Platform 驗證使用者。
使用 Terraform 自訂 IAP
如要使用 Terraform 設定 IAP,請參閱 google_iap_settings。
瞭解資源階層中的設定沿用機制
IAP 一律會評估特定網路服務版本的要求。這類資源位於資源階層結構的最底層,如下所示:
- Organization
- Folder
- Project
- All web services
- Web service type
- Web service
- Web service version
為決定要套用至網路服務版本的設定,IAP 會先採用一組預設值,然後由上而下逐層檢查。系統會套用找到的設定,因此較低層級設定的值會覆寫較高層級設定的值。
舉例來說,如果 access_settings.cors_settings.allow_http_options 在專案層級設為 true,但在服務層級設為 false,則有效值會是 false。
如要進一步瞭解 IAP 資源階層,請參閱「資源和權限」。