Skip to content

Commit 74b5fd1

Browse files
committed
feat: Add 'AWSManagedRulesAntiDDoSRuleSet'
- Add example codes
1 parent 8f7e509 commit 74b5fd1

File tree

7 files changed

+116
-0
lines changed

7 files changed

+116
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ A Terraform module that creates Web Application Firewall (WAFV2).
2020
- AWSManagedRulesACFPRuleSet
2121
- AWSManagedRulesATPRuleSet
2222
- AWSManagedRulesBotControlRuleSet
23+
- AWSManagedRulesAntiDDoSRuleSet
2324
- NotStatement
2425
- OrStatement
2526
- RateBasedStatement
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
## Usage
2+
3+
To run this example you need to execute:
4+
5+
```bash
6+
$ terraform init
7+
$ terraform plan
8+
$ terraform apply
9+
```
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
provider "aws" {
2+
region = "ap-northeast-2"
3+
}
4+
5+
module "wafv2" {
6+
source = "../../..//"
7+
8+
enabled_web_acl_association = true
9+
resource_arn = []
10+
11+
enabled_logging_configuration = false
12+
13+
name = "WebACL01"
14+
scope = "REGIONAL"
15+
default_action = "block"
16+
rule = [
17+
{
18+
name = "Rule01"
19+
priority = 10
20+
override_action = "count"
21+
managed_rule_group_statement = {
22+
name = "AWSManagedRulesAntiDDoSRuleSet"
23+
vendor_name = "AWS"
24+
# Deprecated - excluded_rule = ["NoUserAgent_HEADER", "UserAgent_BadBots_HEADER"]
25+
26+
managed_rule_group_configs = [
27+
{
28+
aws_managed_rules_anti_ddos_rule_set = {
29+
sensitivity_to_block = "LOW"
30+
client_side_action_config = {
31+
challenge = {
32+
exempt_uri_regular_expression = [
33+
{
34+
regex_string = "\\/api\\/|\\.(acc|avi|css|gif|ico|jpe?g|js|json|mp[34]|ogg|otf|pdf|png|tiff?|ttf|webm|webp|woff2?|xml)$"
35+
},
36+
{
37+
regex_string = "\\/test\\/|\\.(acc|avi|css|gif|ico|jpe?g|js|json|mp[34]|ogg|otf|pdf|png|tiff?|ttf|webm|webp|woff2?|xml)$"
38+
}
39+
]
40+
usage_of_action = "DISABLED"
41+
sensitivity = "LOW"
42+
43+
}
44+
}
45+
}
46+
}
47+
]
48+
}
49+
visibility_config = {
50+
cloudwatch_metrics_enabled = true
51+
metric_name = "AWS-AWSManagedRulesACFPRuleSet"
52+
sampled_requests_enabled = true
53+
}
54+
}
55+
]
56+
57+
challenge_config = 500
58+
captcha_config = 500
59+
60+
token_domains = ["test.com", "test1.com"]
61+
62+
visibility_config = {
63+
cloudwatch_metrics_enabled = false
64+
metric_name = "cloudwatch_metric_name"
65+
sampled_requests_enabled = false
66+
}
67+
}

examples/ManagedRuleGroupStatement/AWSManagedRulesAntiDDoSRuleSet/outputs.tf

Whitespace-only changes.

examples/ManagedRuleGroupStatement/AWSManagedRulesAntiDDoSRuleSet/variables.tf

Whitespace-only changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
terraform {
2+
required_version = ">= 1.3.6"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 6.14.0"
8+
}
9+
}
10+
}

main.tf

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,35 @@ resource "aws_wafv2_web_acl" "this" {
219219
inspection_level = upper(lookup(aws_managed_rules_bot_control_rule_set.value, "inspection_level", "COMMON"))
220220
}
221221
}
222+
223+
dynamic "aws_managed_rules_anti_ddos_rule_set" {
224+
for_each = lookup(managed_rule_group_configs.value, "aws_managed_rules_anti_ddos_rule_set", null) == null ? [] : [lookup(managed_rule_group_configs.value, "aws_managed_rules_anti_ddos_rule_set")]
225+
content {
226+
sensitivity_to_block = upper(lookup(aws_managed_rules_anti_ddos_rule_set.value, "sensitivity_to_block", "LOW"))
227+
228+
dynamic "client_side_action_config" {
229+
for_each = lookup(aws_managed_rules_anti_ddos_rule_set.value, "client_side_action_config") == null ? [] : [lookup(aws_managed_rules_anti_ddos_rule_set.value, "client_side_action_config")]
230+
content {
231+
dynamic "challenge" {
232+
for_each = lookup(client_side_action_config.value, "challenge", null) == null ? [] : [lookup(client_side_action_config.value, "challenge")]
233+
content {
234+
sensitivity = upper(lookup(challenge.value, "sensitivity", "HIGH"))
235+
usage_of_action = upper(lookup(challenge.value, "usage_of_action"))
236+
237+
dynamic "exempt_uri_regular_expression" {
238+
for_each = lookup(challenge.value, "exempt_uri_regular_expression", null) == null ? [] : lookup(challenge.value, "exempt_uri_regular_expression")
239+
iterator = exempt_uri_regular_expression
240+
241+
content {
242+
regex_string = lookup(exempt_uri_regular_expression.value, "regex_string")
243+
}
244+
}
245+
}
246+
}
247+
}
248+
}
249+
}
250+
}
222251
}
223252
}
224253

0 commit comments

Comments
 (0)