次の Terraform 設定例は、WAF コンテンツスキャンの管理、設定、利用の一般的なシナリオを扱います。
詳細は Terraform Cloudflare プロバイダーのドキュメント ↗ を参照してください。
Cloudflare API を使う場合は、よく使う API 呼び出し を参照してください。
ゾーンでコンテンツスキャンを有効にするには、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\")"
}詳細は カスタムスキャン式 を参照してください。
この例では、ルール式に コンテンツスキャンフィールド のいずれかを使い、悪意があると判定された コンテンツオブジェクト を 1 つ以上含むリクエストをブロックする カスタムルール を追加します。
cf.waf.content_scan.has_malicious_obj フィールドを使うには、コンテンツスキャンを有効 にする必要があります。
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 設定例は、Terraform で WAF カスタムルールを設定する を参照してください。