Si está en AWS, eche un vistazo a "La forma correcta de administrar secretos" de Segment.io en el Blog de AWS. Recomendamos utilizar chamber
a todos nuestros clientes para administrar secretos. Funciona al aprovechar el almacén de parámetros de AWS Systems Manager (SSM) junto con las claves KMS. Esto garantiza que los secretos se cifren en reposo (y en tránsito), protegidos con IAM, auditables con CloudTrails y solo expuestos como variables de entorno en tiempo de ejecución.
Después de configurar la cámara y configurar la clave KMS, escribimos los secretos en el almacén de parámetros.
chamber write db TF_VAR_DB_USER foobar
chamber write db TF_VAR_DB_PASS secret
Luego usa esos secretos cuando llames terraform.
chamber exec db -- terraform plan
Esto supone que ha definido una variable llamada DB_USER
y DB_PASS
en su código HCL.
Por ejemplo, podría agregar esto a variables.tf
variable "DB_USER" { }
variable "DB_PASS" { }
NOTA: chamber
siempre exportará variables de entorno en mayúsculas
Proporcionamos un módulo de terraforma llamado terraform-aws-kms-key
para facilitar el aprovisionamiento de la clave KMS. Consulte nuestra documentación detallada con ejemplos de cómo usar chamber
con múltiples espacios de nombres, así como cómo usar la cámara con terraform para administrar secretos. Vea nuestro ejemplo de referencia completo para aprovisionar dependencias de la cámara.
En cuanto a .tfstate
, traes un punto realmente bueno sobre la existencia de secretos de texto sin formato en el archivo de estado. Realmente no hay forma de evitar esto. Para que Terraform calcule los cambios para construir un plan, necesita conocer el estado "antes" y "después". Por este motivo, recomendamos utilizar un bucket S3 cifrado con versiones obligatorias. Utilice el terraform-aws-tfstate-backend
módulo para aprovisionar un cubo y una mesa de bloqueo DynamoDB de acuerdo con las mejores prácticas.