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

WAF for SaaS

Web Application Firewall (WAF) позволяет создавать дополнительные меры безопасности средствами Cloudflare. Как поставщик SaaS вы можете привязывать к своим пользовательским именам хоста собственные правила, правила ограничения частоты запросов и управляемые правила. Это даёт больше контроля для защиты доменов от вредоносного трафика.

Как поставщик SaaS вы можете захотеть применять разные меры безопасности к разным пользовательским именам хоста. WAF for SaaS позволяет создавать несколько конфигураций WAF и применять их к разным наборам пользовательских имён хоста. Такая дополнительная гибкость и безопасность обеспечивают оптимальную защиту для всех доменов ваших конечных клиентов.


Предварительные требования

Прежде чем использовать WAF for SaaS, нужно создать пользовательское имя хоста. См. Начало работы с Cloudflare for SaaS если вы ещё этого не сделали.

Вы также можете создать пользовательское имя хоста через API:

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

Хотя бы одно из следующих права доступа токена требуется:
Create Custom Hostname
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"hostname": "<CUSTOM_HOSTNAME>",
		"ssl": {
				"wildcard": false
		}
	}'

1. Свяжите пользовательские метаданные с пользовательским именем хоста

Чтобы применить WAF к своему пользовательскому имени хоста, нужно связать домен клиента с конфигурацией WAF, которую вы хотите к нему привязать. Продукт Cloudflare, пользовательские метаданные позволяет сделать это через API.

  1. Найдите ID своей зоны, доступный в дашборде Cloudflare.

  2. Найдите свой Authentication Key на API-токены ↗ странице в разделе Global API Key.

  3. Найдите ID своего пользовательского имени хоста, выполнив GET вызов в API:

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

Хотя бы одно из следующих права доступа токена требуется:
Получить список пользовательских имён хостов
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
  1. Спланируйте свой пользовательские метаданные. Всё это полностью настраивается. В примере ниже мы выбрали тег "security_level" которому мы ожидаем присвоить одно из трёх значений (low, medium и high).
  1. Выполните вызов API в приведённом ниже формате, используя свой адрес электронной почты Cloudflare и ID, полученные выше:

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

Хотя бы одно из следующих права доступа токена требуется:
Edit Custom Hostname
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames/$CUSTOM_HOSTNAME_ID" \
	--request PATCH \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"custom_metadata": {
				"customer_id": "12345",
				"security_level": "low"
		}
	}'

Так вашему пользовательскому имени хоста присваиваются пользовательские метаданные, благодаря чему с его ID связывается тег безопасности.

2. Запустите продукты безопасности на основе тегов

  1. Найдите поле пользовательских метаданных в Ruleset Engine, где выполняется WAF. С его помощью можно запускать разные конфигурации таких продуктов, как Пользовательские правила WAF, правила ограничения частоты запросов, а также Transform Rules.

  2. Создайте правила либо через панель управления или через API. Пример правила ограничения частоты запросов, соответствующего "security_level" низкий, показано ниже в виде вызова API.

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

Хотя бы одно из следующих права доступа токена требуется:
Обновление набора правил точки входа зоны
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_ratelimit/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"action": "block",
						"ratelimit": {
								"characteristics": [
										"cf.colo.id",
										"ip.src"
								],
								"period": 10,
								"requests_per_period": 2,
								"mitigation_timeout": 60
						},
						"expression": "lookup_json_string(cf.hostname.metadata, \"security_level\") eq \"low\" and http.request.uri contains \"login\""
				}
		]
	}'

Создание правил через дашборд:

  1. На панели управления Cloudflare перейдите к разделу WAF страницу.

    Перейдите в WAF ↗
  2. Следуйте инструкциям в дашборде для собственных правил, правил ограничения частоты запросов или управляемых правил, в зависимости от вашей цели по безопасности.

  3. Как только правило станет активным, вы увидите его на соответствующей вкладке (custom rules, rate limiting или managed rules).