跳转到内容
搜索文档

Terraform 配置示例

最后更新 查看 MarkdownAgent 设置

以下 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\")"
}

更多信息请参阅 自定义扫描表达式

添加自定义规则以阻止恶意文件上传

本示例添加了一条 自定义规则,通过在规则表达式中使用 内容扫描字段 来阻止包含一个或多个被视为恶意的 内容对象(content objects) 的请求。

要使用 cf.waf.content_scan.has_malicious_obj 字段,您必须 启用 WAF 内容扫描

需要的 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 配置示例,请参阅 使用 Terraform 配置 WAF 自定义规则

这篇文档对您有帮助吗?