2

aws cli 도구를 통해 AWS에서 새로운 RDS 인스턴스를 만들 때 AWS KMS 키로 암호화 된 마스터 비밀번호를 사용할 수 있습니까? 예. http://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.htmlAWS : KMS로 암호화 된 마스터 비밀번호를 사용하여 RDS 인스턴스 만들기

내 dev 환경 (terraform 또는 클라우드 형성 사용)에 일반 텍스트 암호를 저장하지 않고 AWS 구성 요소에 의해 투명하게 암호가 해독되는 암호화 된 값 대신에 묻는 것입니다.

답변

3

CLI로이 작업을 수행하려는 경우 KMS 키를 사용하여 암호를 항상 암호화 한 다음 두 개의 명령을 실행하여 암호를 해독하고 데이터베이스를 만들 수 있습니다.

그래서 이런 식으로 뭔가를 작동 할 수 있습니다 :

aws rds create-instance ... \ 
--master-username admin-user \ 
--master-user-password `aws kms decrypt --ciphertext-blob fileb://path/to/kms/encrypted/file/with/password --output text --query Plaintext | base64 --decode` 

아직도 그때 previously answered a question along similar lines를했습니다 데이터베이스 인스턴스를 생성 Terraform을 사용하고자합니다. 이 질문은 데이터베이스가 원격 상태 파일에 저장되는 것에 더 관심이 있지만.

코드에 암호를 똑같이 두어야한다면 암호에 변수를 사용하고 passing that in on the CLI을 사용하거나 environment variable을 사용하는 것이 좋습니다.

동일하게 암호를 해독하는 데 aws_kms_secret data source을 사용할 수 있습니다. Terraform에서 다음

$ echo -n 'master-password' > plaintext-password 
$ aws kms encrypt \ 
> --key-id ab123456-c012-4567-890a-deadbeef123 \ 
> --plaintext fileb://plaintext-example \ 
> --encryption-context foo=bar \ 
> --output text --query CiphertextBlob 
AQECAHgaPa0J8WadplGCqqVAr4HNvDaFSQ+NaiwIBhmm6qDSFwAAAGIwYAYJKoZIhvcNAQcGoFMwUQIBADBMBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDI+LoLdvYv8l41OhAAIBEIAfx49FFJCLeYrkfMfAw6XlnxP23MmDBdqP8dPp28OoAQ== 

을 그리고 : 그것은 비록 로그 및 상태 파일에 암호를 누출 답변 락스 테디에 대한

data "aws_kms_secret" "db" { 
    secret { 
    name = "master_password" 
    payload = "AQECAHgaPa0J8WadplGCqqVAr4HNvDaFSQ+NaiwIBhmm6qDSFwAAAGIwYAYJKoZIhvcNAQcGoFMwUQIBADBMBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDI+LoLdvYv8l41OhAAIBEIAfx49FFJCLeYrkfMfAw6XlnxP23MmDBdqP8dPp28OoAQ==" 

    context { 
     foo = "bar" 
    } 
    } 
} 

resource "aws_rds_cluster" "rds" { 
    master_username = "root" 
    master_password = "${data.aws_kms_secret.db.master_password}" 

    # ... 
} 
+0

감사합니다! 나는'aws_kms_secret'을 이미 시험해 보았습니다. 그러나 예상대로 작동하지 않습니다. 개발자들에게 https://github.com/hashicorp/terraform/issues/12800 문서를 명확히 해달라고 요청했습니다. 이것은 실제로 Terraform을 사용할 때 제가 선호하는 방법이 될 것입니다. 나는 아직도 그것을 연구 중이다. – derFunk

+0

이것이 작동하지 않는다면, 언급 한 바와 같이 암호화 된 파일에서 해독 된 일반 텍스트를 가져와 Terraform이 사용될 때 사용할 환경 변수로 내보내는 쉘 스크립트를 실행할 수 있습니다. – ydaetskcoR

+0

그러나 재미있는 점은 다음과 같습니다. 키 ID와 함께 암호화 된 암호를 RDS에 전달하고 RDS가 해당 유스 케이스에 대해 투명하게 암호 해독 할 수 없으 리라고 기대합니까? – derFunk

관련 문제