你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Microsoft.Network FrontDoorWebApplicationFirewallPolicies

Bicep 资源定义

可以使用目标操作部署 FrontDoorWebApplicationFirewallPolicies 资源类型:

有关每个 API 版本中已更改属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.Network/FrontDoorWebApplicationFirewallPolicies 资源,请将以下 Bicep 添加到模板。

resource symbolicname 'Microsoft.Network/FrontDoorWebApplicationFirewallPolicies@2024-02-01' = {
  etag: 'string'
  location: 'string'
  name: 'string'
  properties: {
    customRules: {
      rules: [
        {
          action: 'string'
          enabledState: 'string'
          groupBy: [
            {
              variableName: 'string'
            }
          ]
          matchConditions: [
            {
              matchValue: [
                'string'
              ]
              matchVariable: 'string'
              negateCondition: bool
              operator: 'string'
              selector: 'string'
              transforms: [
                'string'
              ]
            }
          ]
          name: 'string'
          priority: int
          rateLimitDurationInMinutes: int
          rateLimitThreshold: int
          ruleType: 'string'
        }
      ]
    }
    managedRules: {
      managedRuleSets: [
        {
          exclusions: [
            {
              matchVariable: 'string'
              selector: 'string'
              selectorMatchOperator: 'string'
            }
          ]
          ruleGroupOverrides: [
            {
              exclusions: [
                {
                  matchVariable: 'string'
                  selector: 'string'
                  selectorMatchOperator: 'string'
                }
              ]
              ruleGroupName: 'string'
              rules: [
                {
                  action: 'string'
                  enabledState: 'string'
                  exclusions: [
                    {
                      matchVariable: 'string'
                      selector: 'string'
                      selectorMatchOperator: 'string'
                    }
                  ]
                  ruleId: 'string'
                }
              ]
            }
          ]
          ruleSetAction: 'string'
          ruleSetType: 'string'
          ruleSetVersion: 'string'
        }
      ]
    }
    policySettings: {
      customBlockResponseBody: 'string'
      customBlockResponseStatusCode: int
      enabledState: 'string'
      javascriptChallengeExpirationInMinutes: int
      logScrubbing: {
        scrubbingRules: [
          {
            matchVariable: 'string'
            selector: 'string'
            selectorMatchOperator: 'string'
            state: 'string'
          }
        ]
        state: 'string'
      }
      mode: 'string'
      redirectUrl: 'string'
      requestBodyCheck: 'string'
    }
  }
  sku: {
    name: 'string'
  }
  tags: {
    {customized property}: 'string'
  }
}

属性值

CustomRule

名字 描述 价值
行动 描述规则匹配时要应用的操作。 “允许”
“AnomalyScoring”
“Block”
“JSChallenge”
“Log”
“重定向”(必需)
enabledState 描述自定义规则是否处于启用或禁用状态。 如果未指定,则默认为 Enabled。 “Disabled”
“Enabled”
groupBy 描述用于对速率限制请求进行分组的变量列表 GroupByVariable[]
matchConditions 匹配条件列表。 MatchCondition[] (必需)
名字 描述规则的名称。 字符串

约束:
最大长度 =
优先权 描述规则的优先级。 在具有较高值的规则之前,将评估具有较低值的规则。 int (必需)
rateLimitDurationInMinutes 重置速率限制计数的时间范围。 默认值为 1 分钟。 int

约束:
最小值 = 0
最大值 = 5
rateLimitThreshold 时间范围内每个客户端允许的请求数。 int

约束:
最小值 = 0
ruleType 描述规则的类型。 “MatchRule”
“RateLimitRule”(必需)

CustomRuleList

名字 描述 价值
规则 规则列表 CustomRule[]

GroupByVariable

名字 描述 价值
variableName 介绍组依据的受支持变量 “GeoLocation”
“None”
“SocketAddr”(必需)

ManagedRuleExclusion

名字 描述 价值
matchVariable 要排除的变量类型。 “QueryStringArgNames”
“RequestBodyJsonArgNames”
'RequestBodyPostArgNames'
“RequestCookieNames”
“RequestHeaderNames”(必需)
选择器 此排除项应用于集合中的元素的选择器值。 string (必需)
selectorMatchOperator 在指定此排除项应用于的集合中的元素时,要应用于选择器的比较运算符。 “Contains”
“EndsWith”
“Equals”
“EqualsAny”
“StartsWith”(必需)

ManagedRuleGroupOverride

