Skip to content

Commit 59d736a

Browse files
feat: adjust example and minor fixes
1 parent 5b43213 commit 59d736a

File tree

5 files changed

+79
-32
lines changed

5 files changed

+79
-32
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## Requirements
2+
3+
| Name | Version |
4+
|------|---------|
5+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
6+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.46 |
7+
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
8+
9+
## Providers
10+
11+
| Name | Version |
12+
|------|---------|
13+
| <a name="provider_random"></a> [random](#provider\_random) | 3.6.3 |
14+
15+
## Modules
16+
17+
| Name | Source | Version |
18+
|------|--------|---------|
19+
| <a name="module_kms"></a> [kms](#module\_kms) | git::https://github.com/withclutch/terraform-modules-registry | aws-kms_v1.194 |
20+
| <a name="module_vpc"></a> [vpc](#module\_vpc) | ../../ | n/a |
21+
22+
## Resources
23+
24+
| Name | Type |
25+
|------|------|
26+
| [random_pet.this](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet) | resource |
27+
28+
## Inputs
29+
30+
No inputs.
31+
32+
## Outputs
33+
34+
| Name | Description |
35+
|------|-------------|
36+
| <a name="output_firewall_subnets"></a> [firewall\_subnets](#output\_firewall\_subnets) | List of IDs of firewall subnets |
37+
| <a name="output_nat_public_ips"></a> [nat\_public\_ips](#output\_nat\_public\_ips) | List of public Elastic IPs created for AWS NAT Gateway |
38+
| <a name="output_network_firewall_arn"></a> [network\_firewall\_arn](#output\_network\_firewall\_arn) | ARN of the Network Firewall |
39+
| <a name="output_private_subnets"></a> [private\_subnets](#output\_private\_subnets) | List of IDs of private subnets |
40+
| <a name="output_public_subnets"></a> [public\_subnets](#output\_public\_subnets) | List of IDs of public subnets |
41+
| <a name="output_vpc_id"></a> [vpc\_id](#output\_vpc\_id) | The ID of the VPC |

examples/network-firewall/main.tf

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ provider "aws" {
33
}
44

55
locals {
6-
region = "us-east-2"
6+
region = "us-east-1"
77
name = "nf-example-${random_pet.this.id}"
88
environment = "test"
99
}
@@ -18,13 +18,11 @@ resource "random_pet" "this" {
1818
################################################################################
1919

2020
module "kms" {
21-
#source = "git::https://github.com/withclutch/terraform-modules-registry?ref=aws-kms_v1.194"
22-
source = "/Users/roger.amorim/Clutch/projects/infrastructure/terraform-modules/modules/aws-kms"
21+
source = "git::https://github.com/withclutch/terraform-modules-registry?ref=aws-kms_v1.194"
2322

24-
name = local.name
25-
environment = "test"
26-
description = "KMS key used to test the ${local.name} AWS Network Firewall"
27-
allow_usage_in_network_log_groups = true
23+
name = local.name
24+
environment = "test"
25+
description = "KMS key used to test the ${local.name} AWS Network Firewall"
2826
}
2927

3028
################################################################################
@@ -59,10 +57,11 @@ module "vpc" {
5957
######### Firewall Logs ##########
6058
firewall_logs_retention_in_days = 14
6159
firewall_logs_kms_key_arn = module.kms.key_arn
60+
create_logging_configuration = true
6261

6362
######### Firewall Rules and Filter ##########
64-
firewall_log_types = ["FLOW", "ALERT"]
65-
firewall_managed_rules = [
63+
firewall_log_types = ["FLOW", "ALERT"]
64+
firewall_managed_rules = [
6665
"AbusedLegitMalwareDomainsStrictOrder",
6766
"BotNetCommandAndControlDomainsStrictOrder",
6867
"AbusedLegitBotNetCommandAndControlDomainsStrictOrder",

main.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ locals {
2020
// TODO - comment what this line does
2121
firewall_sync_states = try(module.firewall[0].status[0].sync_states, {})
2222
firewall_vpce = {
23-
for state in local.firewall_sync_states: state.availability_zone => {
24-
cidr_block = one([ for subnet in aws_subnet.firewall : subnet.cidr_block if subnet.id == state.attachment[0].subnet_id ])
25-
endpoint_id = state.attachment[0].endpoint_id
26-
}
23+
for state in local.firewall_sync_states : state.availability_zone => {
24+
cidr_block = one([for subnet in aws_subnet.firewall : subnet.cidr_block if subnet.id == state.attachment[0].subnet_id])
25+
endpoint_id = state.attachment[0].endpoint_id
2726
}
27+
}
2828

2929
# Use `local.vpc_id` to give a hint to Terraform that subnets should be deleted before secondary CIDR blocks can be free!
3030
vpc_id = try(aws_vpc_ipv4_cidr_block_association.this[0].vpc_id, aws_vpc.this[0].id, "")
@@ -325,7 +325,7 @@ resource "aws_route_table" "internet_gateway" {
325325

326326
tags = merge(
327327
{
328-
"Name" = format("%s-internet-gateway-${var.firewall_subnet_suffix}", var.name)
328+
"Name" = format("%s-internet-gateway-${var.public_subnet_suffix}", var.name)
329329
},
330330
var.tags,
331331
var.public_route_table_tags,

network-firewall.tf

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,16 @@ locals {
44
name = "${var.name}-network-firewall"
55
}
66

7+
### TODO - AWS Network Firewall Managed and Custom Rules will be reviewed/implemented in next release - ###
78
module "firewall" {
89
source = "terraform-aws-modules/network-firewall/aws"
910
version = "~> 1.0"
1011

1112
count = var.create_network_firewall ? 1 : 0
1213

13-
1414
name = local.name
1515
description = var.firewall_description
1616

17-
1817
delete_protection = var.firewall_delete_protection
1918
firewall_policy_change_protection = var.firewall_policy_change_protection
2019
subnet_change_protection = var.firewall_subnet_change_protection
@@ -29,7 +28,7 @@ module "firewall" {
2928
}
3029

3130
### Logging configuration ###
32-
create_logging_configuration = false
31+
create_logging_configuration = var.create_logging_configuration
3332
logging_configuration_destination_config = [
3433
{
3534
log_destination = {
@@ -69,17 +68,17 @@ module "firewall" {
6968
policy_stateless_default_actions = ["aws:forward_to_sfe"]
7069
policy_stateless_fragment_default_actions = ["aws:forward_to_sfe"]
7170

72-
tags = var.tags // TODO - review these tags
71+
tags = var.tags
7372

7473
depends_on = [module.kms, module.logs_alerts, module.logs_flow]
7574
}
7675

7776
module "logs_alerts" {
78-
source = "git::https://github.com/withclutch/terraform-modules-registry?ref=aws-log-group_v1.194"
77+
source = "git::https://github.com/withclutch/terraform-modules-registry?ref=aws-log-group_v1.194"
7978

8079
count = var.create_network_firewall ? 1 : 0
8180

82-
name = "nf-network-log-alerts"
81+
name = "${local.name}-alerts"
8382
tenant = var.tenant
8483
region = var.region
8584
environment = var.environment
@@ -88,15 +87,17 @@ module "logs_alerts" {
8887
kms_key_arn = module.kms[0].key_arn
8988
create_datadog_subscription_filter = true
9089

90+
tags = merge(var.tags, var.firewall_log_tags)
91+
9192
depends_on = [module.kms]
9293
}
9394

9495
module "logs_flow" {
95-
source = "git::https://github.com/withclutch/terraform-modules-registry?ref=aws-log-group_v1.194"
96+
source = "git::https://github.com/withclutch/terraform-modules-registry?ref=aws-log-group_v1.194"
9697

97-
count = var.create_network_firewall ? 1 : 0
98+
count = var.create_network_firewall ? 1 : 0
9899

99-
name = "nf-network-log-flow"
100+
name = "${local.name}-flow"
100101
tenant = var.tenant
101102
region = var.region
102103
environment = var.environment
@@ -105,22 +106,22 @@ module "logs_flow" {
105106
kms_key_arn = module.kms[0].key_arn
106107
create_datadog_subscription_filter = false
107108

109+
tags = merge(var.tags, var.firewall_log_tags)
110+
108111
depends_on = [module.kms]
109112
}
110113

111114
module "kms" {
112-
#source = "git::https://github.com/withclutch/terraform-modules-registry?ref=aws-kms_v1.194"
113-
source = "/Users/roger.amorim/Clutch/projects/infrastructure/terraform-modules/modules/aws-kms"
115+
source = "git::https://github.com/withclutch/terraform-modules-registry?ref=aws-kms_v1.194"
114116

115117
count = var.create_network_firewall ? 1 : 0
116118

117-
description = "KMS key used for ${var.name} AWS Network Firewall"
118-
name = var.name // TODO - review this name
119+
description = "KMS key used for ${local.name} AWS Network Firewall"
120+
name = "${local.name}-kms"
119121
region = var.region
120122
environment = var.environment
121123
namespace = var.namespace
122124
tenant = var.tenant
123125
tags = var.tags
124-
#allow_usage_in_network_log_groups = true
125126
}
126127

variables.tf

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,10 +1200,16 @@ variable "firewall_log_types" {
12001200
default = ["FLOW", "ALERT"]
12011201
}
12021202

1203-
variable "firewall_log_cloudwatch_log_group_name_prefix" {
1204-
description = "Specifies the name prefix of Network Firewall Log Group for Network Firewall logs."
1205-
type = string
1206-
default = "/aws/network-firewall-log/"
1203+
variable "firewall_log_tags" {
1204+
description = "Additional tags for the Firewall Logs"
1205+
type = map(string)
1206+
default = {}
1207+
}
1208+
1209+
variable "create_logging_configuration" {
1210+
description = "Controls if a Logging Configuration should be created"
1211+
type = bool
1212+
default = false
12071213
}
12081214

12091215
variable "region" {

0 commit comments

Comments
 (0)