配置速率限制
_以前_版本的速率限制規則現在已被廢棄。 之前版本的費率限制規則介面將保留至 2025 年 7 月 30 日。 此日期之後,先前版本的任何有效規則將不再運作。
「速率限制」(僅限企業方案)會防範拒絕服務攻擊、強制入侵登入嘗試,以及以應用程式層為目標的其他類型不當行為。
選擇速率限制規則的類型,自訂規則或保護登入。
建立自訂費率限制規則
在主控台中建立自訂速率限制規則
請輸入可協助您記住規則用途的規則名稱。 此欄位是選用欄位,
在裡面流量匹配標準部分,輸入以下資訊。
-
選擇條件類型。
-
輸入您要限制速率的 URL。
-
選擇觸發速率限制之前允許的請求數。
-
選擇觸發速率限制之前可以發生請求的時間段(以秒為單位)。
範圍從 10 到 86,400 秒。
進階準則選項可讓您指定哪些 HTTP 方法、標頭回應及原點回應碼來進一步限制比對準則。
從方法清單選單中選擇一個值(ANY 為預設值)。
更新 HTTP 回應標頭。 您也可以新增回應標頭,以包括原點 Web 伺服器傳回的標頭。
如果 HTTP 回應標頭下有多個標頭,則採用 AND 布林邏輯。 若要排除標頭的匹配,請使用 Not Equal 選項。 此外,每一個標頭都必須完全相符。 但是,不會套用區分大小寫。
在原點回應碼下,鍵入要比對之每一個 HTTP 回應碼的有效數值。 若要包含兩個以上的回應碼,請以逗點區隔每個值。 比方說,如果您只想要計入 401 及 403 這兩個錯誤碼,請輸入 401, 403
。
配置響應
請從列出的動作中選取,然後指定逾時期間。 在此情況下,逾時是指執行該動作的禁止期間。 60 秒逾時表示動作會套用 60 秒。
動作 | 說明 |
---|---|
區塊 | 超出臨界值時發出 429 錯誤 |
盤查 | 使用者必須通過 Google re-Captcha Challenge 才可繼續。 如果成功,則請求被接受。 否則,會封鎖該要求。 |
JS 盤查 | 使用者必須通過 JavaScript Challenge 才能繼續。 如果成功,則請求被接受。 否則,會封鎖該要求。 |
模擬 | 您可以使用此選項,在您的即時環境中套用任何其他選項之前先測試規則。 |
在裡面進階回應部分,指定超出規則閾值時的回應類型。
使用 HTTP status 來驗證速率限制規則和回應的一致性
當您對網址或服務套用速率限制規則時,確認規則是否正確執行是很重要的。 簡單的測試可以確認系統以下列適當的 HTTP 狀態代碼回應:
200 OK
或 為允許的請求404 Not Found
429 Too Many Requests
當超出速率限制時。
若要驗證速率限制規則和回應一致性,請執行下列指令:
for i in {1..N}; do curl -s -o /dev/null -w "%{http_code}\n" <your-target-url>; done
指令選項
N
- 您要傳送的請求數目。
your-target-url
- URL 的服務或端點。
此指令提供每個要求的 HTTP 狀態碼輸出,並允許您觀察達到速率限制臨界值的時間。
繞過 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"