授權政策總覽

應用程式負載平衡器的轉送規則會套用授權政策 (AuthzPolicy),定義規則來指定傳入流量的來源,以及允許或限制該來源執行的作業。此外,授權政策會列出規則的適用條件,並指定動作來允許、拒絕或進一步評估流量。

授權政策可讓您為應用程式負載平衡器的傳入流量建立存取權控管檢查。通過這些檢查的要求會轉送至後端服務。如果要求未通過這些檢查,系統會終止要求並傳回未經授權的回應。

您可以在所有應用程式負載平衡器的轉送規則中設定授權政策,這些負載平衡器的負載平衡機制為 EXTERNAL_MANAGEDINTERNAL_MANAGED。下列應用程式負載平衡器支援授權政策:

  • 全域外部應用程式負載平衡器
  • 區域性外部應用程式負載平衡器

  • 區域性內部應用程式負載平衡器

  • 跨區域內部應用程式負載平衡器

在應用程式負載平衡器中,系統會在評估路徑擴充功能、網路安全性政策 (由 Google Cloud Armor 評估)、跨來源資源共用 (CORS) 政策和 Identity-Aware Proxy (IAP) 政策「之後」,但「之前」執行流量管理動作,叫用授權政策。

如要進一步瞭解授權政策在要求處理路徑中何時會遭到叫用,請參閱「負載平衡資料路徑中的可擴充點」。

如要為透過 Cloud Service Mesh 部署的服務使用授權政策,請參閱「使用 Envoy 設定服務安全性」。

授權政策規則

授權政策由 HTTP 規則清單組成,可與傳入要求比對。

如果授權政策的動作為 ALLOWDENY,HTTP 規則 (AuthzRule) 會定義條件,判斷是否允許流量通過負載平衡器。至少須有一項 HTTP 規則。

對於具有 CUSTOM 動作的授權政策,HTTP 規則 (AuthzRule) 會定義相關條件,判斷是否要將流量委派給自訂供應商進行授權。HTTP 規則為選用,但自訂供應商為必填。

如果至少有一項 HTTP 規則符合要求,或政策中未定義任何 HTTP 規則,就會發生政策比對。

授權政策 HTTP 規則包含下列欄位:

  • from:指定規則允許的用戶端身分。 身分可從相互傳輸層安全標準 (TLS) 連線中的用戶端憑證衍生而來,也可以是與用戶端虛擬機器 (VM) 執行個體相關聯的環境身分,例如來自服務帳戶或安全標記。
  • to:指定規則允許的操作,例如可存取的網址或允許的 HTTP 方法。
  • when:指定必須符合的其他限制。您可以使用一般運算語言 (CEL) 運算式定義限制。

授權政策動作

評估要求時,授權政策會指定要對要求套用的動作 (AuthzAction)。授權政策至少須包含一項動作,可以是下列任一項:

  • ALLOW:如果要求符合 ALLOW 政策中指定的任何規則,則允許要求傳遞至後端。如果存在 ALLOW 政策,但沒有相符項目,系統就會拒絕要求。換句話說,如果沒有任何設定的授權政策與要求相符 (且具有 ALLOW 動作),系統就會拒絕要求。在 Cloud Logging 中,這項動作會記錄為 denied_as_no_allow_policies_matched_request

    如要套用 ALLOW 動作,您至少需要一項 HTTP 規則。

  • DENY:如果要求符合 DENY 政策中指定的任何規則,就會拒絕要求。如果存在 DENY 政策,但沒有相符項目,系統會允許要求。換句話說,如果沒有任何設定的授權政策與要求相符,且動作為 DENY,系統就會允許要求。在 Cloud Logging 中,這項動作會記錄為 allowed_as_no_deny_policies_matched_request

    如要套用 DENY 動作,您至少需要一項 HTTP 規則。

  • CUSTOM:將授權決策委派給自訂授權供應商,例如 IAP 或服務擴充功能。詳情請參閱「使用授權政策委派授權決策」。

    如果 CUSTOM 政策已設定 HTTP 規則,要求必須符合 HTTP 規則,才能叫用自訂供應商。不過,如果未定義任何 HTTP 規則,授權政策一律會將授權決策委派給自訂授權供應商。詳情請參閱以下範例,其中未定義任何 HTTP 規則,授權政策則將授權決策委派給 IAP:

    建立授權政策並啟用 IAP

授權政策評估順序

授權政策支援 CUSTOMDENYALLOW 政策,可進行存取權控管。如果單一資源有多項授權政策,系統會先評估 CUSTOM 政策,接著是 DENY 政策,最後是 ALLOW 政策。評估結果取決於下列規則:

  1. 如果要求符合 CUSTOM 政策,系統會使用自訂授權提供者評估 CUSTOM 政策,如果提供者拒絕要求,系統就會拒絕要求。即使已設定 DENYALLOW 政策,系統也不會評估。

  2. 如有任何DENY政策與要求相符,系統會拒絕要求。系統不會評估任何 ALLOW 政策,即使已設定也一樣。

  3. 如果沒有 ALLOW 政策,系統會允許要求。

  4. 如果要求符合任何 ALLOW 政策,請允許要求。

  5. 如果存在 ALLOW 政策,但沒有相符項目,系統就會拒絕要求。換句話說,如果沒有任何已設定的 AuthzPolicies 具有 ALLOW 動作與要求相符,系統預設會拒絕要求。

使用授權政策委派授權決策

