Intro
오늘은 terraform 으로 IAM User를 생성하고 그 이후에 Password를 설정하는 방법에 대해 알아보도록 하겠습니다. 우선 keybase라는 오픈소스 솔루션을 설치해야 합니다.
keybase 사전 설치
brew install keybase
keybase설치 이후 작업
- keybase 계정생성
- myprofile - setting - add pgp
keybase로 pgg 설치가 잘되었는지 확인
keybase_username 에 내 계정명 입력
curl https://keybase.io/keybase_username/key.asc
샘플 소스
https://github.com/kimdragon50/terraform/tree/master/iam_userpasswd_exmaple
샘플 소스 설명
resource "aws_iam_user" "example" {
name = "example"
path = "/"
force_destroy = true
}
resource "aws_iam_user_login_profile" "example" {
user = aws_iam_user.example.name
pgp_key = var.pgp_key
}
우선 aws_iam_user
로 유저를 생성하고 나서 aws_iam_user_login_profile
의 pgp_key 파라미터를 사용하여 password를 생성합니다.
pgp_key는 keybase를 사용하여 지정할 수 있습니다. 따라서 keybase를 사전에 설치하고 account를 생성한다음 pgp key를 추가해야합니다.
그 이후 outputs으로 암호화된 비밀번호password
와 이를 복호화할 수 있는 명령어keybase_password_decrypt_command
를 출력합니다.
output "password" {
value = aws_iam_user_login_profile.example.encrypted_password
}
output "keybase_password_decrypt_command" {
# https://stackoverflow.com/questions/36565256/set-the-aws-console-password-for-iam-user-with-terraform
description = "Command to decrypt the Keybase encrypted password. Returns empty string if pgp_key is not from keybase"
value = local.keybase_password_decrypt_command
}
keybase_password_decrypt_command
값은 아래와 같이 출력이 되며 \
를 제외하고 입력하면 생성된 비밀번호의 출력값을 확인할 수 있습니다.
echo \"asdfasdfsacvasdfsadfVoJDYXOierfFQ7SLn8QZcvyHAmQ5UbsIIP1GXJK3UtZdM6lX3gndDSUQkdvah8vzbimrH5Ovyd5HSe025plZV7cK9Ub4G6dRgqrMEk+wyaUuhNWaSdRzmYfMlRLaCFGFpw1vtgsadfasdfFBbz+KiGYU9GJf40bpOHgNPgoB7rGHlFO3XYruydxTasdfasdfZkXCe6zUJd26zGQRQu7Q3BYf6SsL0iIj28n6bLTSqkOr8pZBOl8MCYYOBgDcStSyvA2rJcfoVhyPx+sS029HxnjSOFRscZAwyZjVQRZ2YxvDMLHdMxR338TZ++GyLs6fD8F2hmrmow8rRdGuwDKcXMG84Qi5Lyn8upWLPHgUUChrK6UmMjXonSV0d5Q8QmGrXZC/I8poIYgtzlbXCA+Rl5hIm3W9jJ+HSiZMYamnMnUSlz/UQ5FFZMUK10yhjbkadQ+Wy/ge2t7AOFkMsI50Rt9GTVtiF1bJvGoRYv3FIUcgRmbQh0ohDDX6c1ubwTob0zXtGrKc7/95sh1X0MqFTu3C+etfLhnSRQGtiTw23nkRFw8lG5pudV0hSJ5SbVasdfasdf\" | base64 --decode | keybase pgp decrypt
마치며
실제로 클라우드 인프라를 운영하다보면 새로운 직원이 입사할때마다 또는 새로운 협력사 분들이 조인될때마다 iam user를 일일히 생성하고 일일히 이메일또는 특정 기업 메신저를 통해 전달해야하는 번거로움이 발생합니다. 물론.. 그래도 됩니다만... devops팀에 소속된 저로서는 용납이안됩니다. 이는 완전 자동화라는 devops사상과 맞지 않습니다. 따라서 이를 자동화 하고 싶습니다. 어떻게 해야할까요?? 위 방법으로는 복호화된 비밀번호를 깔끔하게 확인하여 전달 할 수가 없습니다. 사용자에게 저 흉측한 output 값을 전달할 것인가요? 아니죠... 해결책은 aws event bridge를 사용하여 iam user가 생성되면 lambda를 생성하여 자동으로 비밀번호를 생성하고 메일도 보낼 수 있게 할 수 있습니다. 그 방법은 다음 포스팅에서 알려드리도록 하겠습니다.
'IT > Terraform' 카테고리의 다른 글
[Terraform ] Autoscaling Group에 ELB할당하기 (0) | 2022.06.28 |
---|---|
[Terraform] 특정 파일을 zip으로 변환하기 (Lambda함수 배포) (0) | 2022.06.27 |
[Terraform] 테라폼 Best practice 네이밍 편 (0) | 2022.06.18 |
[Terraform] Terragrunt 란? (Terragrunt 사용법과 활용방법) (0) | 2022.06.17 |
[Terraform] EKS Cluster 삭제시 aws-auth 에러 해결하기 (0) | 2022.06.16 |