DR REST API 速率限制器是一種機制,用於管理 API 資源耗盡和暴力密碼破解攻擊帶來的風險。

Site Recovery Manager 8.8 及更新版本以及 vSphere Replication 8.8 及更新版本的 DR REST API 中提供速率限制器。DR REST API 速率限制器在安全性和效能之間實現了一種平衡。
表 1. DR REST API 要求速率限制層
說明 組態 預設值
IP address 考慮每個 IP 位址的要求數。 ipRateLimitQuota 100
ipRateLimitWindow 60000 毫秒 (1 分鐘)
Service 考慮每個 DR REST API 服務名稱的要求數。在 DR REST API 中,有三個服務名稱:srmvr configure。「srm v1」和「srm v2」具有相同的服務名稱「srm」。 serviceRateLimitQuota 1000
serviceRateLimitWindow 60000 毫秒 (1 分鐘)
Session 考慮每個工作階段的要求數。 sessionRateLimitQuota 50
sessionRateLimitWindow 60000 毫秒 (1 分鐘)
n/a 定期清理過時的要求速率限制器資料結構,以減少執行階段記憶體指紋。值為 0 (零) 表示根本不執行任何清理。 rateLimitLogPurgeInterval 7200000 毫秒 (2 小時)

DR REST API 速率限制器由三個層組成,這些層呈鏈式運作,根據層的準則對傳入要求進行速率限制。如果符合層的準則,將立即傳回要求回應,從而略過層鏈的其餘部分。DR REST API 速率限制器層鏈按該特定順序依次為 IP 位址、服務、工作階段。

可以透過在 dr-rest-api.properties 檔案中新增或更新指定內容的值來變更 DR REST API 速率限制器組態。此檔案位於 /opt/vmware/dr-rest/lib/ 資料夾中。如果 DR REST API dr-rest-api.properties 組態檔中未明確定義速率限制器內容,則速率限制器將使用預設值。若要預先定義組態值,請新增相應的組態 (如果缺少),並設定所需值。更新後的值將在新的速率限制時段開始時生效。

dr-rest-api.properties 檔案範例

...
ipRateLimitQuota=100
ipRateLimitWindow=60000
serviceRateLimitQuota=1000
serviceRateLimitWindow=60000
sessionRateLimitQuota=50
sessionRateLimitWindow=60000
rateLimitLogPurgeInterval=0
...

HTTP 回應

每個 DR REST API 要求回應都具有以下標頭。
  • RateLimit-Limit - 時段內用戶端要求的伺服器配額。
  • RateLimit-Remaining - 目前時段的剩餘配額。
  • RateLimit-Reset - 目前時段的剩餘時間,以毫秒為單位指定。
小心: 當 HTTP 要求受速率限制時,回應錯誤代碼為 429 Too Many Requests,標頭 RateLimit-Remaining 為 0 (零)。DR REST API 回應包含來自處理用戶端要求的最後一個速率限制層的速率限制標頭。

設定最佳速率限制組態的最佳做法

設定最佳速率限制組態需要考慮各種因素。

  • 從速率限制器組態的預設值開始。
    • ipRateLimitQuotaipRateLimitWindowserviceRateLimitQuotaserviceRateLimitWindowsessionRateLimitQuotasessionRateLimitWindow
    • rateLimitLogPurgeInterval
  • 接聽錯誤代碼為 429 Too Many Requests 的要求回應,並採取相應措施。
    • 等待下一個速率限制時段,然後重複受速率限制的要求。
    • 降低用戶端的要求強度。
    • 更新速率限制組態 - 增加相關組態 RateLimitQuota 和/或減少相關組態 RateLimitWindow
  • 分析回應標頭 RateLimit-LimitRateLimit-RemainingRateLimit-Reset,並採取相應措施。
    • 變更所需方向的用戶端要求強度。
    • 更新所需方向的速率限制組態。