[aws] 자격증명 노출 방지(AWS Vault 설정)

2023. 1. 8. 02:01✅ STUDY/AWS

안녕하세요 🙂
오늘은 aws vault에 대해 알아보려 합니다.
이 글을 보신다면, 보안을 위해 무조건 설정해주세요❗️


AWS Vault

AWS Vault는 99designs에서 개발한 개발 환경에서 AWS 자격 증명을 안전하게 저장하고 액세스하는 도구입니다.
기존의 방식대로 환경변수/credential/config 파일 등에 plain text로 설정해 사용하는 것이 아닌, macOS Keychain/Windows Credential Manager/Secret Service(Gnome Keyring, KWallet)/Pass/Encrypted file 등을 백엔드로 사용해 자격증명을 저장합니다. 또한 자체적으로 Amazon의 STS 서비스를 사용해 임시 자격 증명을 발급받아 사용하고, 임시 자격 증명은 단기간에 만료되므로 자격 증명 유출 위험이 줄어듭니다.


배경

AWS Console이 아닌 프로그래밍 방식으로 AWS 서비스와 상호작용할 때, AWS CLI 또는 AWS SDK를 사용하게 됩니다.
이때, 어떤 AWS 계정/리전과 상호작용해야 할지는 AWS credentials(자격증명)을 통해 결정됩니다.

아마 대부분의 사용자는 IAM User의 장기 자격 증명(access key, secret access key)를 아래의 3가지 방법 중 하나를 선택하여 사용하고 있을 것 같습니다.

  1. 환경 변수
  2. 공유 자격 증명 파일( ~/.aws/credentials)
  3. AWS 구성 파일( ~/.aws/config)

위 3가지 방법 중 어떤 것을 사용하더라도 access key, secret access key는 암호화되지 않은 채로 저장됩니다.
그래서, 아래의 경우가 생긴다면 보안에 큰 위협이 될 것입니다.

  1. 자격 증명이 있는 엔지니어의 노트북을 도난당했거나 잘못 놓은 경우
  2. 자격 증명을 도용하는 엔지니어 랩탑의 맬웨어
  3. 실수로 Github 또는 다른 곳에 AWS 자격 증명을 게시
  4. 자격 증명이 만료되지 않은 퇴사한 직원

이러한 보안적 문제를 해결하고자, 99designs에서 개발한 도구가 aws vault 입니다.
오늘은 aws vault를 설치하고 사용해보도록 하겠습니다!

설치

by downloading the latest release
on macOS with Homebrew Cask: brew install --cask aws-vault
on macOS with MacPorts: port install aws-vault
on Windows with Chocolatey: choco install aws-vault
on Windows with Scoop: scoop install aws-vault
on Linux with Homebrew on Linux: brew install aws-vault
on Arch Linux: pacman -S aws-vault
on Gentoo Linux: emerge --ask app-admin/aws-vault (enable Guru first)
on FreeBSD: pkg install aws-vault
on OpenSUSE: enable devel:languages:go repo then zypper install aws-vault
with Nix: nix-env -i aws-vault
with asdf-vm: asdf plugin-add aws-vault https://github.com/karancode/asdf-aws-vault.git && asdf install aws-vault <version>

 

설정 방법

- 자격 증명 저장하기

$ aws-vault add {{PROFILE_NAME}}
Enter Access Key ID: ...
Enter Secret Access Key: ...
Added credentials to profile "<PROFILE_NAME>" in vault

저는 milkyykim이라는 자격 증명을 vault에 추가하였습니다.


- 등록한 자격 증명 리스트 확인하기

$ aws-vault ls

 

- AWS CLI 사용하기

$ aws-vault exec {{PROFILE-NAME}} -- {{AWS CLI}}

현재 해당 계정의 s3 버킷 목록을 조회하려면, 아래와 같이 사용하면 됩니다.

$ aws-vault exec milkyykim -- aws s3 ls

 

- Terraform에서 사용하기

$ aws-vault exec milkyykim -- terraform plan

 

- CDK에서 사용하기

$ aws-vault exec milkyykim -- cdk deploy

 

기존에 사용 중인 ~/.aws/credentials 파일 내부의 자격증명 정보는 보안을 위해 삭제하시고, aws-vault를 사용해 더욱 안전한 aws를 경험하셨으면 좋겠습니다😊


참고)

 

Securing AWS Credentials on Engineer's Machines - 99designs

The on-demand nature of Amazon Web Services has changed how technology companies think about infrastructure. It lets early stage start-ups…

99designs.com.au

 

GitHub - 99designs/aws-vault: A vault for securely storing and accessing AWS credentials in development environments

A vault for securely storing and accessing AWS credentials in development environments - GitHub - 99designs/aws-vault: A vault for securely storing and accessing AWS credentials in development envi...

github.com