限制資源存取權,僅限特定網域

為提升整體安全性,IAP 預設會拒絕存取沒有相符伺服器名稱指示 (SNI) 的要求。IAP 也會檢查負載平衡器憑證的 SNI。這樣一來,IAP 就能限制網址重新導向至惡意網域。IAP 允許的網域功能可為受 IAP 保護的資源提供額外的安全層。資源擁有者或 IAP 管理員可以設定允許的網域功能,將受 IAP 保護的資源存取權限制在特定網域內。

您也可以在下列情況中設定允許的 IAP 網域:

  • 瀏覽器或中繼 Proxy 強制連線集區:在這種情況下,您會收到 HTTP 回應 429 和錯誤碼 51。如要解決這個問題,IAP 管理員可以更新允許的網域清單,加入您的主機名稱。
  • 提供的主機名稱與伺服器上的 SSL 憑證不符:在這種情況下,您會收到錯誤代碼 52。如要解決這個問題,IAP 管理員可以更新允許的網域清單,加入您的主機名稱。

設定允許的網域

您可以使用 gcloud 或 API 設定允許的網域。如要設定允許的網域,請使用下列欄位:

  • enable:布林值,開啟或關閉允許的網域功能。
  • Domains:字串。允許的網域清單。網域可包含萬用字元前置字元,例如 *.example.com.。網域名稱不得直接在公開字尾或頂層網域中包含萬用字元。例如:*.com*.co.in

詳情請參閱「IapSettings」。

如要設定 IAP 允許的網域,請完成下列步驟:

控制台

  1. 前往 IAP 頁面。
    前往 Identity-Aware Proxy
  2. 選取專案,然後選取要啟用允許網域功能的資源。
  3. 開啟資源的「設定」。在「允許的網域」下方,選取「啟用允許的網域」
  4. 指定允許的網域清單,然後按一下「儲存」

gcloud

以下是指定允許網域的指令範例。

詳情請參閱「gcloud iap settings set」。

執行下列指令:

gcloud iap settings set SETTING_FILE --folder=FOLDER --organization=ORGANIZATION --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION

其中 SETTING_FILE 為:

accessSettings:
  allowed_domains_settings:
    enable: true
    domains: ["*.example.com", "*.example.net"]

更改下列內容:

  • FOLDER:資料夾 ID。
  • ORGANIZATION:組織 ID。
  • PROJECT:專案 ID。
  • RESOURCE_TYPE:IAP 資源類型。必須是 app-engineiap_webcomputeorganizationfolderbackend-servicesforwarding-rulecloud-run
  • SERVICE:服務名稱。如果 resource-typecomputeapp-engine,則此屬性為選用屬性。
  • VERSION:版本名稱。這不適用於 compute,且當 resource-typeapp-engine 時,此為選用欄位。

您必須指定下列至少一個旗標,定義設定的範圍:

  • --organization=ORGANIZATION
  • --folder=FOLDER
  • --project=PROJECT

API

如要設定允許的網域,請完成下列步驟。如要進一步瞭解如何使用 API 設定允許的網域,請參閱 IapSettings

  1. 執行下列指令來準備 iap_settings.json 檔案。視需要更新值。
 {
     "access_settings":{
         "allowed_domains_settings":{
             "enable": true
             "domains": [
                 "*.example.com",
                 "*.exampe.net"
             ]
         }
     }
 }
  1. 執行 gcloud iap settings get 指令,取得資源名稱。從輸出內容複製名稱欄位。後續步驟會用到這個名稱。
gcloud iap settings get --organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION
  1. 將下列指令中的 RESOURCE_NAME 替換為上一步的名稱。系統將更新IapSettings
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d @iap_settings.json \
"https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.allowedDomainsSettings.enable,iapSettings.accessSettings.allowedDomainsSettings.domains"

疑難排解

允許的網域存取權問題
如果收到錯誤代碼 53,請要求 IAP 管理員將主機名稱新增至允許的網域清單。