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

Настройка проверок скомпрометированных учётных данных через Terraform

Следующий пример конфигурации Terraform демонстрирует типичный сценарий проверки скомпрометированных учётных данных.

Дополнительную информацию см. в Документация провайдера Cloudflare для Terraform.

Если вы используете Cloudflare API, см. Настройка проверок скомпрометированных учётных данных через API.

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

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

Проверки скомпрометированных учётных данных можно добавлять только к правилам пользовательского набора (то есть набора правил с kind = "custom").

resource "cloudflare_ruleset" "account_firewall_custom_ruleset_exposed_creds" {
  account_id  = "<ACCOUNT_ID>"
  name        = "Custom ruleset checking for exposed credentials"
  description = ""
  kind        = "custom"
  phase       = "http_request_firewall_custom"

  rules {
    ref         = "check_for_exposed_creds_add_header"
    description = "Add header when there is a rule match and exposed credentials are detected"
    expression  = "http.request.method == \"POST\" && http.request.uri == \"/login.php\""
    action      = "rewrite"
    action_parameters {
      headers {
        name      = "Exposed-Credential-Check"
        operation = "set"
        value     = "1"
      }
    }
    exposed_credential_check {
      username_expression = "url_decode(http.request.body.form[\"username\"][0])"
      password_expression = "url_decode(http.request.body.form[\"password\"][0])"
    }
  }
}

Чтобы создать ещё одно правило, добавьте новый rules объект в тот же cloudflare_ruleset (ресурс).

Следующая конфигурация развёртывает пользовательский набор правил. Она определяет зависимость от account_firewall_custom_ruleset_exposed_creds (ресурс) и получает ID созданного пользовательского набора правил:

resource "cloudflare_ruleset" "account_firewall_custom_entrypoint" {
  account_id  = "<ACCOUNT_ID>"
  name        = "Account-level entry point ruleset for the http_request_firewall_custom phase deploying a custom ruleset checking for exposed credentials"
  description = ""
  kind        = "root"
  phase       = "http_request_firewall_custom"

  depends_on = [cloudflare_ruleset.account_firewall_custom_ruleset_exposed_creds]

  rules {
    ref         = "deploy_custom_ruleset_example_com"
    description = "Deploy custom ruleset for example.com"
    expression  = "(cf.zone.name eq \"example.com\")"
    action      = "execute"
    action_parameters {
      id = cloudflare_ruleset.account_firewall_custom_ruleset_exposed_creds.id
    }
  }
}

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

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