Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

412
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda