Skip to content

Commit 7c58eb1

Browse files
authored
fix: Conditionally create default NonSecureTransportAccessedViaMountTarget policy statement (#35)
1 parent 715f30c commit 7c58eb1

File tree

5 files changed

+41
-32
lines changed

5 files changed

+41
-32
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ No modules.
159159
| <a name="input_create_security_group"></a> [create\_security\_group](#input\_create\_security\_group) | Determines whether a security group is created | `bool` | `true` | no |
160160
| <a name="input_creation_token"></a> [creation\_token](#input\_creation\_token) | A unique name (a maximum of 64 characters are allowed) used as reference when creating the Elastic File System to ensure idempotent file system creation. By default generated by Terraform | `string` | `null` | no |
161161
| <a name="input_deny_nonsecure_transport"></a> [deny\_nonsecure\_transport](#input\_deny\_nonsecure\_transport) | Determines whether `aws:SecureTransport` is required when connecting to elastic file system | `bool` | `true` | no |
162+
| <a name="input_deny_nonsecure_transport_via_mount_target"></a> [deny\_nonsecure\_transport\_via\_mount\_target](#input\_deny\_nonsecure\_transport\_via\_mount\_target) | Determines whether to use the common policy option for denying nonsecure transport which allows all AWS principals when accessed via EFS mounted target | `bool` | `true` | no |
162163
| <a name="input_enable_backup_policy"></a> [enable\_backup\_policy](#input\_enable\_backup\_policy) | Determines whether a backup policy is `ENABLED` or `DISABLED` | `bool` | `true` | no |
163164
| <a name="input_encrypted"></a> [encrypted](#input\_encrypted) | If `true`, the disk will be encrypted | `bool` | `true` | no |
164165
| <a name="input_kms_key_arn"></a> [kms\_key\_arn](#input\_kms\_key\_arn) | The ARN for the KMS encryption key. When specifying `kms_key_arn`, encrypted needs to be set to `true` | `string` | `null` | no |

examples/complete/main.tf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@ module "efs" {
4242
}
4343

4444
# File system policy
45-
attach_policy = true
46-
bypass_policy_lockout_safety_check = false
45+
attach_policy = true
46+
deny_nonsecure_transport_via_mount_target = false
47+
bypass_policy_lockout_safety_check = false
4748
policy_statements = [
4849
{
4950
sid = "Example"

main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ data "aws_iam_policy_document" "policy" {
103103
}
104104

105105
dynamic "statement" {
106-
for_each = var.deny_nonsecure_transport ? [1] : []
106+
for_each = var.deny_nonsecure_transport_via_mount_target ? [1] : []
107107

108108
content {
109109
sid = "NonSecureTransportAccessedViaMountTarget"

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ variable "deny_nonsecure_transport" {
108108
default = true
109109
}
110110

111+
variable "deny_nonsecure_transport_via_mount_target" {
112+
description = "Determines whether to use the common policy option for denying nonsecure transport which allows all AWS principals when accessed via EFS mounted target"
113+
type = bool
114+
default = true
115+
}
116+
111117
################################################################################
112118
# Mount Target(s)
113119
################################################################################

wrappers/main.tf

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,34 @@ module "wrapper" {
33

44
for_each = var.items
55

6-
access_points = try(each.value.access_points, var.defaults.access_points, {})
7-
attach_policy = try(each.value.attach_policy, var.defaults.attach_policy, true)
8-
availability_zone_name = try(each.value.availability_zone_name, var.defaults.availability_zone_name, null)
9-
bypass_policy_lockout_safety_check = try(each.value.bypass_policy_lockout_safety_check, var.defaults.bypass_policy_lockout_safety_check, null)
10-
create = try(each.value.create, var.defaults.create, true)
11-
create_backup_policy = try(each.value.create_backup_policy, var.defaults.create_backup_policy, true)
12-
create_replication_configuration = try(each.value.create_replication_configuration, var.defaults.create_replication_configuration, false)
13-
create_security_group = try(each.value.create_security_group, var.defaults.create_security_group, true)
14-
creation_token = try(each.value.creation_token, var.defaults.creation_token, null)
15-
deny_nonsecure_transport = try(each.value.deny_nonsecure_transport, var.defaults.deny_nonsecure_transport, true)
16-
enable_backup_policy = try(each.value.enable_backup_policy, var.defaults.enable_backup_policy, true)
17-
encrypted = try(each.value.encrypted, var.defaults.encrypted, true)
18-
kms_key_arn = try(each.value.kms_key_arn, var.defaults.kms_key_arn, null)
19-
lifecycle_policy = try(each.value.lifecycle_policy, var.defaults.lifecycle_policy, {})
20-
mount_targets = try(each.value.mount_targets, var.defaults.mount_targets, {})
21-
name = try(each.value.name, var.defaults.name, "")
22-
override_policy_documents = try(each.value.override_policy_documents, var.defaults.override_policy_documents, [])
23-
performance_mode = try(each.value.performance_mode, var.defaults.performance_mode, null)
24-
policy_statements = try(each.value.policy_statements, var.defaults.policy_statements, [])
25-
provisioned_throughput_in_mibps = try(each.value.provisioned_throughput_in_mibps, var.defaults.provisioned_throughput_in_mibps, null)
26-
replication_configuration_destination = try(each.value.replication_configuration_destination, var.defaults.replication_configuration_destination, {})
27-
security_group_description = try(each.value.security_group_description, var.defaults.security_group_description, null)
28-
security_group_name = try(each.value.security_group_name, var.defaults.security_group_name, null)
29-
security_group_rules = try(each.value.security_group_rules, var.defaults.security_group_rules, {})
30-
security_group_use_name_prefix = try(each.value.security_group_use_name_prefix, var.defaults.security_group_use_name_prefix, false)
31-
security_group_vpc_id = try(each.value.security_group_vpc_id, var.defaults.security_group_vpc_id, null)
32-
source_policy_documents = try(each.value.source_policy_documents, var.defaults.source_policy_documents, [])
33-
tags = try(each.value.tags, var.defaults.tags, {})
34-
throughput_mode = try(each.value.throughput_mode, var.defaults.throughput_mode, null)
6+
access_points = try(each.value.access_points, var.defaults.access_points, {})
7+
attach_policy = try(each.value.attach_policy, var.defaults.attach_policy, true)
8+
availability_zone_name = try(each.value.availability_zone_name, var.defaults.availability_zone_name, null)
9+
bypass_policy_lockout_safety_check = try(each.value.bypass_policy_lockout_safety_check, var.defaults.bypass_policy_lockout_safety_check, null)
10+
create = try(each.value.create, var.defaults.create, true)
11+
create_backup_policy = try(each.value.create_backup_policy, var.defaults.create_backup_policy, true)
12+
create_replication_configuration = try(each.value.create_replication_configuration, var.defaults.create_replication_configuration, false)
13+
create_security_group = try(each.value.create_security_group, var.defaults.create_security_group, true)
14+
creation_token = try(each.value.creation_token, var.defaults.creation_token, null)
15+
deny_nonsecure_transport = try(each.value.deny_nonsecure_transport, var.defaults.deny_nonsecure_transport, true)
16+
deny_nonsecure_transport_via_mount_target = try(each.value.deny_nonsecure_transport_via_mount_target, var.defaults.deny_nonsecure_transport_via_mount_target, true)
17+
enable_backup_policy = try(each.value.enable_backup_policy, var.defaults.enable_backup_policy, true)
18+
encrypted = try(each.value.encrypted, var.defaults.encrypted, true)
19+
kms_key_arn = try(each.value.kms_key_arn, var.defaults.kms_key_arn, null)
20+
lifecycle_policy = try(each.value.lifecycle_policy, var.defaults.lifecycle_policy, {})
21+
mount_targets = try(each.value.mount_targets, var.defaults.mount_targets, {})
22+
name = try(each.value.name, var.defaults.name, "")
23+
override_policy_documents = try(each.value.override_policy_documents, var.defaults.override_policy_documents, [])
24+
performance_mode = try(each.value.performance_mode, var.defaults.performance_mode, null)
25+
policy_statements = try(each.value.policy_statements, var.defaults.policy_statements, [])
26+
provisioned_throughput_in_mibps = try(each.value.provisioned_throughput_in_mibps, var.defaults.provisioned_throughput_in_mibps, null)
27+
replication_configuration_destination = try(each.value.replication_configuration_destination, var.defaults.replication_configuration_destination, {})
28+
security_group_description = try(each.value.security_group_description, var.defaults.security_group_description, null)
29+
security_group_name = try(each.value.security_group_name, var.defaults.security_group_name, null)
30+
security_group_rules = try(each.value.security_group_rules, var.defaults.security_group_rules, {})
31+
security_group_use_name_prefix = try(each.value.security_group_use_name_prefix, var.defaults.security_group_use_name_prefix, false)
32+
security_group_vpc_id = try(each.value.security_group_vpc_id, var.defaults.security_group_vpc_id, null)
33+
source_policy_documents = try(each.value.source_policy_documents, var.defaults.source_policy_documents, [])
34+
tags = try(each.value.tags, var.defaults.tags, {})
35+
throughput_mode = try(each.value.throughput_mode, var.defaults.throughput_mode, null)
3536
}

0 commit comments

Comments
 (0)