Skip to content

Commit 9256722

Browse files
feat: Restrict flow log policy to use log group ARNs (#1088)
* fix: Update AWS VPC module to use log group ARNs for flow log policy * refactor code to conditionally call AWS API based on create_vpc --------- Co-authored-by: Bryant Biggs <[email protected]>
1 parent 623b3e4 commit 9256722

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,10 @@ No modules.
349349
| [aws_vpn_gateway_route_propagation.intra](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpn_gateway_route_propagation) | resource |
350350
| [aws_vpn_gateway_route_propagation.private](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpn_gateway_route_propagation) | resource |
351351
| [aws_vpn_gateway_route_propagation.public](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpn_gateway_route_propagation) | resource |
352+
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
352353
| [aws_iam_policy_document.flow_log_cloudwatch_assume_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
353354
| [aws_iam_policy_document.vpc_flow_log_cloudwatch](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
355+
| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |
354356

355357
## Inputs
356358

vpc-flow-logs.tf

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
data "aws_region" "current" {
2+
# Call this API only if create_vpc and enable_flow_log are true
3+
count = var.create_vpc && var.enable_flow_log ? 1 : 0
4+
}
5+
6+
data "aws_caller_identity" "current" {
7+
# Call this API only if create_vpc and enable_flow_log are true
8+
count = var.create_vpc && var.enable_flow_log ? 1 : 0
9+
}
10+
111
locals {
212
# Only create flow log if user selected to create a VPC as well
313
enable_flow_log = var.create_vpc && var.enable_flow_log
@@ -8,6 +18,10 @@ locals {
818
flow_log_destination_arn = local.create_flow_log_cloudwatch_log_group ? try(aws_cloudwatch_log_group.flow_log[0].arn, null) : var.flow_log_destination_arn
919
flow_log_iam_role_arn = var.flow_log_destination_type != "s3" && local.create_flow_log_cloudwatch_iam_role ? try(aws_iam_role.vpc_flow_log_cloudwatch[0].arn, null) : var.flow_log_cloudwatch_iam_role_arn
1020
flow_log_cloudwatch_log_group_name_suffix = var.flow_log_cloudwatch_log_group_name_suffix == "" ? local.vpc_id : var.flow_log_cloudwatch_log_group_name_suffix
21+
flow_log_group_arns = [
22+
for log_group in aws_cloudwatch_log_group.flow_log :
23+
"arn:aws:logs:${data.aws_region.current[0].name}:${data.aws_caller_identity.current[0].account_id}:log-group:${log_group.name}:*"
24+
]
1125
}
1226

1327
################################################################################
@@ -115,6 +129,6 @@ data "aws_iam_policy_document" "vpc_flow_log_cloudwatch" {
115129
"logs:DescribeLogStreams",
116130
]
117131

118-
resources = ["*"]
132+
resources = local.flow_log_group_arns
119133
}
120134
}

0 commit comments

Comments
 (0)