Home | 문태준 | 시스템어드민 메일링 | Sys Admin 세미나
Skip to end of metadata
Go to start of metadata

 

terraform을 쓰는데 gpg가 왜 필요한가?

terraform 에서 IAM user를 만들면 임의의 패스워드가 설정이 되며 이 패스워드는 평문이다.

또 AWS api key를 만들경우에도 api key 가 평문으로 state 파일등에 남는다. 이 부분을 pgp를 이용하여 암호화해서 처리할 때 필요한 내용이다.

이런 기능이 필요할 경우에 사용을 하면 되며 terraform에서 user, api key를 관리하지 않는다면 설정할 필요가 없다.

gpg 세팅

사전에 devops팀용 gpg 임의의 패스워드 생성. 

gpg 설치 및 세팅방법 :  GPG

terraform 에서 gpg 연동

참고자료

https://www.terraform.io/docs/providers/aws/r/iam_user_login_profile.html

https://rampart81.github.io/post/iam_config_terraform/

 

https://www.terraform.io/docs/providers/aws/r/iam_user_login_profile.html 문에서 pgp_key 항목을 보면 다음과 같다. base-64 인코딩된 pgp public key 를 이용하거나 keybase를 이용한다.

 pgp_key - (Required) Either a base-64 encoded PGP public key, or a keybase username in the form keybase:username.

 

NOTE: The encrypted password may be decrypted using the command line, for example: terraform output password | base64 --decode | keybase pgp decrypt.

 

gpg public key를 export 한다.

이 과정에서는 -a 옵션을 주어서 ascii 형태로 만들면 안된다.

또한 terraform에서 base-64 인코딩이 필요하므로 public key를 export 하고 base64 프로그램으로 변환을 할 수도 있고 terraform 에서 base64encode fcuntion을 이용할 수도 있다.

아래의 경우에 gpg 의 secret key 설정은 이미 된 상태에서 진행을 한다. export 할 때 자신에게 필요한 keyring 을 지정해야 한다. 이 부분은 gpg에서 --list-secret-keys 명령으로 확인을 한다.

 

gpg를 세팅하고 아래 terraform code를 실행한다.

terraform output password 출력한 것을 base64 decode 하고 gpg 로 풀어서 보면 된다.

Labels
  • No labels