以下 Terraform 配置示例介绍了用于管理、配置和使用 WAF 内容扫描的常见场景。
更多信息请参阅 Terraform Cloudflare provider 文档 ↗。
如果您使用的是 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\")"
}更多信息请参阅 自定义扫描表达式。
本示例添加了一条 自定义规则,通过在规则表达式中使用 内容扫描字段 来阻止包含一个或多个被视为恶意的 内容对象(content objects) 的请求。
要使用 cf.waf.content_scan.has_malicious_obj 字段,您必须 启用 WAF 内容扫描。
配置 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 自定义规则。