名字 描述 价值
排除 描述应用于组中所有规则的排除项。 ManagedRuleExclusion[]
ruleGroupName 描述要重写的托管规则组。 string (必需)
规则 将禁用的规则列表。 如果未指定任何规则,将禁用组中的所有规则。 ManagedRuleOverride[]

ManagedRuleOverride

名字 描述 价值
行动 描述规则匹配时要应用的替代操作。 “允许”
“AnomalyScoring”
“Block”
“JSChallenge”
“Log”
“Redirect”
enabledState 描述托管规则是否处于启用或禁用状态。 如果未指定,则默认为 Disabled。 “Disabled”
“Enabled”
排除 描述应用于此特定规则的排除项。 ManagedRuleExclusion[]
ruleId 托管规则的标识符。 string (必需)

ManagedRuleSet

名字 描述 价值
排除 描述应用于集中所有规则的排除项。 ManagedRuleExclusion[]
ruleGroupOverrides 定义要应用于规则集的规则组替代。 ManagedRuleGroupOverride[]
ruleSetAction 定义规则集操作。 “Block”
“Log”
“Redirect”
ruleSetType 定义要使用的规则集类型。 string (必需)
ruleSetVersion 定义要使用的规则集的版本。 string (必需)

ManagedRuleSetList

名字 描述 价值
managedRuleSets 规则集列表。 ManagedRuleSet[]

MatchCondition

名字 描述 价值
matchValue 可能的匹配值列表。 string[] (必需)
matchVariable 要与之进行比较的请求变量。 “Cookies”
“PostArgs”
“QueryString”
“RemoteAddr”
“RequestBody”
“RequestHeader”
“RequestMethod”
“RequestUri”
“SocketAddr”(必需)
negateCondition 描述是否应否定此条件的结果。 bool
算子 要用于与变量值匹配的比较类型。 “Any”
“BeginsWith”
“Contains”
“EndsWith”
“Equal”
“GeoMatch”
“GreaterThan”
“GreaterThanOrEqual”
“IPMatch”
“LessThan”
“LessThanOrEqual”
“正则表达式”(必需)
选择器 与 QueryString、PostArgs、RequestHeader 或 Cookies 变量中的特定键匹配。 默认值为 null。 字符串
变换 转换列表。 包含任一项的字符串数组:
“小写”
“RemoveNulls”
“Trim”
“大写”
“UrlDecode”
“UrlEncode”

Microsoft.Network/FrontDoorWebApplicationFirewallPolicies

名字 描述 价值
etag 获取在更新资源时更改的唯一只读字符串。 字符串
位置 资源位置。 字符串
名字 资源名称 字符串

约束:
最大长度 = (必需)
性能 Web 应用程序防火墙策略的属性。 WebApplicationFirewallPolicyProperties
sku Web 应用程序防火墙策略的定价层。 如果未指定,则默认为Classic_AzureFrontDoor。 Sku
标签 资源标记 标记名称和值的字典。 请参阅模板 中的 标记

PolicySettings

名字 描述 价值
customBlockResponseBody 如果操作类型为块,客户可以替代响应正文。 必须在 base64 编码中指定正文。 字符串

约束:
Pattern = ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$
customBlockResponseStatusCode 如果操作类型为块,客户可以替代响应状态代码。 int
enabledState 描述策略是否处于启用或禁用状态。 如果未指定,则默认为 Enabled。 “Disabled”
“Enabled”
javascriptChallengeExpirationInMinutes 定义 JavaScript 质询 Cookie 有效期(以分钟为单位)。 此设置仅适用于Premium_AzureFrontDoor。 值必须是介于 5 和 1440 之间的整数,默认值为 30。 int

约束:
最小值 = 5
最大值 = 1440
logScrubbing 定义在 Web 应用程序防火墙日志中清理敏感字段的规则。 PolicySettingsLogScrubbing
模式 描述它在策略级别是否处于检测模式或预防模式。 “检测”
“预防”
redirectUrl 如果操作类型为重定向,此字段表示客户端的重定向 URL。 字符串
requestBodyCheck 描述策略托管规则是否会检查请求正文内容。 “Disabled”
“Enabled”

PolicySettingsLogScrubbing

名字 描述 价值
scrubbingRules 应用于 Web 应用程序防火墙日志的日志清理规则列表。 WebApplicationFirewallScrubbingRules[]
state 日志清理配置的状态。默认值为“已启用”。 “Disabled”
“Enabled”

