Skip to content

Commit 24996cd

Browse files
feat: Add variable for adding statement for secretsmanager:CreateSecret (#414)
* feat: Add variable for adding statement for `secretsmanager:CreateSecret` * fix: Update wrappers to pass CI checks --------- Co-authored-by: Bryant Biggs <[email protected]>
1 parent 2eb955d commit 24996cd

File tree

6 files changed

+25
-6
lines changed

6 files changed

+25
-6
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
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.81.0
3+
rev: v1.82.0
44
hooks:
55
- id: terraform_fmt
66
- id: terraform_wrapper_module_for_each

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,12 @@ module "external_dns_irsa_role" {
155155
module "external_secrets_irsa_role" {
156156
source = "../../modules/iam-role-for-service-accounts-eks"
157157

158-
role_name = "external-secrets"
159-
attach_external_secrets_policy = true
160-
external_secrets_ssm_parameter_arns = ["arn:aws:ssm:*:*:parameter/foo"]
161-
external_secrets_secrets_manager_arns = ["arn:aws:secretsmanager:*:*:secret:bar"]
162-
external_secrets_kms_key_arns = ["arn:aws:kms:*:*:key/1234abcd-12ab-34cd-56ef-1234567890ab"]
158+
role_name = "external-secrets"
159+
attach_external_secrets_policy = true
160+
external_secrets_ssm_parameter_arns = ["arn:aws:ssm:*:*:parameter/foo"]
161+
external_secrets_secrets_manager_arns = ["arn:aws:secretsmanager:*:*:secret:bar"]
162+
external_secrets_kms_key_arns = ["arn:aws:kms:*:*:key/1234abcd-12ab-34cd-56ef-1234567890ab"]
163+
external_secrets_secrets_manager_create_permission = false
163164

164165
oidc_providers = {
165166
ex = {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ No modules.
211211
| <a name="input_external_dns_hosted_zone_arns"></a> [external\_dns\_hosted\_zone\_arns](#input\_external\_dns\_hosted\_zone\_arns) | Route53 hosted zone ARNs to allow External DNS to manage records | `list(string)` | <pre>[<br> "arn:aws:route53:::hostedzone/*"<br>]</pre> | no |
212212
| <a name="input_external_secrets_kms_key_arns"></a> [external\_secrets\_kms\_key\_arns](#input\_external\_secrets\_kms\_key\_arns) | List of KMS Key ARNs that are used by Secrets Manager that contain secrets to mount using External Secrets | `list(string)` | <pre>[<br> "arn:aws:kms:*:*:key/*"<br>]</pre> | no |
213213
| <a name="input_external_secrets_secrets_manager_arns"></a> [external\_secrets\_secrets\_manager\_arns](#input\_external\_secrets\_secrets\_manager\_arns) | List of Secrets Manager ARNs that contain secrets to mount using External Secrets | `list(string)` | <pre>[<br> "arn:aws:secretsmanager:*:*:secret:*"<br>]</pre> | no |
214+
| <a name="input_external_secrets_secrets_manager_create_permission"></a> [external\_secrets\_secrets\_manager\_create\_permission](#input\_external\_secrets\_secrets\_manager\_create\_permission) | Determins whether External Secrets may use secretsmanager:CreateSecret | `bool` | `false` | no |
214215
| <a name="input_external_secrets_ssm_parameter_arns"></a> [external\_secrets\_ssm\_parameter\_arns](#input\_external\_secrets\_ssm\_parameter\_arns) | List of Systems Manager Parameter ARNs that contain secrets to mount using External Secrets | `list(string)` | <pre>[<br> "arn:aws:ssm:*:*:parameter/*"<br>]</pre> | no |
215216
| <a name="input_force_detach_policies"></a> [force\_detach\_policies](#input\_force\_detach\_policies) | Whether policies should be detached from this role when destroying | `bool` | `true` | no |
216217
| <a name="input_fsx_lustre_csi_service_role_arns"></a> [fsx\_lustre\_csi\_service\_role\_arns](#input\_fsx\_lustre\_csi\_service\_role\_arns) | Service role ARNs to allow FSx for Lustre CSI create and manage FSX for Lustre service linked roles | `list(string)` | <pre>[<br> "arn:aws:iam::*:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/*"<br>]</pre> | no |

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,16 @@ data "aws_iam_policy_document" "external_secrets" {
506506
]
507507
resources = var.external_secrets_kms_key_arns
508508
}
509+
510+
dynamic "statement" {
511+
for_each = var.external_secrets_secrets_manager_create_permission ? [1] : []
512+
content {
513+
actions = [
514+
"secretsmanager:CreateSecret"
515+
]
516+
resources = var.external_secrets_secrets_manager_arns
517+
}
518+
}
509519
}
510520

511521
resource "aws_iam_policy" "external_secrets" {

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,12 @@ variable "external_secrets_kms_key_arns" {
183183
default = ["arn:aws:kms:*:*:key/*"]
184184
}
185185

186+
variable "external_secrets_secrets_manager_create_permission" {
187+
description = "Determins whether External Secrets may use secretsmanager:CreateSecret"
188+
type = bool
189+
default = false
190+
}
191+
186192
# FSx Lustre CSI
187193
variable "attach_fsx_lustre_csi_policy" {
188194
description = "Determines whether to attach the FSx for Lustre CSI Driver IAM policy to the role"

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ module "wrapper" {
3232
external_secrets_ssm_parameter_arns = try(each.value.external_secrets_ssm_parameter_arns, var.defaults.external_secrets_ssm_parameter_arns, ["arn:aws:ssm:*:*:parameter/*"])
3333
external_secrets_secrets_manager_arns = try(each.value.external_secrets_secrets_manager_arns, var.defaults.external_secrets_secrets_manager_arns, ["arn:aws:secretsmanager:*:*:secret:*"])
3434
external_secrets_kms_key_arns = try(each.value.external_secrets_kms_key_arns, var.defaults.external_secrets_kms_key_arns, ["arn:aws:kms:*:*:key/*"])
35+
external_secrets_secrets_manager_create_permission = try(each.value.external_secrets_secrets_manager_create_permission, var.defaults.external_secrets_secrets_manager_create_permission, false)
3536
attach_fsx_lustre_csi_policy = try(each.value.attach_fsx_lustre_csi_policy, var.defaults.attach_fsx_lustre_csi_policy, false)
3637
fsx_lustre_csi_service_role_arns = try(each.value.fsx_lustre_csi_service_role_arns, var.defaults.fsx_lustre_csi_service_role_arns, ["arn:aws:iam::*:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/*"])
3738
attach_karpenter_controller_policy = try(each.value.attach_karpenter_controller_policy, var.defaults.attach_karpenter_controller_policy, false)

0 commit comments

Comments
 (0)