Skip to content

Commit 88ee443

Browse files
shaunofneuronShaun Beckerbryantbiggs
authored
feat: Add cloudwatch logs policy to vpc-cni for networkpolicy logging (#504)
Co-authored-by: Shaun Becker <[email protected]> Co-authored-by: Bryant Biggs <[email protected]>
1 parent 88435a9 commit 88ee443

File tree

21 files changed

+153
-21
lines changed

21 files changed

+153
-21
lines changed

.pre-commit-config.yaml

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/antonbabenko/pre-commit-terraform
3-
rev: v1.88.0
3+
rev: v1.92.0
44
hooks:
55
- id: terraform_fmt
66
- id: terraform_wrapper_module_for_each
@@ -22,10 +22,9 @@ repos:
2222
- '--args=--only=terraform_required_providers'
2323
- '--args=--only=terraform_standard_module_structure'
2424
- '--args=--only=terraform_workspace_remote'
25-
- '--args=--only=terraform_unused_required_providers'
2625
- id: terraform_validate
2726
- repo: https://github.com/pre-commit/pre-commit-hooks
28-
rev: v4.5.0
27+
rev: v4.6.0
2928
hooks:
3029
- id: check-merge-conflict
3130
- id: end-of-file-fixer

examples/iam-role-for-service-accounts-eks/main.tf

+4-3
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,10 @@ module "velero_irsa_role" {
340340
module "vpc_cni_ipv4_irsa_role" {
341341
source = "../../modules/iam-role-for-service-accounts-eks"
342342

343-
role_name = "vpc-cni-ipv4"
344-
attach_vpc_cni_policy = true
345-
vpc_cni_enable_ipv4 = true
343+
role_name = "vpc-cni-ipv4"
344+
attach_vpc_cni_policy = true
345+
vpc_cni_enable_ipv4 = true
346+
vpc_cni_enable_cloudwatch_logs = true
346347

347348
oidc_providers = {
348349
ex = {

modules/iam-role-for-service-accounts-eks/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ No modules.
246246
| <a name="input_role_policy_arns"></a> [role\_policy\_arns](#input\_role\_policy\_arns) | ARNs of any policies to attach to the IAM role | `map(string)` | `{}` | no |
247247
| <a name="input_tags"></a> [tags](#input\_tags) | A map of tags to add the the IAM role | `map(any)` | `{}` | no |
248248
| <a name="input_velero_s3_bucket_arns"></a> [velero\_s3\_bucket\_arns](#input\_velero\_s3\_bucket\_arns) | List of S3 Bucket ARNs that Velero needs access to in order to backup and restore cluster resources | `list(string)` | <pre>[<br> "*"<br>]</pre> | no |
249+
| <a name="input_vpc_cni_enable_cloudwatch_logs"></a> [vpc\_cni\_enable\_cloudwatch\_logs](#input\_vpc\_cni\_enable\_cloudwatch\_logs) | Determines whether to enable VPC CNI permission to create CloudWatch Log groups and publish network policy events | `bool` | `false` | no |
249250
| <a name="input_vpc_cni_enable_ipv4"></a> [vpc\_cni\_enable\_ipv4](#input\_vpc\_cni\_enable\_ipv4) | Determines whether to enable IPv4 permissions for VPC CNI policy | `bool` | `false` | no |
250251
| <a name="input_vpc_cni_enable_ipv6"></a> [vpc\_cni\_enable\_ipv6](#input\_vpc\_cni\_enable\_ipv6) | Determines whether to enable IPv6 permissions for VPC CNI policy | `bool` | `false` | no |
251252

modules/iam-role-for-service-accounts-eks/policies.tf

+15
Original file line numberDiff line numberDiff line change
@@ -1480,6 +1480,21 @@ data "aws_iam_policy_document" "vpc_cni" {
14801480
}
14811481
}
14821482

1483+
# https://docs.aws.amazon.com/eks/latest/userguide/cni-network-policy.html#cni-network-policy-setup
1484+
dynamic "statement" {
1485+
for_each = var.vpc_cni_enable_cloudwatch_logs ? [1] : []
1486+
content {
1487+
sid = "CloudWatchLogs"
1488+
actions = [
1489+
"logs:DescribeLogGroups",
1490+
"logs:CreateLogGroup",
1491+
"logs:CreateLogStream",
1492+
"logs:PutLogEvents",
1493+
]
1494+
resources = ["*"]
1495+
}
1496+
}
1497+
14831498
statement {
14841499
sid = "CreateTags"
14851500
actions = ["ec2:CreateTags"]

modules/iam-role-for-service-accounts-eks/variables.tf

+6
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,12 @@ variable "attach_vpc_cni_policy" {
351351
default = false
352352
}
353353

354+
variable "vpc_cni_enable_cloudwatch_logs" {
355+
description = "Determines whether to enable VPC CNI permission to create CloudWatch Log groups and publish network policy events"
356+
type = bool
357+
default = false
358+
}
359+
354360
variable "vpc_cni_enable_ipv4" {
355361
description = "Determines whether to enable IPv4 permissions for VPC CNI policy"
356362
type = bool

wrappers/iam-account/versions.tf

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}

wrappers/iam-eks-role/versions.tf

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
+12-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
tls = {
10+
source = "hashicorp/tls"
11+
version = ">= 3.0"
12+
}
13+
}
314
}
+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}

wrappers/iam-policy/versions.tf

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}
+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}

wrappers/iam-role-for-service-accounts-eks/main.tf

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ module "wrapper" {
6161
role_policy_arns = try(each.value.role_policy_arns, var.defaults.role_policy_arns, {})
6262
tags = try(each.value.tags, var.defaults.tags, {})
6363
velero_s3_bucket_arns = try(each.value.velero_s3_bucket_arns, var.defaults.velero_s3_bucket_arns, ["*"])
64+
vpc_cni_enable_cloudwatch_logs = try(each.value.vpc_cni_enable_cloudwatch_logs, var.defaults.vpc_cni_enable_cloudwatch_logs, false)
6465
vpc_cni_enable_ipv4 = try(each.value.vpc_cni_enable_ipv4, var.defaults.vpc_cni_enable_ipv4, false)
6566
vpc_cni_enable_ipv6 = try(each.value.vpc_cni_enable_ipv6, var.defaults.vpc_cni_enable_ipv6, false)
6667
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}

wrappers/iam-user/versions.tf

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
310
}

0 commit comments

Comments
 (0)