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

Примеры конфигурации Terraform

Следующие примеры конфигураций Terraform решают типичные сценарии управления, настройки и использования сканирования содержимого WAF.

Дополнительные сведения см. в документация Terraform Cloudflare provider ↗.

Если вы используете Cloudflare API, см. Типичные вызовы API.

Включение сканирования содержимого WAF

Используйте cloudflare_content_scanning ресурс, чтобы включить сканирование содержимого для зоны. Например:

resource "cloudflare_content_scanning" "zone_content_scanning_example" {
	zone_id = var.cloudflare_zone_id
	enabled = true
}

Настройка пользовательского выражения сканирования

Используйте cloudflare_content_scanning_expression ресурс, чтобы добавить пользовательское выражение сканирования. Например:

resource "cloudflare_content_scanning_expression" "my_custom_scan_expression" {
  zone_id = var.cloudflare_zone_id
  payload = "lookup_json_string(http.request.body.raw, \"file\")"
}

Подробнее см. в Пользовательские выражения сканирования.

Добавьте пользовательское правило для блокировки вредоносных загрузок

В этом примере добавляется пользовательское правило который блокирует запросы с одним или несколькими объекты содержимого считающихся вредоносными, с помощью одного из поля сканирования содержимого в выражении правила.

Чтобы использовать cf.waf.content_scan.has_malicious_obj поле необходимо включить сканирование содержимого.

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

Хотя бы одно из следующих права доступа токена требуется:

  • Zone WAF Write

Настройте cloudflare_ruleset ↗ ресурс:

resource "cloudflare_ruleset" "zone_custom_firewall_malicious_uploads" {
  zone_id     = var.cloudflare_zone_id
  name        = "Phase entry point ruleset for custom rules in my zone"
  description = ""
  kind        = "zone"
  phase       = "http_request_firewall_custom"

  rules = [{
    ref         = "block_malicious_uploads"
    description = "Block requests uploading malicious content objects"
    expression  = "(cf.waf.content_scan.has_malicious_obj and http.request.uri.path eq \"/upload.php\")"
    action      = "block"
  }]
}
resource "cloudflare_ruleset" "zone_custom_firewall_malicious_uploads" {
  zone_id     = var.cloudflare_zone_id
  name        = "Phase entry point ruleset for custom rules in my zone"
  description = ""
  kind        = "zone"
  phase       = "http_request_firewall_custom"

  rules {
    ref         = "block_malicious_uploads"
    description = "Block requests uploading malicious content objects"
    expression  = "(cf.waf.content_scan.has_malicious_obj and http.request.uri.path eq \"/upload.php\")"
    action      = "block"
  }
}

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

Дополнительные примеры настройки Terraform см. в Настройка пользовательских правил WAF с помощью Terraform.

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

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