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

為提升整體安全性,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-engine、iap_web、compute、organization、folder、backend-services、forwarding-rule 或 cloud-run。

  • SERVICE:服務名稱。如果 resource-type 為 compute 或 app-engine,則可視需要提供。

  • VERSION:版本名稱。這項屬性不適用於 compute,且當 resource-type 為 app-engine 時,可視需要提供。

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

  • --organization=ORGANIZATION

  • --folder=FOLDER

  • --project=PROJECT

API

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

  1. 執行下列指令,準備 iap_settings.json 檔案。視需要更新值。

    {
     "access_settings": {
         "allowed_domains_settings": {
             "enable": true,
             "domains": [
                 "*.example.com",
                 "*.example.net"
             ]
         }
     }
    }
    
  2. 執行 gcloud iap settings get 指令,取得資源名稱。複製輸出內容中的名稱欄位。您會在後續步驟中用到這個名稱。

    gcloud iap settings get --organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION
    
  3. 在下列指令中,將 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 管理員將您的主機名稱加入許可網域清單。