INTEGRITY Документация

Создание набора правил 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 в вашем аккаунте, выполните следующие общие шаги:

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

1. Создайте набор правил rate limiting

Следующий пример создаёт набор правил rate limiting с одним правилом rate limiting в фазе rules (массив).

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

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

  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 в существующий набор правил, развёртывающий набор правил rate limiting. По умолчанию правило будет добавлено в конец списка правил, уже имеющихся в наборе.

    Следующий запрос создаёт правило, выполняющее набор правил rate limiting с 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), создайте его с помощью Создание набора правил аккаунта. Включите одно правило в массив rules, которое выполняет набор правил rate limiting для всех входящих запросов зон Enterprise в вашей учётной записи.

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

    Хотя бы одно из следующих разрешения токена обязательно:
    • Account WAF Write
    • Account 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

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

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

Список всех правил набора правил 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.