本文將說明如何自訂 Identity-Aware Proxy (IAP) 設定。您可以透過這些設定控管行為,包括:
- 與 Google Kubernetes Engine 上的 GKE Enterprise 和 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.organizations.getSettings |
iap.organizations.updateSettings |
資料夾 | iap.folders.getSettings |
iap.folders.updateSettings |
專案 | iap.projects.getSettings |
iap.projects.updateSettings |
所有網路服務 | 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 設定管理員 (roles/iap.settingsAdmin
) 角色會授予所有這些權限,專案編輯者 (roles/editor
) 也是如此。專案檢視者 (roles/viewer
) 會授予所有 getSettings
權限。
如要進一步瞭解如何授予 IAM 角色,請參閱「授予、變更及撤銷存取權」。
自訂 IAP 設定
IAP 提供下列自訂設定:
欄位 | 說明 |
---|---|
access_settings.cors_settings.allow_http_options |
控制 HTTP OPTIONS (CORS 預檢) |
access_settings.oauth_settings.login_hint |
簡化 G Suite 網域使用者的登入程序 |
application_settings.access_denied_page_settings.access_denied_page_uri |
在存取權遭拒時顯示自訂錯誤頁面 |
application_settings.csm_settings.rctoken_aud |
發出 GKE Enterprise 和 Istio RCToken |
access_settings.gcip_settings |
使用 Identity Platform 進行驗證 |
access_settings.ReauthSettings |
設定重新驗證政策。詳情請參閱「設定重新驗證」 |
您可以在專案層級或任何較低的 IAP 資源層級套用設定。
您可以為網路式 IAP 資源設定設定,但無法為透過 用於 TCP 轉送的 IAP 存取的資源設定。
以 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 網域已設定為使用第三方單一登入服務供應商,系統會顯示自訂登入頁面,而非 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 錯誤頁面。
您也可以使用這項功能嵌入疑難排解網址。詳情請參閱「為自訂的「存取權遭拒」錯誤頁面啟用疑難排解網址」。
發出 GKE Enterprise 和 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 驗證使用者。
瞭解資源階層中的設定沿用機制
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 資源階層,請參閱「資源和權限」。