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 60 000 毫秒(1 分钟)
Service 考虑每个 DR REST API 服务名称的请求。在 DR REST API 中,有三个服务名称:srmvrconfigure。“srm v1”和“srm v2”具有相同的服务名称“srm”。 serviceRateLimitQuota 1000
serviceRateLimitWindow 60 000 毫秒(1 分钟)
Session 考虑每个会话的请求。 sessionRateLimitQuota 50
sessionRateLimitWindow 60000 毫秒(1 分钟)
n/a 定期清理过时的请求速率限制器数据结构,以减少运行时内存指纹。值为 0(零)表示根本不执行任何清理。 rateLimitLogPurgeInterval 7 200 000 毫秒 (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,并采取相应措施。
    • 在所需方向更改客户端的请求强度。
    • 在所需方向更新速率限制配置。