AWS::WAFv2::WebACL - AWS CloudFormation

AWS::WAFv2::WebACL

注記

これは AWS WAF の最新バージョンで、2019 年 11 月に AWS WAFV2 という名前でリリースされています。以前のリリースから AWS WAF リソースを移行する方法などの詳細については、AWS WAF 開発者ガイドを参照してください。

AWS::WAFv2::WebACL を使用して、ウェブリクエストの検査と制御に使用するルールのコレクションを定義します。各ルールには、ルールのステートメントと一致するリクエストに対するアクション(許可、ブロック、またはカウント)が定義されています。Web ACL では、どのルールにも一致しないリクエストに対して実行(許可、ブロック)するデフォルトのアクションを割り当てます。Web ACL のルールには、明示的に定義するルールステートメントと、ルールグループおよびマネージドルールグループを参照するルールステートメントを含めることができます。Web ACL を 1 つ以上の AWS リソースに関連付けて保護することができます。リソースには、Amazon CloudFront ディストリビューション、Amazon API Gateway REST API、Application Load Balancer、または AWS AppSync GraphQL API を使用できます。

注記

AWS CloudFormation を使用してウェブ ACL とルールグループを管理する場合、使用するルールステートメントは最大 3 レベルまでネストできます。API と SDK を使用する場合、この制限はありません。

構文

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

許可、ブロック、またはカウントするウェブリクエストを識別するために使用する Rule ステートメント。各ルールには、AWS WAF が一致するウェブリクエストを識別するために使用する 1 つの最上位ステートメントと、AWS WAF によるリクエストの処理方法を規定するパラメータが含まれています。

必須: いいえ

タイプ: Rule のリスト

Update requires: No interruption

Scope

AWS CloudFront ディストリビューション用か、リージョンのアプリケーション用かを指定します。リージョンアプリケーションは、Application Load Balancer (ALB)、Amazon API Gateway REST API、または AWS AppSync GraphQL API です。有効な値は、CLOUDFRONT および REGIONAL です。

注記

CLOUDFRONT の場合、米国東部 (バージニア北部) リージョン (us-east-1) で WAFv2 リソースを作成する必要があります。

必須: はい

タイプ: 文字列

Update requires: No interruption

Tags

AWS リソースに関連付けられるキーと値のペア。キーと値のペアの定義は何でもかまいません。通常、タグキーはカテゴリ(例:「環境」)を表し、タグ値はそのカテゴリ内の特定の値(例:「テスト」、「開発」、「生産」)を表します。AWS リソースごとに最大 50 個のタグを追加できます。

注記

既存のリソースのタグを変更するには、AWS WAF コンソールまたは API を使用します。AWS CloudFormation では、AWS WAF リソースにタグを追加できるのは、リソースの作成時のみです。

必須: いいえ

タイプ: Tag のリスト

Update requires: No interruption

VisibilityConfig

Amazon CloudWatch のメトリクスとウェブリクエストのサンプルコレクションを定義し、有効にします。

必須: はい

タイプ: VisibilityConfig

Update requires: No interruption

戻り値

参照番号

リソース名、物理 ID、およびスコープを含むリソースの Ref で、形式は 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" } ] } } } ] } } }