配置速率限制
_以前_版本的速率限制规则现已废弃。 上一版本的费率限制规则界面将保留至 2025 年 7 月 30 日。 在此日期之后,任何来自先前版本的现行规则将不再有效。
速率限制(仅限企业套餐)可防止拒绝服务攻击、暴力登录尝试以及针对应用程序层的其他类型的滥用行为。
选择速率限制规则的类型,自定义规则或保护登录。
创建自定义速率限制规则
在控制台中创建自定义速率限制规则
输入规则名称以帮助您记住规则的功能。 这是可选字段。
在里面流量匹配条件部分中,输入以下信息。
-
选择条件类型。
-
输入您正在限制访问的 URL。
-
选择触发速率限制之前允许的请求数。
-
选择在触发速率限制之前请求可以发生的时间段(以秒为单位)。
时间范围从10秒到86400秒。
高级条件选项允许指定使用哪些 HTTP 方法、头响应和源响应代码以进一步限制匹配条件。
从方法列表菜单中选择一个值(默认为 ANY)。
更新 HTTP 响应标头。 您还可以添加响应头以包含源 Web 服务器返回的头。
如果 HTTP 响应标头下有多个标头,则采用 AND 布尔逻辑。 要排除匹配标题,请使用“不等于”选项。 另外,每个头必须是完全匹配。 但是,区分大小写不适用。
在源响应代码下,输入要匹配的每个 HTTP 响应代码的有效数字值。 要包含两个或更多响应代码,请使用逗号分隔每个值。 例如,如果只想考虑 401 和 403 这两个错误代码,那么可以输入 401, 403
。
配置响应
从列出的操作中进行选择,并指定超时时间段。 在这种情况下,超时是指操作发生的禁止时间段。 60 秒超时表示该操作将持续 60 秒。
操作 | 描述 |
---|---|
阻止 | 在超过阈值时发出 429 错误 |
质询 | 在继续前,用户必须通过 Google reCaptcha 质询。 如果成功,则请求被接受。 否则,请求将被阻止。 |
JS 质询 | 用户必须通过 Javascript Challenge 才能继续。 如果成功,则请求被接受。 否则,请求将被阻止。 |
模拟 | 在活动环境中应用任何其他选项之前,可以使用此选项来测试规则。 |
在里面高级响应部分,指定超出规则阈值时的响应类型。
绕过 URL
旁路功能可让你为一组 URL 创建等同于允许列表或例外的功能。 即使匹配了速率限制规则,也不会对这些 URL 触发任何操作。
保护登录
保护登录创建标准规则,用于保护登录页面免受暴力攻击。 在 5 分钟内尝试登录超过 5 次的客户端将被阻止 15 分钟。
输入规则名称和登录 URL。
使用 API 创建自定义速率限制规则
获取 API 的速率限制规则入口点
所有速率限制规则 API 操作都要求 RULESET_ID
速率限制规则阶段的入口点规则集。 该入口点规则集可能已经存在,如果不存在,则需要创建。
按照以下步骤获取速率限制规则入口点规则集:
-
使用正确的变量设置 API 环境。
-
在变量中存储以下值,以便在 API 命令中使用:
CRN
:服务实例的完整 URL 编码云资源名称 (CRN)。ZONE_ID
:域名 ID。 -
启动所有变量后,获取入口点规则集:
curl -X GET "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/http_ratelimit/entrypoint" \ --header "X-Auth-User-Token: Bearer <API_TOKEN>" \ --header "Content-Type: application/json"
规则集 ID 将出现在成功请求的响应中。 如果上述调用返回 404 Not Found 响应,请使用以下 API 为速率限制规则阶段创建入口点规则集:
curl -x POST https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Zone-level phase entry point",
"kind": "zone",
"description": "Rate-limting rule entry point ruleset.",
"phase": "http_ratelimit"
}'
使用 API 创建速率限制规则
请按照以下步骤使用 API 创建速率限制规则:
-
使用正确的变量设置 API 环境。
-
在变量中存储以下值,以便在 API 命令中使用:
CRN
:服务实例的完整 URL 编码云资源名称 (CRN)。ZONE_ID
:域名 ID。RULESET_ID
:速率限制规则入口点规则集的 ID。 -
启动所有变量后,创建速率限制规则:
curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \ --header "X-Auth-User-Token: Bearer <API_TOKEN>" \ --header "Content-Type: application/json" \ --data '{ "description": "My rate limiting rule", "expression": "(http.request.uri.path matches \"^/api/\")", "action": "block", "ratelimit": { "characteristics": [ "cf.colo.id", "ip.src" ], "period": 60, "requests_per_period": 100, "mitigation_timeout": 600 } }'
使用 API 更新速率限制规则
请按照以下步骤使用 API 更新现有的速率限制规则:
-
使用正确的变量设置 API 环境。
-
在变量中存储以下值,以便在 API 命令中使用:
CRN
:服务实例的完整 URL 编码云资源名称 (CRN)。ZONE_ID
:域名 ID。RULESET_ID
:速率限制规则入口点规则集的 ID。RULE_ID
:要修改的速率限制规则的 ID。 -
启动所有变量后,更新速率限制规则:
curl -X PATCH "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules/$RULE_ID" \ --header "X-Auth-User-Token: Bearer <API_TOKEN>" \ --header "Content-Type: application/json" \ --data '{ "enabled": true, "description": "rate limit IPs for API" }'
使用 API 删除速率限制规则
请按照以下步骤使用 API 删除现有的速率限制规则:
-
使用正确的变量设置 API 环境。
-
在变量中存储以下值,以便在 API 命令中使用:
CRN
:服务实例的完整 URL 编码云资源名称 (CRN)。ZONE_ID
:域名 ID。RULESET_ID
:速率限制规则入口点规则集的 ID。RULE_ID
:要修改的速率限制规则的 ID。 -
启动所有变量后,删除速率限制规则:
curl -X DELETE "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules/$RULE_ID" \ --header "X-Auth-User-Token: Bearer <API_TOKEN>" \ --header "Content-Type: application/json"