ResourceTags

名字 描述 价值

Sku

名字 描述 价值
名字 定价层的名称。 “Classic_AzureFrontDoor”
“Premium_AzureFrontDoor”
“Standard_AzureFrontDoor”

WebApplicationFirewallPolicyProperties

名字 描述 价值
customRules 描述策略中的自定义规则。 CustomRuleList
managedRules 描述策略中的托管规则。 ManagedRuleSetList
policySettings 描述策略的设置。 PolicySettings

WebApplicationFirewallScrubbingRules

名字 描述 价值
matchVariable 要从日志中清理的变量。 “QueryStringArgNames”
“RequestBodyJsonArgNames”
'RequestBodyPostArgNames'
“RequestCookieNames”
“RequestHeaderNames”
'RequestIPAddress'
“RequestUri”(必需)
选择器 matchVariable 是集合时,运算符用于指定此规则应用于的集合中的哪些元素。 字符串
selectorMatchOperator 如果 matchVariable 是集合,请对选择器进行操作,以指定此规则应用于的集合中的哪些元素。 “Equals”
“EqualsAny”(必需)
state 定义日志清理规则的状态。 默认值处于启用状态。 “Disabled”
“Enabled”

快速入门示例

以下快速入门示例部署此资源类型。

Bicep 文件 描述
为 Azure Front Door 配置 WAF 托管 defaultRuleSet 此模板配置适用于 Azure Front Door 的 WAF 托管 defaultRuleSet
使用 blob 源和专用链接 Front Door Premium 此模板创建 Front Door Premium 和 Azure 存储 Blob 容器,并使用 Front Door 的专用终结点将流量发送到存储帐户。
使用 WAF 和Microsoft托管的规则集 Front Door Premium 此模板创建一个 Front Door Premium,其中包括具有Microsoft托管的默认和机器人保护规则集的 Web 应用程序防火墙。
使用异地筛选 Front Door 标准版/高级版 此模板创建 Front Door 标准版/高级版,包括具有地理筛选规则的 Web 应用程序防火墙。
Front Door 标准版/高级版,速率限制为 此模板创建 Front Door 标准版/高级版,包括具有速率限制规则的 Web 应用程序防火墙。
使用 WAF 和自定义规则 Front Door 标准版/高级版 此模板创建 Front Door 标准版/高级版,包括具有自定义规则的 Web 应用程序防火墙。
使用 blob 上传 的 blob 源 Front Door 此模板创建一个 Front Door,其中包含源、路由和 ruleSet,以及一个包含 Blob 容器的 Azure 存储帐户。 Front Door 在上传文件时向存储帐户发送流量。
使用 WAF、域和日志将 FrontDoor CDN EventHub 此模板创建新的 Azure FrontDoor cdn 配置文件。 使用自定义和托管规则、cdn 路由、源和组与 WAF 和路由关联创建 WAF,配置自定义域,创建事件中心和诊断设置,以便使用事件中心发送 CDN 访问日志。
受 Azure Frontdoor 保护的 Function App 此模板允许部署受 Azure Frontdoor 高级版保护并发布的 Azure 高级函数。 Azure Frontdoor 和 Azure Functions 之间的连接受 Azure 专用链接的保护。

ARM 模板资源定义

可以使用目标操作部署 FrontDoorWebApplicationFirewallPolicies 资源类型:

有关每个 API 版本中已更改属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.Network/FrontDoorWebApplicationFirewallPolicies 资源,请将以下 JSON 添加到模板。

