← Документация WAF / account / rate-limiting-rulesets
Создание набора правил rate limiting через API
Чтобы развернуть правила rate limiting на уровне аккаунта, вы должны создать набор правил rate limiting с одним или несколькими правилами. Используйте Rulesets API для создания и развёртывания наборов правил rate limiting через API.
Подробнее о параметрах правил см. Параметры правил rate limiting.
Каждое правило rate limiting содержит ratelimit объект с конфигурацией rate limiting. См. Параметры правил rate limiting для получения дополнительной информации об этом объекте и его параметрах.
Если вы используете Terraform, см. Настройка правил rate limiting с помощью Terraform.
Порядок действий
Чтобы развернуть набор правил rate limiting в вашем аккаунте, выполните следующие общие шаги:
- Создайте набор правил rate limiting (то есть пользовательский набор правил в фазе
http_ratelimitфазы) с одним или несколькими правилами rate limiting. - Разверните набор правил в фазе набор правил точки входа
http_ratelimitна уровне аккаунта.
1. Создайте набор правил rate limiting
Следующий пример создаёт набор правил rate limiting с одним правилом rate limiting в фазе rules (массив).
Необходимые разрешения API-токена
Хотя бы одно из следующих разрешения токена обязательно:Account WAF WriteAccount Rulesets Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "",
"kind": "custom",
"name": "My rate limiting ruleset",
"rules": [
{
"description": "Rate limit API requests",
"expression": "(starts_with(http.request.uri.path, \"/my-api/\"))",
"ratelimit": {
"characteristics": [
"ip.src",
"cf.colo.id"
],
"requests_to_origin": false,
"requests_per_period": 30,
"period": 60,
"mitigation_timeout": 120
},
"action": "block",
"action_parameters": {
"response": {
"status_code": 429,
"content_type": "application/json",
"content": "{ \"error\": \"Your API requests have been rate limited. Wait a couple of minutes and try again.\" }"
}
},
"enabled": true
}
],
"phase": "http_ratelimit"
}'Доступные характеристики зависят от вашего тарифа Cloudflare и подписок на продукты. См. Доступность для получения дополнительной информации.
Сохраните ID набора правил из ответа для следующего шага.
2. Разверните набор правил rate limiting
Чтобы развернуть набор правил rate limiting, добавьте правило с "action": "execute" в http_ratelimit на уровне аккаунта.
-
Вызовите Получение набора правил точки входа аккаунта (операция), чтобы получить определение набора правил точки входа для фазы
http_ratelimit(фаза). Вам понадобится ID аккаунта для этой задачи.
Хотя бы одно из следующих разрешения токена обязательно:Необходимые разрешения API-токена
Account WAF WriteAccount WAF ReadAccount Rulesets ReadAccount Rulesets Write
Получение набора правил точки входа аккаунтаcurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_ratelimit/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "description": "Account-level phase entry point", "id": "<RULESET_ID>", "kind": "root", "last_updated": "2024-03-16T15:40:08.202335Z", "name": "root", "phase": "http_ratelimit", "rules": [ // ... ], "source": "firewall_managed", "version": "10" }, "success": true, "errors": [], "messages": [] } -
Если набор правил точки входа уже существует (то есть если вы получили
200 OKкод состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила в наборе правил учётной записи операцию, чтобы добавитьexecuteв существующий набор правил, развёртывающий набор правил rate limiting. По умолчанию правило будет добавлено в конец списка правил, уже имеющихся в наборе.Следующий запрос создаёт правило, выполняющее набор правил rate limiting с ID
<RATE_LIMITING_RULESET_ID>для всех зон Enterprise в учётной записи:
Хотя бы одно из следующих разрешения токена обязательно:Необходимые разрешения API-токена
Account WAF WriteAccount Rulesets Write
Создание правила в наборе правил учётной записиcurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/$RULESET_ID/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "description": "Execute rate limiting ruleset", "expression": "(cf.zone.plan eq \"ENT\")", "action": "execute", "action_parameters": { "id": "<RATE_LIMITING_RULESET_ID>" }, "enabled": true }' -
Если набор правил точки входа не существует (то есть если вы получили
404 Not Foundкод состояния на шаге 1), создайте его с помощью Создание набора правил аккаунта. Включите одно правило в массивrules, которое выполняет набор правил rate limiting для всех входящих запросов зон Enterprise в вашей учётной записи.
Хотя бы одно из следующих разрешения токена обязательно:Необходимые разрешения API-токена
Account WAF WriteAccount Rulesets Write
Создание набора правил аккаунтаcurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "description": "", "kind": "root", "name": "Account-level phase entry point", "rules": [ { "action": "execute", "expression": "(cf.zone.plan eq \"ENT\")", "action_parameters": { "id": "<RATE_LIMITING_RULESET_ID>" } } ], "phase": "http_ratelimit" }'
Примеры определений правил rate limiting для API см. в Создание правила rate limiting через API.
Дальнейшие шаги
Используйте различные операции в Rulesets API для работы с только что созданным и развёрнутым набором правил. В следующей таблице перечислены типовые задачи по работе с наборами правил rate limiting на уровне аккаунта:
| Задача | Порядок действий |
|---|---|
| Получить список наборов правил rate limiting | Используйте Список наборов правил учётной записи операцию и найдите наборы правил с Подробнее см. Список существующих наборов правил. |
| Список всех правил набора правил rate limiting | Используйте Получение набора правил аккаунта с ID набора правил rate limiting, чтобы получить список настроенных правил rate limiting и их ID. Подробнее см. Просмотр конкретного набора правил. |
| Обновление правила rate limiting | Используйте Обновление правила в наборе правил учётной записи (операция). Вам потребуется указать ID набора правил rate limiting и ID правила. Подробнее см. Обновление правила в наборе правил. |
| Удаление правила rate limiting | Используйте Удаление правила из набора правил учётной записи (операция). Вам потребуется указать ID набора правил rate limiting и ID правила. Подробнее см. Удаление правила из набора. |
Дополнительные ресурсы
Инструкции по развёртыванию правила rate limiting на уровне зоны через API см. в Создание правила rate limiting через API.
Дополнительную информацию о параметрах, которые можно настроить в правилах rate limiting, см. в Параметры правил rate limiting.