Skip to content

Commit d681d9f

Browse files
authored
feat: add a flag to enable/disable VPC Flow Logs (#146)
fixes #143
1 parent bac49b3 commit d681d9f

File tree

6 files changed

+30
-2
lines changed

6 files changed

+30
-2
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ This module is composed of several submodules and each of which can be used inde
176176
| tags | Specifies object tags key and value. This applies to all resources created by this module. | `map` | `{}` | no |
177177
| target\_regions | A list of regions to set up with this module. | `list` | <pre>[<br> "ap-northeast-1",<br> "ap-northeast-2",<br> "ap-south-1",<br> "ap-southeast-1",<br> "ap-southeast-2",<br> "ca-central-1",<br> "eu-central-1",<br> "eu-north-1",<br> "eu-west-1",<br> "eu-west-2",<br> "eu-west-3",<br> "sa-east-1",<br> "us-east-1",<br> "us-east-2",<br> "us-west-1",<br> "us-west-2"<br>]</pre> | no |
178178
| use\_external\_audit\_log\_bucket | A boolean that indicates whether the specific audit log bucket already exists. Create a new S3 bucket if it is set to false. | `bool` | `false` | no |
179+
| vpc\_enable\_flow\_logs | The boolean flag whether to enable VPC Flow Logs in default VPCs | `bool` | `true` | no |
179180
| vpc\_iam\_role\_name | The name of the IAM Role which VPC Flow Logs will use. | `string` | `"VPC-Flow-Logs-Publisher"` | no |
180181
| vpc\_iam\_role\_policy\_name | The name of the IAM Role Policy which VPC Flow Logs will use. | `string` | `"VPC-Flow-Logs-Publish-Policy"` | no |
181182
| vpc\_log\_group\_name | The name of CloudWatch Logs group to which VPC Flow Logs are delivered. | `string` | `"default-vpc-flow-logs"` | no |

modules/vpc-baseline/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
| Name | Description | Type | Default | Required |
2424
|------|-------------|------|---------|:--------:|
25+
| enable\_flow\_logs | The boolean flag whether to enable VPC Flow Logs in the default VPC | `bool` | `true` | no |
2526
| enabled | The boolean flag whether this module is enabled or not. No resources are created when set to false. | `bool` | `true` | no |
2627
| tags | Specifies object tags key and value. This applies to all resources created by this module. | `map` | <pre>{<br> "Terraform": true<br>}</pre> | no |
2728
| vpc\_flow\_logs\_iam\_role\_arn | The ARN of the IAM Role which will be used by VPC Flow Logs. | `any` | n/a | yes |

modules/vpc-baseline/main.tf

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# --------------------------------------------------------------------------------------------------
44

55
resource "aws_cloudwatch_log_group" "default_vpc_flow_logs" {
6-
count = var.enabled ? 1 : 0
6+
count = var.enabled && var.enable_flow_logs ? 1 : 0
77

88
name = var.vpc_log_group_name
99
retention_in_days = var.vpc_log_retention_in_days
@@ -69,7 +69,7 @@ resource "aws_default_security_group" "default" {
6969
# --------------------------------------------------------------------------------------------------
7070

7171
resource "aws_flow_log" "default_vpc_flow_logs" {
72-
count = var.enabled ? 1 : 0
72+
count = var.enabled && var.enable_flow_logs ? 1 : 0
7373

7474
log_destination = aws_cloudwatch_log_group.default_vpc_flow_logs[0].arn
7575
iam_role_arn = var.vpc_flow_logs_iam_role_arn

modules/vpc-baseline/variables.tf

+5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ variable "enabled" {
33
default = true
44
}
55

6+
variable "enable_flow_logs" {
7+
description = "The boolean flag whether to enable VPC Flow Logs in the default VPC"
8+
default = true
9+
}
10+
611
variable "vpc_log_group_name" {
712
description = "The name of CloudWatch Logs group to which VPC Flow Logs are delivered."
813
}

variables.tf

+5
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,11 @@ variable "vpc_log_retention_in_days" {
209209
default = 365
210210
}
211211

212+
variable "vpc_enable_flow_logs" {
213+
description = "The boolean flag whether to enable VPC Flow Logs in default VPCs"
214+
default = true
215+
}
216+
212217
# --------------------------------------------------------------------------------------------------
213218
# Variables for config-baseline module.
214219
# --------------------------------------------------------------------------------------------------

vpc_baselines.tf

+16
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ module "vpc_baseline_ap-northeast-1" {
5555
vpc_log_group_name = var.vpc_log_group_name
5656
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
5757
vpc_log_retention_in_days = var.vpc_log_retention_in_days
58+
enable_flow_logs = var.vpc_enable_flow_logs
5859

5960
tags = var.tags
6061
}
@@ -70,6 +71,7 @@ module "vpc_baseline_ap-northeast-2" {
7071
vpc_log_group_name = var.vpc_log_group_name
7172
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
7273
vpc_log_retention_in_days = var.vpc_log_retention_in_days
74+
enable_flow_logs = var.vpc_enable_flow_logs
7375

7476
tags = var.tags
7577
}
@@ -85,6 +87,7 @@ module "vpc_baseline_ap-south-1" {
8587
vpc_log_group_name = var.vpc_log_group_name
8688
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
8789
vpc_log_retention_in_days = var.vpc_log_retention_in_days
90+
enable_flow_logs = var.vpc_enable_flow_logs
8891

8992
tags = var.tags
9093
}
@@ -100,6 +103,7 @@ module "vpc_baseline_ap-southeast-1" {
100103
vpc_log_group_name = var.vpc_log_group_name
101104
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
102105
vpc_log_retention_in_days = var.vpc_log_retention_in_days
106+
enable_flow_logs = var.vpc_enable_flow_logs
103107

104108
tags = var.tags
105109
}
@@ -115,6 +119,7 @@ module "vpc_baseline_ap-southeast-2" {
115119
vpc_log_group_name = var.vpc_log_group_name
116120
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
117121
vpc_log_retention_in_days = var.vpc_log_retention_in_days
122+
enable_flow_logs = var.vpc_enable_flow_logs
118123

119124
tags = var.tags
120125
}
@@ -130,6 +135,7 @@ module "vpc_baseline_ca-central-1" {
130135
vpc_log_group_name = var.vpc_log_group_name
131136
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
132137
vpc_log_retention_in_days = var.vpc_log_retention_in_days
138+
enable_flow_logs = var.vpc_enable_flow_logs
133139

134140
tags = var.tags
135141
}
@@ -145,6 +151,7 @@ module "vpc_baseline_eu-central-1" {
145151
vpc_log_group_name = var.vpc_log_group_name
146152
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
147153
vpc_log_retention_in_days = var.vpc_log_retention_in_days
154+
enable_flow_logs = var.vpc_enable_flow_logs
148155

149156
tags = var.tags
150157
}
@@ -160,6 +167,7 @@ module "vpc_baseline_eu-north-1" {
160167
vpc_log_group_name = var.vpc_log_group_name
161168
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
162169
vpc_log_retention_in_days = var.vpc_log_retention_in_days
170+
enable_flow_logs = var.vpc_enable_flow_logs
163171

164172
tags = var.tags
165173
}
@@ -175,6 +183,7 @@ module "vpc_baseline_eu-west-1" {
175183
vpc_log_group_name = var.vpc_log_group_name
176184
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
177185
vpc_log_retention_in_days = var.vpc_log_retention_in_days
186+
enable_flow_logs = var.vpc_enable_flow_logs
178187

179188
tags = var.tags
180189
}
@@ -190,6 +199,7 @@ module "vpc_baseline_eu-west-2" {
190199
vpc_log_group_name = var.vpc_log_group_name
191200
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
192201
vpc_log_retention_in_days = var.vpc_log_retention_in_days
202+
enable_flow_logs = var.vpc_enable_flow_logs
193203

194204
tags = var.tags
195205
}
@@ -205,6 +215,7 @@ module "vpc_baseline_eu-west-3" {
205215
vpc_log_group_name = var.vpc_log_group_name
206216
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
207217
vpc_log_retention_in_days = var.vpc_log_retention_in_days
218+
enable_flow_logs = var.vpc_enable_flow_logs
208219

209220
tags = var.tags
210221
}
@@ -220,6 +231,7 @@ module "vpc_baseline_sa-east-1" {
220231
vpc_log_group_name = var.vpc_log_group_name
221232
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
222233
vpc_log_retention_in_days = var.vpc_log_retention_in_days
234+
enable_flow_logs = var.vpc_enable_flow_logs
223235

224236
tags = var.tags
225237
}
@@ -235,6 +247,7 @@ module "vpc_baseline_us-east-1" {
235247
vpc_log_group_name = var.vpc_log_group_name
236248
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
237249
vpc_log_retention_in_days = var.vpc_log_retention_in_days
250+
enable_flow_logs = var.vpc_enable_flow_logs
238251

239252
tags = var.tags
240253
}
@@ -250,6 +263,7 @@ module "vpc_baseline_us-east-2" {
250263
vpc_log_group_name = var.vpc_log_group_name
251264
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
252265
vpc_log_retention_in_days = var.vpc_log_retention_in_days
266+
enable_flow_logs = var.vpc_enable_flow_logs
253267

254268
tags = var.tags
255269
}
@@ -265,6 +279,7 @@ module "vpc_baseline_us-west-1" {
265279
vpc_log_group_name = var.vpc_log_group_name
266280
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
267281
vpc_log_retention_in_days = var.vpc_log_retention_in_days
282+
enable_flow_logs = var.vpc_enable_flow_logs
268283

269284
tags = var.tags
270285
}
@@ -280,6 +295,7 @@ module "vpc_baseline_us-west-2" {
280295
vpc_log_group_name = var.vpc_log_group_name
281296
vpc_flow_logs_iam_role_arn = aws_iam_role.vpc_flow_logs_publisher.arn
282297
vpc_log_retention_in_days = var.vpc_log_retention_in_days
298+
enable_flow_logs = var.vpc_enable_flow_logs
283299

284300
tags = var.tags
285301
}

0 commit comments

Comments
 (0)