{
  "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies",
  "apiVersion": "2024-02-01",
  "name": "string",
  "etag": "string",
  "location": "string",
  "properties": {
    "customRules": {
      "rules": [
        {
          "action": "string",
          "enabledState": "string",
          "groupBy": [
            {
              "variableName": "string"
            }
          ],
          "matchConditions": [
            {
              "matchValue": [ "string" ],
              "matchVariable": "string",
              "negateCondition": "bool",
              "operator": "string",
              "selector": "string",
              "transforms": [ "string" ]
            }
          ],
          "name": "string",
          "priority": "int",
          "rateLimitDurationInMinutes": "int",
          "rateLimitThreshold": "int",
          "ruleType": "string"
        }
      ]
    },
    "managedRules": {
      "managedRuleSets": [
        {
          "exclusions": [
            {
              "matchVariable": "string",
              "selector": "string",
              "selectorMatchOperator": "string"
            }
          ],
          "ruleGroupOverrides": [
            {
              "exclusions": [
                {
                  "matchVariable": "string",
                  "selector": "string",
                  "selectorMatchOperator": "string"
                }
              ],
              "ruleGroupName": "string",
              "rules": [
                {
                  "action": "string",
                  "enabledState": "string",
                  "exclusions": [
                    {
                      "matchVariable": "string",
                      "selector": "string",
                      "selectorMatchOperator": "string"
                    }
                  ],
                  "ruleId": "string"
                }
              ]
            }
          ],
          "ruleSetAction": "string",
          "ruleSetType": "string",
          "ruleSetVersion": "string"
        }
      ]
    },
    "policySettings": {
      "customBlockResponseBody": "string",
      "customBlockResponseStatusCode": "int",
      "enabledState": "string",
      "javascriptChallengeExpirationInMinutes": "int",
      "logScrubbing": {
        "scrubbingRules": [
          {
            "matchVariable": "string",
            "selector": "string",
            "selectorMatchOperator": "string",
            "state": "string"
          }
        ],
        "state": "string"
      },
      "mode": "string",
      "redirectUrl": "string",
      "requestBodyCheck": "string"
    }
  },
  "sku": {
    "name": "string"
  },
  "tags": {
    "{customized property}": "string"
  }
}

属性值

CustomRule

名字 描述 价值
行动 描述规则匹配时要应用的操作。 “允许”
“AnomalyScoring”
“Block”
“JSChallenge”
“Log”
“重定向”(必需)
enabledState 描述自定义规则是否处于启用或禁用状态。 如果未指定,则默认为 Enabled。 “Disabled”
“Enabled”
groupBy 描述用于对速率限制请求进行分组的变量列表 GroupByVariable[]
matchConditions 匹配条件列表。 MatchCondition[] (必需)
名字 描述规则的名称。 字符串

约束:
最大长度 =
优先权 描述规则的优先级。 在具有较高值的规则之前,将评估具有较低值的规则。 int (必需)
rateLimitDurationInMinutes 重置速率限制计数的时间范围。 默认值为 1 分钟。 int

约束:
最小值 = 0
最大值 = 5
rateLimitThreshold 时间范围内每个客户端允许的请求数。 int

约束:
最小值 = 0
ruleType 描述规则的类型。 “MatchRule”
“RateLimitRule”(必需)

CustomRuleList

名字 描述 价值
规则 规则列表 CustomRule[]

GroupByVariable

名字 描述 价值
variableName 介绍组依据的受支持变量 “GeoLocation”
“None”
“SocketAddr”(必需)

ManagedRuleExclusion

名字 描述 价值
matchVariable 要排除的变量类型。 “QueryStringArgNames”
“RequestBodyJsonArgNames”
'RequestBodyPostArgNames'
“RequestCookieNames”
“RequestHeaderNames”(必需)
选择器 此排除项应用于集合中的元素的选择器值。 string (必需)
selectorMatchOperator 在指定此排除项应用于的集合中的元素时,要应用于选择器的比较运算符。 “Contains”
“EndsWith”
“Equals”
“EqualsAny”
“StartsWith”(必需)

ManagedRuleGroupOverride

名字 描述 价值
排除 描述应用于组中所有规则的排除项。 ManagedRuleExclusion[]
ruleGroupName 描述要重写的托管规则组。 string (必需)
规则 将禁用的规则列表。 如果未指定任何规则,将禁用组中的所有规则。 ManagedRuleOverride[]

ManagedRuleOverride

名字 描述 价值
行动 描述规则匹配时要应用的替代操作。 “允许”
“AnomalyScoring”
“Block”
“JSChallenge”
“Log”
“Redirect”
enabledState 描述托管规则是否处于启用或禁用状态。 如果未指定,则默认为 Disabled。 “Disabled”
“Enabled”
排除 描述应用于此特定规则的排除项。 ManagedRuleExclusion[]
ruleId 托管规则的标识符。 string (必需)

ManagedRuleSet

名字 描述 价值
排除 描述应用于集中所有规则的排除项。 ManagedRuleExclusion[]
ruleGroupOverrides 定义要应用于规则集的规则组替代。 ManagedRuleGroupOverride[]
ruleSetAction 定义规则集操作。 “Block”
“Log”
“Redirect”
ruleSetType 定义要使用的规则集类型。 string (必需)
ruleSetVersion 定义要使用的规则集的版本。 string (必需)

