Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

406
Views
Terraform y AWS: modificar una política existente

Tengo una política de IAM existente adjunta a un rol. Cada vez que se crea un nuevo secreto en Secrets Manager, necesito agregar el nuevo ARN a la política. ¿Se puede hacer esto con Terraform? Logré importar la política en el archivo terraform.state, pero no sé cómo: 1) Agregar un nuevo ARN dentro de la lista de "Recursos" 2) Enviar el cambio a AWS

Así es como se ve la política ahora:

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "SECRET_ARN_1", "SECRET_ARN_2", "SECRET_ARN_3" ] }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "KMS_ARN" } ]

}

Y así es como necesito que se vea:

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "SECRET_ARN_1", "SECRET_ARN_2", "SECRET_ARN_3", "MY_BRAND_NEW_SECRET_ARN" ] }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "KMS_ARN" } ]

}

La siguiente importación funciona al importar la política existente al objeto aws_iam_policy.mysimplepolicy, pero no sé cómo proceder desde aquí.

 terraform import aws_iam_policy.mysimplepolicy <MY_POLICY_ARN>
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Parece que ya descubrió cómo importar la póliza a su estado. Ahora debe definir el recurso en su código de Terraform para que coincida con la política.

Primero, defina variables para los ARN:

 variable "secret_arns" { description = "A list of secret manager ARNs that the IAM policy should permit access to." type = list(string) } variable "kms_key_arns" { description = "A list of KMS Key ARNs that the IAM policy should permit access to." type = list(string) }

A continuación, defina el documento de política como fuente de datos, utilizando las variables:

 data "aws_iam_policy_document" "secret_access" { statement { sid = "SecretsAccess" actions = ["secretsmanager:GetSecretValue"] resources = var.secret_arns effect = "Allow" } statement { sid = "KMSAccess" actions = "kms:Decrypt" resources = var.kms_key_arns effect = "Allow" } }

Ahora cree una política utilizando la fuente de datos:

 resource "aws_iam_policy" "mysimplepolicy" { name = "MySimplePolicy" # Make sure this has the name you want policy = data.aws_iam_policy_document.secret_access.json }

Finalmente, cuando llame al código, pase los ARN en sus variables utilizando el método que prefiera. Podría ser desde un archivo terraform.tfvars o en la línea de comando usando la sintaxis -var o como resultado de otro módulo de Terraform que crea los secretos. Por ejemplo:

 terraform apply -var='secret_arns=["arn1", "arn2", <etc>]' -var='kms_key_arns=["key-arn1", "key-arn2"]'

Cada vez que agrega un elemento nuevo a una de las variables y ejecuta terraform apply , Terraform actualizará la política en consecuencia.

over 4 years ago · Santiago Trujillo Report

0

Otra opción, posiblemente más sencilla, sería utilizar la autorización basada en etiquetas. Es decir, modifique la política para otorgar acceso solo a secretos con una etiqueta específica y luego, cuando cree el secreto, agregue esa etiqueta. También hay documentos de ejemplo para hacer esto.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!