Документация Запланировать пилот

Создание набора правил ограничения скорости через API

Чтобы развернуть правила ограничения скорости на уровне аккаунта, необходимо создать набор правил ограничения скорости с одним или несколькими правилами. Используйте Rulesets API чтобы создавать и разворачивать наборы правил ограничения скорости запросов через API.

Дополнительную информацию о параметрах правил см. в Параметры ограничения скорости.

Каждое правило ограничения скорости содержит ratelimit объект с конфигурацией ограничения скорости. См. Параметры ограничения скорости подробнее об этом объекте и его параметрах.

Если вы используете Terraform, см. Настройка правил ограничения скорости с помощью Terraform.

Процедура

Чтобы развернуть набор правил ограничения скорости в своём аккаунте, выполните следующие общие действия:

  1. Создайте набор правил ограничения скорости (то есть пользовательский набор правил в фазе http_ratelimit фаза) с одним или несколькими правилами ограничения частоты запросов.
  2. Разверните набор правил в ruleset точки входа из http_ratelimit фаза на уровне аккаунта.

1. Создайте набор правил ограничения скорости

Следующий пример создаёт набор правил ограничения скорости с одним правилом ограничения скорости в rules массив.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
Создайте account ruleset
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. Разверните набор правил ограничения скорости

Чтобы развернуть набор правил ограничения скорости, добавьте правило с "action": "execute" к http_ratelimit входной набор правил фазы на уровне аккаунта.

  1. Вызовите Получить входной набор правил аккаунта операцию для получения определения входного набора правил для http_ratelimit фаза. Вам понадобится ID аккаунта для этой задачи.

    Необходимые разрешения API-токена

    Хотя бы одно из следующих права доступа токена требуется:
    • Account WAF Write
    • Account WAF Read
    • Account Rulesets Read
    • Account 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": []
    }
  2. Если входной набор правил уже существует (то есть если вы получили 200 OK код состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила набора правил аккаунта операцию для добавления execute правило в существующий набор правил, разворачивающий набор правил ограничения частоты запросов. По умолчанию правило добавляется в конец списка правил, уже имеющихся в наборе.

    Следующий запрос создаёт правило, которое выполняет набор правил ограничения скорости с ID <RATE_LIMITING_RULESET_ID> для всех зон с тарифом Enterprise в аккаунте:

    Необходимые разрешения API-токена

    Хотя бы одно из следующих права доступа токена требуется:
    • Account WAF Write
    • Account 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
    	}'
  3. Если входной набор правил не существует (то есть если вы получили 404 Not Found код состояния на шаге 1), создайте его с помощью Создайте account ruleset операцию. Включите одно правило в rules массив, который выполняет набор правил ограничения скорости для всех входящих запросов зон Enterprise в вашем аккаунте.

    Необходимые разрешения API-токена

    Хотя бы одно из следующих права доступа токена требуется:
    • Account WAF Write
    • Account Rulesets Write
    Создайте account ruleset
    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"
    	}'

Примеры определений правил ограничения скорости для API см. в Создание правила ограничения скорости через API.


Следующие шаги

Используйте различные операции в Rulesets API для работы с только что созданным и развёрнутым набором правил. В следующей таблице приведён список распространённых задач при работе с наборами правил ограничения частоты запросов на уровне аккаунта:

Задача Процедура
Получить список наборов правил ограничения скорости

Используйте Список наборов правил аккаунта операцию и найдите наборы правил с "kind": "custom" и "phase": "http_ratelimit". Ответ будет включать идентификаторы наборов правил.

Подробнее см. в Список существующих наборов правил.

Список всех правил в наборе правил ограничения скорости

Используйте Получить набор правил аккаунта операцию с ID набора правил ограничения скорости, чтобы получить список настроенных правил ограничения скорости и их ID.

Подробнее см. в Просмотреть конкретный набор правил.

Обновление правила ограничения скорости

Используйте Обновление правила набора правил аккаунта операцию. Вам потребуется указать ID набора правил ограничения скорости и ID правила.

Подробнее см. в Обновление правила в наборе правил.

Удаление правила ограничения скорости

Используйте Удаление правила набора правил аккаунта операцию. Вам потребуется указать ID набора правил ограничения скорости и ID правила.

Подробнее см. в Удалите правило в наборе правил.

Дополнительные ресурсы

Инструкции по развёртыванию правила ограничения скорости на уровне зоны через API см. в Создание правила ограничения скорости через API.

Дополнительную информацию о различных параметрах ограничения скорости, которые можно настроить в правилах ограничения скорости, см. в Параметры ограничения скорости.

Запросите бесплатный пилот

Запланировать пилот