@@ -406,6 +406,7 @@ func TestAccNetworkFirewallFirewallPolicy_statefulRuleGroupReference(t *testing.
406
406
resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_default_actions.#" , "0" ),
407
407
resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_engine_options.#" , "0" ),
408
408
resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.#" , "1" ),
409
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.0.deep_threat_inspection" , "" ),
409
410
resource .TestCheckTypeSetElemAttrPair (resourceName , "firewall_policy.0.stateful_rule_group_reference.*.resource_arn" , ruleGroupResourceName , names .AttrARN ),
410
411
),
411
412
},
@@ -1093,6 +1094,113 @@ func TestAccNetworkFirewallFirewallPolicy_disappears(t *testing.T) {
1093
1094
})
1094
1095
}
1095
1096
1097
+ func TestAccNetworkFirewallFirewallPolicy_activeThreatDefense_actionOrder (t * testing.T ) {
1098
+ ctx := acctest .Context (t )
1099
+ var firewallPolicy networkfirewall.DescribeFirewallPolicyOutput
1100
+ rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
1101
+ resourceName := "aws_networkfirewall_firewall_policy.test"
1102
+
1103
+ resource .ParallelTest (t , resource.TestCase {
1104
+ PreCheck : func () { acctest .PreCheck (ctx , t ); testAccPreCheck (ctx , t ) },
1105
+ ErrorCheck : acctest .ErrorCheck (t , names .NetworkFirewallServiceID ),
1106
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories ,
1107
+ CheckDestroy : testAccCheckFirewallPolicyDestroy (ctx ),
1108
+ Steps : []resource.TestStep {
1109
+ {
1110
+ Config : testAccFirewallPolicyConfig_activeThreatDefense_actionOrder_default (rName ),
1111
+ Check : resource .ComposeTestCheckFunc (
1112
+ testAccCheckFirewallPolicyExists (ctx , resourceName , & firewallPolicy ),
1113
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.#" , "1" ),
1114
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.#" , "1" ),
1115
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.0.deep_threat_inspection" , "" ),
1116
+ ),
1117
+ },
1118
+ {
1119
+ ResourceName : resourceName ,
1120
+ ImportState : true ,
1121
+ ImportStateVerify : true ,
1122
+ ImportStateVerifyIgnore : []string {"firewall_policy.0.stateful_rule_group_reference.0.priority" },
1123
+ },
1124
+ {
1125
+ Config : testAccFirewallPolicyConfig_activeThreatDefense_actionOrder (rName , false ),
1126
+ Check : resource .ComposeTestCheckFunc (
1127
+ testAccCheckFirewallPolicyExists (ctx , resourceName , & firewallPolicy ),
1128
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.#" , "1" ),
1129
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.#" , "1" ),
1130
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.0.deep_threat_inspection" , acctest .CtFalse ),
1131
+ ),
1132
+ },
1133
+ {
1134
+ ResourceName : resourceName ,
1135
+ ImportState : true ,
1136
+ ImportStateVerify : true ,
1137
+ ImportStateVerifyIgnore : []string {"firewall_policy.0.stateful_rule_group_reference.0.priority" },
1138
+ },
1139
+ {
1140
+ Config : testAccFirewallPolicyConfig_activeThreatDefense_actionOrder (rName , true ),
1141
+ Check : resource .ComposeTestCheckFunc (
1142
+ testAccCheckFirewallPolicyExists (ctx , resourceName , & firewallPolicy ),
1143
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.#" , "1" ),
1144
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.#" , "1" ),
1145
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.0.deep_threat_inspection" , acctest .CtTrue ),
1146
+ ),
1147
+ },
1148
+ {
1149
+ ResourceName : resourceName ,
1150
+ ImportState : true ,
1151
+ ImportStateVerify : true ,
1152
+ ImportStateVerifyIgnore : []string {"firewall_policy.0.stateful_rule_group_reference.0.priority" },
1153
+ },
1154
+ },
1155
+ })
1156
+ }
1157
+
1158
+ func TestAccNetworkFirewallFirewallPolicy_activeThreatDefense_strictOrder (t * testing.T ) {
1159
+ ctx := acctest .Context (t )
1160
+ var firewallPolicy networkfirewall.DescribeFirewallPolicyOutput
1161
+ rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
1162
+ resourceName := "aws_networkfirewall_firewall_policy.test"
1163
+
1164
+ resource .ParallelTest (t , resource.TestCase {
1165
+ PreCheck : func () { acctest .PreCheck (ctx , t ); testAccPreCheck (ctx , t ) },
1166
+ ErrorCheck : acctest .ErrorCheck (t , names .NetworkFirewallServiceID ),
1167
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories ,
1168
+ CheckDestroy : testAccCheckFirewallPolicyDestroy (ctx ),
1169
+ Steps : []resource.TestStep {
1170
+ {
1171
+ Config : testAccFirewallPolicyConfig_activeThreatDefense_strictOrder (rName , false ),
1172
+ Check : resource .ComposeTestCheckFunc (
1173
+ testAccCheckFirewallPolicyExists (ctx , resourceName , & firewallPolicy ),
1174
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.#" , "1" ),
1175
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.#" , "1" ),
1176
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.0.deep_threat_inspection" , acctest .CtFalse ),
1177
+ ),
1178
+ },
1179
+ {
1180
+ ResourceName : resourceName ,
1181
+ ImportState : true ,
1182
+ ImportStateVerify : true ,
1183
+ ImportStateVerifyIgnore : []string {"firewall_policy.0.stateful_rule_group_reference.0.priority" },
1184
+ },
1185
+ {
1186
+ Config : testAccFirewallPolicyConfig_activeThreatDefense_strictOrder (rName , true ),
1187
+ Check : resource .ComposeTestCheckFunc (
1188
+ testAccCheckFirewallPolicyExists (ctx , resourceName , & firewallPolicy ),
1189
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.#" , "1" ),
1190
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.#" , "1" ),
1191
+ resource .TestCheckResourceAttr (resourceName , "firewall_policy.0.stateful_rule_group_reference.0.deep_threat_inspection" , acctest .CtTrue ),
1192
+ ),
1193
+ },
1194
+ {
1195
+ ResourceName : resourceName ,
1196
+ ImportState : true ,
1197
+ ImportStateVerify : true ,
1198
+ ImportStateVerifyIgnore : []string {"firewall_policy.0.stateful_rule_group_reference.0.priority" },
1199
+ },
1200
+ },
1201
+ })
1202
+ }
1203
+
1096
1204
func testAccCheckFirewallPolicyDestroy (ctx context.Context ) resource.TestCheckFunc {
1097
1205
return func (s * terraform.State ) error {
1098
1206
for _ , rs := range s .RootModule ().Resources {
@@ -1816,3 +1924,70 @@ resource "aws_networkfirewall_firewall_policy" "test" {
1816
1924
}
1817
1925
` , rName )
1818
1926
}
1927
+
1928
+ func testAccFirewallPolicyConfig_activeThreatDefense_actionOrder_default (rName string ) string {
1929
+ return acctest .ConfigCompose (testAccFirewallPolicyConfig_baseStatelessRuleGroup (rName , 1 ), fmt .Sprintf (`
1930
+ data "aws_region" "current" {}
1931
+ data "aws_partition" "current" {}
1932
+
1933
+ resource "aws_networkfirewall_firewall_policy" "test" {
1934
+ name = %[1]q
1935
+
1936
+ firewall_policy {
1937
+ stateless_fragment_default_actions = ["aws:drop"]
1938
+ stateless_default_actions = ["aws:pass"]
1939
+
1940
+ stateful_rule_group_reference {
1941
+ resource_arn = "arn:${data.aws_partition.current.partition}:network-firewall:${data.aws_region.current.region}:aws-managed:stateful-rulegroup/AttackInfrastructureActionOrder"
1942
+ }
1943
+ }
1944
+ }
1945
+ ` , rName ))
1946
+ }
1947
+
1948
+ func testAccFirewallPolicyConfig_activeThreatDefense_actionOrder (rName string , deepThreatInspection bool ) string {
1949
+ return acctest .ConfigCompose (testAccFirewallPolicyConfig_baseStatelessRuleGroup (rName , 1 ), fmt .Sprintf (`
1950
+ data "aws_region" "current" {}
1951
+ data "aws_partition" "current" {}
1952
+
1953
+ resource "aws_networkfirewall_firewall_policy" "test" {
1954
+ name = %[1]q
1955
+
1956
+ firewall_policy {
1957
+ stateless_fragment_default_actions = ["aws:drop"]
1958
+ stateless_default_actions = ["aws:pass"]
1959
+
1960
+ stateful_rule_group_reference {
1961
+ deep_threat_inspection = %[2]t
1962
+ resource_arn = "arn:${data.aws_partition.current.partition}:network-firewall:${data.aws_region.current.region}:aws-managed:stateful-rulegroup/AttackInfrastructureActionOrder"
1963
+ }
1964
+ }
1965
+ }
1966
+ ` , rName , deepThreatInspection ))
1967
+ }
1968
+
1969
+ func testAccFirewallPolicyConfig_activeThreatDefense_strictOrder (rName string , deepThreatInspection bool ) string {
1970
+ return acctest .ConfigCompose (testAccFirewallPolicyConfig_baseStatelessRuleGroup (rName , 1 ), fmt .Sprintf (`
1971
+ data "aws_region" "current" {}
1972
+ data "aws_partition" "current" {}
1973
+
1974
+ resource "aws_networkfirewall_firewall_policy" "test" {
1975
+ name = %[1]q
1976
+
1977
+ firewall_policy {
1978
+ stateless_fragment_default_actions = ["aws:drop"]
1979
+ stateless_default_actions = ["aws:pass"]
1980
+
1981
+ stateful_engine_options {
1982
+ rule_order = "STRICT_ORDER"
1983
+ }
1984
+
1985
+ stateful_rule_group_reference {
1986
+ deep_threat_inspection = %[2]t
1987
+ priority = 1
1988
+ resource_arn = "arn:${data.aws_partition.current.partition}:network-firewall:${data.aws_region.current.region}:aws-managed:stateful-rulegroup/AttackInfrastructureStrictOrder"
1989
+ }
1990
+ }
1991
+ }
1992
+ ` , rName , deepThreatInspection ))
1993
+ }
0 commit comments