使用 Google Cloud Armor 設定頻率限制
本文說明如何對 Cloud Service Mesh 用戶端套用公平分享速率限制,協助您管理服務的公平消耗量,並防止惡意或行為不當的用戶端造成服務過載。
設定程序需要您建立 Cloud Armor 安全性政策和端點政策。如果您不熟悉 Cloud Armor 安全性政策,建議先閱讀安全性政策總覽。
速率限制的運作方式
頻率限制會限制服務在指定時間間隔內可從用戶端接收的要求數量,藉此提升服務可用性,並在用戶端之間公平分配可用容量。您可以設定要求門檻、間隔和動作,Cloud Armor 會將這些設定套用至超過速率限制門檻的傳入流量。如果是 Cloud Service Mesh 速率限制,Cloud Armor 會使用 CLOUD_ARMOR_INTERNAL_SERVICE
安全性政策類型,而安全性政策規則會使用 fairshare
動作。
每項 Cloud Armor 安全性政策都包含一或多個規則。每項規則都包含比對條件和動作。當要求符合比對條件時,Cloud Armor 會對要求套用設定的動作。設定速率限制時,請建立安全性政策規則,並使用先前提及的其中一項速率限制動作,以及符合您用途的任何比對條件 (包括使用 --src-ip-ranges "*"
旗標比對所有傳入要求)。系統會依優先順序評估政策中的規則。數字優先順序最低的規則,邏輯優先順序最高,因此會優先評估。Cloud Armor 會執行伺服器端速率限制,也就是由伺服器強制執行速率限制,而非用戶端裝置。
速率限制動作有額外欄位,可用於微調速率限制門檻。所有速率限制規則都會共用下列欄位:
rate_limit_threshold_count
:Cloud Armor 必須套用速率限制的每個使用者設定時間間隔內,要求數量上限。interval_sec
:rate_limit_threshold_count
的時間間隔,以秒為單位。exceed_action
:對超過速率限制門檻的要求執行的動作。conform_action
:對未超過速率限制門檻的要求執行的動作。
使用 Cloud Service Mesh 進行速率限制
本節將概略說明使用 Cloud Service Mesh 設定速率限制的步驟。
首先,您要建立端點政策,並確保 EndpointMatcher
選取 Cloud Service Mesh 執行個體,以便對輸入流量強制執行速率限制。EndpointMatcher
會使用端點標籤來識別要附加的執行個體。
接著,您要建立類型為 CLOUD_ARMOR_INTERNAL_SERVICE
的 Cloud Armor 安全性政策。這類安全政策只能執行 fairshare
動作。在這項政策中,您會建立預設規則,並使用 fairshare
動作,對不符合優先順序較高規則的所有流量套用公平分享速率限制。您可以新增優先順序較高的規則,針對不同類型的流量套用不同的速率限制。舉例來說,您可以為特定 IP 位址範圍設定較低或較高的速率限制。
最後,建立一或多項速率限制規則後,請將安全性政策附加至端點政策。附加安全性政策後,Cloud Armor 會對所有符合規則比對條件的傳入流量套用伺服器端速率限制,並連線至EndpointMatcher
選取的服務網格執行個體。
Cloud Service Mesh 會為所有執行個體設定全域速率限制。也就是說,系統會匯總所有伺服器執行個體的總流量,以決定何時強制執行速率限制。凡是傳送要求給這類服務的用戶端,都必須遵守相同的強制執行門檻和政策。也就是說,當匯總流量率超過門檻時,系統會捨棄部分要求。
如要使用 Cloud Service Mesh 設定頻率限制,請參閱「使用 Envoy 設定 Google Cloud Armor 頻率限制」。
限制
使用 Cloud Armor 設定頻率限制時,請考量下列限制:
- Cloud Armor 配額會限制可建立的自訂規則數量。建議您先檢查配額,再建立超過 20 條自訂規則。
- 每個端點政策資源都必須參照不同的安全政策。如果現有端點政策已參照安全性政策,您就無法將該政策附加至新的端點政策。
- 具有
fairshare
動作的安全政策僅限於ALL
速率限制鍵。 - 使用
fairshare
動作部署安全性政策時,Cloud Armor 會在強制執行規則期間忽略preview
欄位。 - 如果您使用 TCP 流量路徑,就無法設定 Cloud Armor 安全性政策。
此外,類型為 CLOUD_ARMOR_INTERNAL_SERVICE
的 Cloud Armor 安全性政策只能使用下列自訂運算式語言 (CEL) 屬性:
request.headers
request.method
request.path
request.scheme
request.query
如要進一步瞭解 CEL 屬性,請參閱「設定自訂規則語言屬性」。