본문으로 바로가기
반응형

Intro

오늘은 terraform 으로 IAM User를 생성하고 그 이후에 Password를 설정하는 방법에 대해 알아보도록 하겠습니다. 우선 keybase라는 오픈소스 솔루션을 설치해야 합니다.

keybase 사전 설치

brew install keybase

keybase설치 이후 작업

  1. keybase 계정생성
  2. 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를 생성하여 자동으로 비밀번호를 생성하고 메일도 보낼 수 있게 할 수 있습니다. 그 방법은 다음 포스팅에서 알려드리도록 하겠습니다.

반응형