ManagedRuleSetList

名字 描述 价值
managedRuleSets 规则集列表。 ManagedRuleSet[]

MatchCondition

名字 描述 价值
matchValue 可能的匹配值列表。 string[] (必需)
matchVariable 要与之进行比较的请求变量。 “Cookies”
“PostArgs”
“QueryString”
“RemoteAddr”
“RequestBody”
“RequestHeader”
“RequestMethod”
“RequestUri”
“SocketAddr”(必需)
negateCondition 描述是否应否定此条件的结果。 bool
算子 要用于与变量值匹配的比较类型。 “Any”
“BeginsWith”
“Contains”
“EndsWith”
“Equal”
“GeoMatch”
“GreaterThan”
“GreaterThanOrEqual”
“IPMatch”
“LessThan”
“LessThanOrEqual”
“正则表达式”(必需)
选择器 与 QueryString、PostArgs、RequestHeader 或 Cookies 变量中的特定键匹配。 默认值为 null。 字符串
变换 转换列表。 包含任一项的字符串数组:
“小写”
“RemoveNulls”
“Trim”
“大写”
“UrlDecode”
“UrlEncode”

Microsoft.Network/FrontDoorWebApplicationFirewallPolicies

名字 描述 价值
apiVersion API 版本 '2024-02-01'
etag 获取在更新资源时更改的唯一只读字符串。 字符串
位置 资源位置。 字符串
名字 资源名称 字符串

约束:
最大长度 = (必需)
性能 Web 应用程序防火墙策略的属性。 WebApplicationFirewallPolicyProperties
sku Web 应用程序防火墙策略的定价层。 如果未指定,则默认为Classic_AzureFrontDoor。 Sku
标签 资源标记 标记名称和值的字典。 请参阅模板 中的 标记
类型 资源类型 “Microsoft.Network/FrontDoorWebApplicationFirewallPolicies”

PolicySettings

名字 描述 价值
customBlockResponseBody 如果操作类型为块,客户可以替代响应正文。 必须在 base64 编码中指定正文。 字符串

约束:
Pattern = ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$
customBlockResponseStatusCode 如果操作类型为块,客户可以替代响应状态代码。 int
enabledState 描述策略是否处于启用或禁用状态。 如果未指定,则默认为 Enabled。 “Disabled”
“Enabled”
javascriptChallengeExpirationInMinutes 定义 JavaScript 质询 Cookie 有效期(以分钟为单位)。 此设置仅适用于Premium_AzureFrontDoor。 值必须是介于 5 和 1440 之间的整数,默认值为 30。 int

约束:
最小值 = 5
最大值 = 1440
logScrubbing 定义在 Web 应用程序防火墙日志中清理敏感字段的规则。 PolicySettingsLogScrubbing
模式 描述它在策略级别是否处于检测模式或预防模式。 “检测”
“预防”
redirectUrl 如果操作类型为重定向,此字段表示客户端的重定向 URL。 字符串
requestBodyCheck 描述策略托管规则是否会检查请求正文内容。 “Disabled”
“Enabled”

PolicySettingsLogScrubbing

名字 描述 价值
scrubbingRules 应用于 Web 应用程序防火墙日志的日志清理规则列表。 WebApplicationFirewallScrubbingRules[]
state 日志清理配置的状态。默认值为“已启用”。 “Disabled”
“Enabled”

ResourceTags

名字 描述 价值

Sku

名字 描述 价值
名字 定价层的名称。 “Classic_AzureFrontDoor”
“Premium_AzureFrontDoor”
“Standard_AzureFrontDoor”

WebApplicationFirewallPolicyProperties

名字 描述 价值
customRules 描述策略中的自定义规则。 CustomRuleList
managedRules 描述策略中的托管规则。 ManagedRuleSetList
policySettings 描述策略的设置。 PolicySettings

WebApplicationFirewallScrubbingRules

名字 描述 价值
matchVariable 要从日志中清理的变量。 “QueryStringArgNames”
“RequestBodyJsonArgNames”
'RequestBodyPostArgNames'
“RequestCookieNames”
“RequestHeaderNames”
'RequestIPAddress'
“RequestUri”(必需)
选择器 matchVariable 是集合时,运算符用于指定此规则应用于的集合中的哪些元素。 字符串
selectorMatchOperator 如果 matchVariable 是集合,请对选择器进行操作,以指定此规则应用于的集合中的哪些元素。 “Equals”
“EqualsAny”(必需)
state 定义日志清理规则的状态。 默认值处于启用状态。 “Disabled”
“Enabled”

