AWS::WAFv2::WebACL - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::WAFv2::WebACL

注意

这是 AWS WAF 的最新版本,名为 AWS WAFV2,于 2019 年 11 月发布。有关信息(包括如何从以前的发行版迁移 AWS WAF 资源),请参阅 AWS WAF 开发人员指南

可以使用 AWS::WAFv2::WebACL 定义一组用于检查和控制 Web 请求的规则。每个规则为与规则语句匹配的请求定义了一个操作(允许、阻止或计数)。在 Web ACL 中,您可以为与任何规则都不匹配的任何请求分配一个要执行的默认操作(允许、阻止)。Web ACL 中的规则可以包含您明确定义的规则语句,以及引用规则组和托管规则组的规则语句。您可以将 Web ACL 与一个或多个 AWS 资源相关联以进行保护。这些资源可能是 Amazon CloudFront 分配、Amazon API Gateway API 或应用程序负载均衡器。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::WAFv2::WebACL", "Properties" : { "DefaultAction" : DefaultAction, "Description" : String, "Name" : String, "Rules" : [ Rule, ... ], "Scope" : String, "Tags" : [ Tag, ... ], "VisibilityConfig" : VisibilityConfig } }

YAML

Type: AWS::WAFv2::WebACL Properties: DefaultAction: DefaultAction Description: String Name: String Rules: - Rule Scope: String Tags: - Tag VisibilityConfig: VisibilityConfig

属性

DefaultAction

如果 WebACL 中包含的 Rules 均不匹配,则为要执行的操作。

必需:是

类型DefaultAction

Update requires: No interruption

Description

Web ACL 的友好描述。在创建 Web ACL 后,您无法更改其描述。

必需:否

类型:字符串

最低1

最高256

模式^[\w+=:#@/\-,\.][\w+=:#@/\-,\.\s]+[\w+=:#@/\-,\.]$

Update requires: No interruption

Name

Web ACL 的友好名称。在创建 Web ACL 后,您无法更改其名称。

必需:否

类型:字符串

最低1

最高128

模式^[\w\-]+$

Update requires: No interruption

Rules

用于指定要允许、阻止或计数的 Web 请求的规则语句。每个规则包含一个顶级语句(AWS WAF 使用该语句指定匹配的 Web 请求)以及一些参数(控制 AWS WAF 如何处理它们)。

必需:否

类型Rule 列表

Update requires: No interruption

Scope

指定它用于 AWS CloudFront 分配还是区域应用程序。区域应用程序可能是应用程序负载均衡器 (ALB) 或 API Gateway 阶段。有效值为 CLOUDFRONTREGIONAL

注意

对于 CLOUDFRONT,您必须在美国东部(弗吉尼亚北部)区域创建您的 WAFv2 资源 us-east-1

必需:是

类型:字符串

Update requires: No interruption

Tags

与 AWS 资源关联的键值对。键值对可以是您定义的任何内容。通常,标签键表示一个类别(如“environment”),标签值表示该类别中的特定值(如“test”、“development”或“production”)。您最多可以将 50 个标签添加到每个 AWS 资源中。

必需:否

类型Tag 的列表

Update requires: No interruption

VisibilityConfig

定义并启用 Amazon CloudWatch 指标和 Web 请求采样。

必需:是

类型VisibilityConfig

Update requires: No interruption

返回值

Ref

资源的 Ref,其中包含资源名称、物理 ID 和范围,格式如下:name|id|scope

例如:my-webacl-name|1234a1a-a1b1-12a1-abcd-a123b123456|REGIONAL

Fn::GetAtt

Arn

Web ACL 的 Amazon 资源名称 (ARN)。

Capacity

Web ACL 当前使用的 Web ACL 容量 (WCU)。

Id

Web ACL 的 ID。

示例

创建 Web ACL

下面显示了一个示例 Web ACL 规范。

YAML

Description: Create WebACL example Resources: ExampleWebACL: Type: AWS::WAFv2::WebACL Properties: Name: ExampleWebACL Scope: REGIONAL Description: This is an example WebACL DefaultAction: Allow: {} VisibilityConfig: SampledRequestsEnabled: true CloudWatchMetricsEnabled: true MetricName: ExampleWebACLMetric Rules: - Name: RuleWithAWSManagedRules Priority: 0 OverrideAction: Count: {} VisibilityConfig: SampledRequestsEnabled: true CloudWatchMetricsEnabled: true MetricName: RuleWithAWSManagedRulesMetric Statement: ManagedRuleGroupStatement: VendorName: AWS Name: AWSManagedRulesCommonRuleSet ExcludedRules: [] - Name: BlockXssAttack Priority: 1 Action: Block: {} VisibilityConfig: SampledRequestsEnabled: true CloudWatchMetricsEnabled: true MetricName: BlockXssAttackMetric Statement: XssMatchStatement: FieldToMatch: AllQueryArguments: {} TextTransformations: - Priority: 1 Type: NONE

JSON

"Description": "Create WebACL example", "Resources": { "ExampleWebACL": { "Type": "AWS::WAFv2::WebACL", "Properties": { "Name": "ExampleWebACL1", "Scope": "REGIONAL", "Description": "This is an example WebACL", "DefaultAction": { "Allow": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "ExampleWebACLMetric" }, "Rules": [ { "Name": "RuleWithAWSManagedRules", "Priority": 0, "OverrideAction": { "Count": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "RuleWithAWSManagedRulesMetric" }, "Statement": { "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesCommonRuleSet", "ExcludedRules": [] } } }, { "Name": "BlockXssAttack", "Priority": 1, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "BlockXssAttackMetric" }, "Statement": { "XssMatchStatement": { "FieldToMatch": { "AllQueryArguments": {} }, "TextTransformations": [ { "Priority": 1, "Type": "NONE" } ] } } } ] } } }