對於無法使用授權政策表示的複雜授權決策,請將授權決策委派給自訂授權供應商,例如 Identity-Aware Proxy (IAP),或使用服務擴充功能建立自己的授權擴充功能。如果您想透過 IAP 使用內部授權引擎或第三方識別資訊提供者,這項功能就非常實用。

  • IAP:設定 IAP,控管應用程式負載平衡器轉送規則後方應用程式的存取權。IAP 會驗證使用者身分和情境,判斷是否授予存取權。此外,它還能驗證 Identity and Access Management (IAM) 服務帳戶權杖,並評估 IAM 政策,保護從 Application Load Balancer 公開的後端 bucket 存取權。詳情請參閱「將授權委派給 IAP 和 IAM」。

    在下列情況中,您可能會選擇將驗證作業委派給 IAP 和 IAM:

    • 使用 IAM 管理權限。
    • 實作情境感知存取權。
    • 如果網頁應用程式需要互動式驗證,請使用瀏覽器型驗證。
  • 服務擴充功能:將授權決策委派給在 Google Cloud VM 執行個體或內部部署系統上執行的自訂授權引擎。這項功能可讓您靈活地設定複雜的授權政策,以因應內建政策無法涵蓋的情況。詳情請參閱「設定授權擴充功能」。

以主體為準的授權政策

如要以高精細度識別流量來源,您可以根據從用戶端憑證衍生的身分,設定授權政策。這個方法需要在負載平衡器上啟用前端 mTLS,並使用下列憑證屬性做為主體選取器進行識別:

  • 用戶端憑證 URI SAN (CLIENT_CERT_URI_SAN)
  • 用戶端憑證 DNS 名稱 SAN (CLIENT_CERT_DNS_NAME_SAN)
  • 用戶端憑證通用名稱 (CLIENT_CERT_COMMON_NAME)

如果未指定任何主體選取器進行識別,系統會使用 CLIENT_CERT_URI_SAN 做為預設主體選取器。也就是說,系統在做出授權決策時,會評估用戶端憑證的 URI SAN。

如要使用主體授權,必須符合下列條件:

  • 必須啟用前端 mTLS。如果未啟用前端 mTLS,用戶端就不會提供憑證。因此,授權政策中任何以主體為準的規則,都找不到可供評估的憑證資訊。舉例來說,檢查 CLIENT_CERT_URI_SAN 的規則會看到空值。

  • 必須有有效的用戶端憑證。即使啟用 mTLS,如果連線建立時缺少或使用無效憑證,系統也不會使用用戶端憑證進行授權。如果 mTLS 用戶端驗證模式設為寬容模式 ALLOW_INVALID_OR_MISSING_CLIENT_CERT,就會發生這種情況。同樣地,授權政策中任何以主體為準的規則,都找不到可供評估的憑證資訊。舉例來說,檢查 CLIENT_CERT_URI_SAN 的規則會看到空值。

屬性大小限制的影響

授權決策會受到用戶端憑證屬性大小的影響。如果屬性超出大小限制,且政策已設定為驗證該特定屬性,要求就會遭到拒絕

在下列情況下,系統可能會拒絕你的要求:

  • 這項政策會根據 CLIENT_CERT_URI_SAN 進行驗證,且憑證的 URI SAN 超過大小上限。
  • 政策會根據 CLIENT_CERT_DNS_NAME_SAN 進行驗證,且憑證的 DNS 名稱 SAN 超過大小限制。
  • 這項政策會根據 CLIENT_CERT_COMMON_NAME 進行驗證,而憑證的主體 (包含一般名稱) 超出大小限制。

如果憑證的屬性超過大小限制,但由政策的主體選取器明確驗證,系統仍會根據設定的主體規則評估要求。舉例來說,如果政策設定為只驗證 CLIENT_CERT_DNS_NAME_SAN,則來自 URI SAN 過大的用戶端要求不會因此遭到拒絕。政策會根據 DNS 名稱 SAN 評估要求。

根據服務帳戶或標記的授權政策

您可以使用服務帳戶標記等屬性,識別內部應用程式負載平衡器的流量來源。

如果是內部應用程式負載平衡器,您可以根據服務帳戶或附加至 Google Cloud 資源的標記套用授權政策。凡是源自這些 Google Cloud 資源的流量,只要與特定服務帳戶或標記連結,都可以允許、拒絕或委派給外部服務。

下表列出支援使用服務帳戶和標記的來源資源和不同虛擬私有雲 (VPC) 架構。

來源 服務帳戶支援 代碼支援
VM
GKE 節點
GKE 容器 * *
Cloud Run 的直接 VPC *
無伺服器虛擬私有雲存取連接器
Cloud VPN * *
Cloud Interconnect 內部部署 * *
應用程式負載平衡器
網路負載平衡器

* Google Cloud不支援。

來源 IP 位址是專屬位址,可做為替代位址。

虛擬私人雲端 虛擬私有雲架構 支援
虛擬私有雲內部 跨專案 (共用 VPC)
虛擬私有雲內部 跨區域
跨虛擬私有雲 跨對等互連連結 (對等互連虛擬私有雲)
跨虛擬私有雲 跨 Private Service Connect
跨虛擬私有雲 跨 Network Connectivity Center 輪輻

如要進一步瞭解如何根據服務帳戶和附加至 Google Cloud VM 資源的標記設定授權政策,請參閱根據服務帳戶或標記設定授權政策

配額

如要瞭解授權政策的配額,請參閱授權政策的配額與限制

定價

預先發布期間,授權政策不會產生費用。不過,使用 Google Cloud 負載平衡器時,您需要支付網路費用。如需價格資訊,請參閱「定價」。

後續步驟