快速入门模板

以下快速入门模板部署此资源类型。

模板 描述
为 Azure Front Door 配置 WAF 客户端 IP 限制

部署到 Azure
此模板为 Azure Front Door 终结点配置 WAF 客户端 IP 限制
为 Azure Front Door 配置 WAF 托管 defaultRuleSet

部署到 Azure
此模板配置适用于 Azure Front Door 的 WAF 托管 defaultRuleSet
为 Azure Front Door 终结点配置 WAF 速率限制规则

部署到 Azure
此模板为 Azure Front Door 配置 WAF 规则,以对给定前端主机的传入流量进行速率限制。
为 Front Door 配置 HTTP 参数的 WAF 规则

部署到 Azure
此模板基于 Azure Front Door 终结点的特定 http 参数配置 WAF 自定义规则。
在 Azure API 管理 前创建 Azure Front Door

部署到 Azure
此示例演示如何在 Azure API 管理之前将 Azure Front Door 用作全局负载均衡器。
为 Azure Front Door 终结点创建 WAF 地理筛选规则

部署到 Azure
此模板为 Azure Front Door 创建 WAF 地理筛选规则,该规则允许/阻止来自某些国家的流量。
使用 blob 源和专用链接 Front Door Premium

部署到 Azure
此模板创建 Front Door Premium 和 Azure 存储 Blob 容器,并使用 Front Door 的专用终结点将流量发送到存储帐户。
使用 WAF 和Microsoft托管的规则集 Front Door Premium

部署到 Azure
此模板创建一个 Front Door Premium,其中包括具有Microsoft托管的默认和机器人保护规则集的 Web 应用程序防火墙。
使用异地筛选 Front Door 标准版/高级版

部署到 Azure
此模板创建 Front Door 标准版/高级版,包括具有地理筛选规则的 Web 应用程序防火墙。
Front Door 标准版/高级版,速率限制为

部署到 Azure
此模板创建 Front Door 标准版/高级版,包括具有速率限制规则的 Web 应用程序防火墙。
使用 WAF 和自定义规则 Front Door 标准版/高级版

部署到 Azure
此模板创建 Front Door 标准版/高级版,包括具有自定义规则的 Web 应用程序防火墙。
使用 blob 上传 的 blob 源 Front Door

部署到 Azure
此模板创建一个 Front Door,其中包含源、路由和 ruleSet,以及一个包含 Blob 容器的 Azure 存储帐户。 Front Door 在上传文件时向存储帐户发送流量。
使用 WAF、域和日志将 FrontDoor CDN EventHub

部署到 Azure
此模板创建新的 Azure FrontDoor cdn 配置文件。 使用自定义和托管规则、cdn 路由、源和组与 WAF 和路由关联创建 WAF,配置自定义域,创建事件中心和诊断设置,以便使用事件中心发送 CDN 访问日志。
受 Azure Frontdoor 保护的 Function App

部署到 Azure
此模板允许部署受 Azure Frontdoor 高级版保护并发布的 Azure 高级函数。 Azure Frontdoor 和 Azure Functions 之间的连接受 Azure 专用链接的保护。

Terraform (AzAPI 提供程序)资源定义

可以使用目标操作部署 FrontDoorWebApplicationFirewallPolicies 资源类型:

  • 资源组

有关每个 API 版本中已更改属性的列表,请参阅 更改日志

资源格式

