당신은 AWS에있는 경우, 다음 번 봐 가지고 "비밀을 관리하는 올바른 방법" 에 의해 Segment.io AWS 블로그에 있습니다. 우리는 chamber
비밀을 관리하기 위해 모든 고객에게 사용 하는 것을 옹호 합니다. AWS Systems Manager Parameter Store (SSM)를 KMS 키와 함께 활용하여 작동합니다. 이를 통해 비밀이 유휴 (및 전송) 상태로 암호화되고 IAM으로 보안되며 CloudTrails로 감사 가능하며 런타임시 환경 변수로만 노출됩니다.
챔버를 구성 하고 KMS 키를 설정 한 후 비밀을 매개 변수 저장소에 씁니다.
chamber write db TF_VAR_DB_USER foobar
chamber write db TF_VAR_DB_PASS secret
그런 다음 terraform을 호출 할 때 이러한 비밀을 사용하십시오.
chamber exec db -- terraform plan
이것은 HCL 코드에서 DB_USER
및 변수를 정의했다고 가정합니다 DB_PASS
.
예를 들어, 이것을 추가 할 수 있습니다 variables.tf
variable "DB_USER" { }
variable "DB_PASS" { }
참고 : chamber
항상 환경 변수를 대문자로 내 보냅니다.
terraform-aws-kms-key
KMS 키 프로비저닝을 쉽게하기 위해 호출되는 테라 폼 모듈 을 제공합니다. chamber
여러 네임 스페이스와 함께 사용하는 방법과 테라 폼과 함께 챔버를 사용 하여 비밀을 관리 하는 방법에 대한 예제와 함께 자세한 문서를 확인하십시오 . 챔버 종속성 프로비저닝에 대한 전체 참조 예제 를 참조 하십시오 .
에 관해서 .tfstate
는 상태 파일에 일반 텍스트 비밀의 존재에 대해 정말 좋은 지적을 제시합니다. 이 문제를 해결할 방법이 없습니다. 테라 폼이 계획을 작성하기 위해 변경 사항을 계산하려면 "이전"및 "이후"상태를 알아야합니다. 따라서 필수 버전 관리 기능이있는 암호화 된 S3 버킷을 사용하는 것이 좋습니다. terraform-aws-tfstate-backend
모범 사례에 따라 모듈을 사용하여 버킷 및 DynamoDB 잠금 테이블을 프로비저닝합니다.