閱讀英文

共用方式為


Azure Web PubSub 服務的應用程式防火牆 (預覽)

應用程式防火牆提供對分散式系統中用戶端連線的複雜控制。 在深入探索其功能和設定之前,讓我們來釐清應用程式防火牆不會執行的動作:

  1. 它不會取代驗證。 防火牆會在用戶端連線驗證層後方運作。
  2. 這與網路層訪問控制無關。

應用程式防火牆有何用途?

應用程式防火牆是由各種規則清單所組成。 目前,有兩個規則清單稱為 用戶端連線計數規則用戶端流量控制規則。 未來的更新將支援更多規則清單,以控制連線存留期等層面。

此指導方針分為三個部分:

  1. 不同的應用程式防火牆規則的簡介。
  2. 在 Web PubSub 服務端使用入口網站或 Bicep 設定規則的指示。
  3. 在伺服器端設定權杖的步驟。

必要條件

用戶端連線計數規則

用戶端連線計數規則會限制同時用戶端連線。 當用戶端嘗試建立新的連線時,會循序檢查規則。 如果違反任何規則,則會拒絕連線並顯示狀態碼 429。

ThrottleByUserIdRule

此規則會限制使用者的同時連線。 例如,如果使用者開啟多個瀏覽器索引標籤,或使用不同的裝置登入,您可以使用此規則來限制該使用者的同時連線數目。

注意

  • UserId 必須存在於存取權杖中,此規則才能運作。 請參閱設定存取權杖

ThrottleByJwtSignatureRule

此規則會限制相同權杖的同時連線,以防止惡意使用者重複使用權杖來建立無限連線,這可能會耗盡連線配額。

注意

  • 根據預設,不保證 SDK 所產生的權杖每次都會不同。 雖然每個權杖都包含時間戳記,但如果在幾秒內產生大量權杖,則此時間戳記可能會相同。 若要避免完全相同的權杖,請將隨機宣告插入至權杖宣告中。 請參閱設定存取權杖

警告

  • 避免使用過於積極的 maxCount。 用戶端連線可能會在未完成 TCP 交握的情況下關閉。 SignalR 服務無法立即偵測到那些「半關閉」的連線。 連線會被視為作用中,直到活動訊號失敗為止。 因此,積極的節流策略可能會意外地對用戶端進行節流。 較順暢的方法是讓連線計數保留一些緩衝區,例如:加倍 maxCount

用戶端流量控制規則

用戶端流量控制規則會限制用戶端連線的輸入輸送量。 當客戶端嘗試傳送訊息時,會循序檢查規則。 在每個 匯總視窗中,將會匯總訊息大小,以檢查輸入 訊息的最大值。 如果違反任何規則,連線就會中斷連線。

TrafficThrottleByUserIdRule

此規則會限制使用者的輸入輸送量。

TrafficThrottleByJwtSignatureRule

此規則會限制每個令牌的輸入輸送量。

設定應用程式防火牆

若要使用應用程式防火牆,請瀏覽至 Azure 入口網站上 Web PubSub [應用程式防火牆] 刀鋒視窗,然後按一下 [新增] 以新增規則。

在入口網站上新增 Azure Web PubSub 應用程式防火牆規則的螢幕擷取畫面。

設定存取權杖

只有在存取權杖包含對應的宣告時,應用程式防火牆規則才會生效。 如果連線沒有對應的宣告,則會略過規則。 *userId" 和角色目前在 SDK 中支援宣告。

以下是在存取權杖中新增 userId 並插入唯一預留位置的範例:

cs
// The GUID role wont have any effect. But it ensures this token's uniqueness when using rule ThrottleByJwtSignatureRule.
var url = service.GetClientAccessUri((userId: "user1" , roles: new string[] {  "webpubsub.joinLeaveGroup.group1", Guid.NewGuid().ToString()});

如需詳細資訊,請參閱用戶端交涉