若要创建 Microsoft.Network/FrontDoorWebApplicationFirewallPolicies 资源,请将以下 Terraform 添加到模板。

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies@2024-02-01"
  name = "string"
  etag = "string"
  location = "string"
  sku = {
    name = "string"
  }
  tags = {
    {customized property} = "string"
  }
  body = jsonencode({
    properties = {
      customRules = {
        rules = [
          {
            action = "string"
            enabledState = "string"
            groupBy = [
              {
                variableName = "string"
              }
            ]
            matchConditions = [
              {
                matchValue = [
                  "string"
                ]
                matchVariable = "string"
                negateCondition = bool
                operator = "string"
                selector = "string"
                transforms = [
                  "string"
                ]
              }
            ]
            name = "string"
            priority = int
            rateLimitDurationInMinutes = int
            rateLimitThreshold = int
            ruleType = "string"
          }
        ]
      }
      managedRules = {
        managedRuleSets = [
          {
            exclusions = [
              {
                matchVariable = "string"
                selector = "string"
                selectorMatchOperator = "string"
              }
            ]
            ruleGroupOverrides = [
              {
                exclusions = [
                  {
                    matchVariable = "string"
                    selector = "string"
                    selectorMatchOperator = "string"
                  }
                ]
                ruleGroupName = "string"
                rules = [
                  {
                    action = "string"
                    enabledState = "string"
                    exclusions = [
                      {
                        matchVariable = "string"
                        selector = "string"
                        selectorMatchOperator = "string"
                      }
                    ]
                    ruleId = "string"
                  }
                ]
              }
            ]
            ruleSetAction = "string"
            ruleSetType = "string"
            ruleSetVersion = "string"
          }
        ]
      }
      policySettings = {
        customBlockResponseBody = "string"
        customBlockResponseStatusCode = int
        enabledState = "string"
        javascriptChallengeExpirationInMinutes = int
        logScrubbing = {
          scrubbingRules = [
            {
              matchVariable = "string"
              selector = "string"
              selectorMatchOperator = "string"
              state = "string"
            }
          ]
          state = "string"
        }
        mode = "string"
        redirectUrl = "string"
        requestBodyCheck = "string"
      }
    }
  })
}

属性值

CustomRule

名字 描述 价值
行动 描述规则匹配时要应用的操作。 “允许”
“AnomalyScoring”
“Block”
“JSChallenge”
“Log”
“重定向”(必需)
enabledState 描述自定义规则是否处于启用或禁用状态。 如果未指定,则默认为 Enabled。 “Disabled”
“Enabled”
groupBy 描述用于对速率限制请求进行分组的变量列表 GroupByVariable[]
matchConditions 匹配条件列表。 MatchCondition[] (必需)
名字 描述规则的名称。 字符串

约束:
最大长度 =
优先权 描述规则的优先级。 在具有较高值的规则之前,将评估具有较低值的规则。 int (必需)
rateLimitDurationInMinutes 重置速率限制计数的时间范围。 默认值为 1 分钟。 int

约束:
最小值 = 0
最大值 = 5
rateLimitThreshold 时间范围内每个客户端允许的请求数。 int

约束:
最小值 = 0
ruleType 描述规则的类型。 “MatchRule”
“RateLimitRule”(必需)

CustomRuleList

名字 描述 价值
规则 规则列表 CustomRule[]

GroupByVariable

名字 描述 价值
variableName 介绍组依据的受支持变量 “GeoLocation”
“None”
“SocketAddr”(必需)

ManagedRuleExclusion

名字 描述 价值
matchVariable 要排除的变量类型。 “QueryStringArgNames”
“RequestBodyJsonArgNames”
'RequestBodyPostArgNames'
“RequestCookieNames”
“RequestHeaderNames”(必需)
选择器 此排除项应用于集合中的元素的选择器值。 string (必需)
selectorMatchOperator 在指定此排除项应用于的集合中的元素时,要应用于选择器的比较运算符。 “Contains”
“EndsWith”
“Equals”
“EqualsAny”
“StartsWith”(必需)

ManagedRuleGroupOverride

名字 描述 价值
排除 描述应用于组中所有规则的排除项。 ManagedRuleExclusion[]
ruleGroupName 描述要重写的托管规则组。 string (必需)
规则 将禁用的规则列表。 如果未指定任何规则,将禁用组中的所有规则。 ManagedRuleOverride[]

ManagedRuleOverride

名字 描述 价值
行动 描述规则匹配时要应用的替代操作。 “允许”
“AnomalyScoring”
“Block”
“JSChallenge”
“Log”
“Redirect”
enabledState 描述托管规则是否处于启用或禁用状态。 如果未指定,则默认为 Disabled。 “Disabled”
“Enabled”
排除 描述应用于此特定规则的排除项。 ManagedRuleExclusion[]
ruleId 托管规则的标识符。 string (必需)

ManagedRuleSet

名字 描述 价值
排除 描述应用于集中所有规则的排除项。 ManagedRuleExclusion[]
ruleGroupOverrides 定义要应用于规则集的规则组替代。 ManagedRuleGroupOverride[]
ruleSetAction 定义规则集操作。 “Block”
“Log”
“Redirect”
ruleSetType 定义要使用的规则集类型。 string (必需)
ruleSetVersion 定义要使用的规则集的版本。 string (必需)

ManagedRuleSetList

名字 描述 价值
managedRuleSets 规则集列表。 ManagedRuleSet[]

MatchCondition

名字 描述 价值
matchValue 可能的匹配值列表。 string[] (必需)
matchVariable 要与之进行比较的请求变量。 “Cookies”
“PostArgs”
“QueryString”
“RemoteAddr”
“RequestBody”
“RequestHeader”
“RequestMethod”
“RequestUri”
“SocketAddr”(必需)
negateCondition 描述是否应否定此条件的结果。 bool
算子 要用于与变量值匹配的比较类型。 “Any”
“BeginsWith”
“Contains”
“EndsWith”
“Equal”
“GeoMatch”
“GreaterThan”
“GreaterThanOrEqual”
“IPMatch”
“LessThan”
“LessThanOrEqual”
“正则表达式”(必需)
选择器 与 QueryString、PostArgs、RequestHeader 或 Cookies 变量中的特定键匹配。 默认值为 null。 字符串
变换 转换列表。 包含任一项的字符串数组:
“小写”
“RemoveNulls”
“Trim”
“大写”
“UrlDecode”
“UrlEncode”

Microsoft.Network/FrontDoorWebApplicationFirewallPolicies

名字 描述 价值
etag 获取在更新资源时更改的唯一只读字符串。 字符串
位置 资源位置。 字符串
名字 资源名称 字符串

约束:
最大长度 = (必需)
性能 Web 应用程序防火墙策略的属性。 WebApplicationFirewallPolicyProperties
sku Web 应用程序防火墙策略的定价层。 如果未指定,则默认为Classic_AzureFrontDoor。 Sku
标签 资源标记 标记名称和值的字典。
类型 资源类型 “Microsoft.Network/FrontDoorWebApplicationFirewallPolicies@2024-02-01”

PolicySettings

名字 描述 价值
customBlockResponseBody 如果操作类型为块,客户可以替代响应正文。 必须在 base64 编码中指定正文。 字符串

约束:
Pattern = ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$
customBlockResponseStatusCode 如果操作类型为块,客户可以替代响应状态代码。 int
enabledState 描述策略是否处于启用或禁用状态。 如果未指定,则默认为 Enabled。 “Disabled”
“Enabled”
javascriptChallengeExpirationInMinutes 定义 JavaScript 质询 Cookie 有效期(以分钟为单位)。 此设置仅适用于Premium_AzureFrontDoor。 值必须是介于 5 和 1440 之间的整数,默认值为 30。 int

约束:
最小值 = 5
最大值 = 1440
logScrubbing 定义在 Web 应用程序防火墙日志中清理敏感字段的规则。 PolicySettingsLogScrubbing
模式 描述它在策略级别是否处于检测模式或预防模式。 “检测”
“预防”
redirectUrl 如果操作类型为重定向,此字段表示客户端的重定向 URL。 字符串
requestBodyCheck 描述策略托管规则是否会检查请求正文内容。 “Disabled”
“Enabled”

PolicySettingsLogScrubbing

名字 描述 价值
scrubbingRules 应用于 Web 应用程序防火墙日志的日志清理规则列表。 WebApplicationFirewallScrubbingRules[]
state 日志清理配置的状态。默认值为“已启用”。 “Disabled”
“Enabled”

ResourceTags

名字 描述 价值

Sku

名字 描述 价值
名字 定价层的名称。 “Classic_AzureFrontDoor”
“Premium_AzureFrontDoor”
“Standard_AzureFrontDoor”

WebApplicationFirewallPolicyProperties

名字 描述 价值
customRules 描述策略中的自定义规则。 CustomRuleList
managedRules 描述策略中的托管规则。 ManagedRuleSetList
policySettings 描述策略的设置。 PolicySettings

WebApplicationFirewallScrubbingRules

名字 描述 价值
matchVariable 要从日志中清理的变量。 “QueryStringArgNames”
“RequestBodyJsonArgNames”
'RequestBodyPostArgNames'
“RequestCookieNames”
“RequestHeaderNames”
'RequestIPAddress'
“RequestUri”(必需)
选择器 matchVariable 是集合时,运算符用于指定此规则应用于的集合中的哪些元素。 字符串
selectorMatchOperator 如果 matchVariable 是集合,请对选择器进行操作,以指定此规则应用于的集合中的哪些元素。 “Equals”
“EqualsAny”(必需)
state 定义日志清理规则的状态。 默认值处于启用状态。 “Disabled”
“Enabled”