CloudNet@ 팀의 가시다님께서 Leading 하시는 A101 Study 3주차 스터디 내용 정리
해당 스터디는 '앤서블로 시작하는 인프라 자동화' 책을 기반으로 진행하였습니다.
실습 환경은 'Control Node 1 대 + Target Node 3대' 로 구성하였습니다.
이번 글에서는 Ansible Vault 사용 시 AWS SecretManager 를 활용하는 방법을 알아보겠습니다.
1. 개요
앤서블에서는 민감한 정보를 앤서블 Vault 를 통해 암호화 할 수 있습니다.
그리고 앤서블 Vault 암호화를 위한 암호를 AWS SecretManager 를 활용하여 저장할 수 있습니다.
1.1. 플레이북 개발
이전에 활용했던 Linux 계정 생성 플레이북을 재활용 해보겠습니다.
- ansible.cfg
- inventory file
- PlayBook File (create_user.yml)
- Variable File (vars/secret.yml)
해당 파일이 Vault 암호화를 사용하는 파일입니다.
암호는 임의로 'qwe123' 으로 설정하겠습니다.
1.2. 플레이북 실행
앤서블 Vault 를 통해 암호화한 파일이 포함된 플레이북을 실행하려면 아래와 같은 명령어를 입력합니다.
그러면 암호를 입력하는 과정이 표시됩니다.
1.3. AWS SecretManager 와 Vault 연동
암호를 잊어버리거나 서버 내부에 저장될 경우 보안 위험이 발생할 수 있습니다.
AWS SecretManager 와 같은 외부 저장소에 암호를 저장하고 이를 사용하는 방법에 대해서 알아보겠습니다.
우선 AWS SecretManager 에 저장할 암호 파일을 생성해줍니다. (AWS 콘솔에서 작업해도 무방합니다.)
해당 파일은 SecretManager 에 암호 저장 후 삭제합니다.
vault-password.json 파일 생성 후 데이터 입력
AWS CLI 를 사용하여 secret 생성
AWS SecretManger 의 암호를 가져오는 스크립트 파일 생성
- get-vault-password.sh
1.4. 앤서블 플레이북 실행 ( with SecretManager )
이 방법을 사용하면 Secret Manger 에 저장된 암호를 사용해서 Ansible Vault 의 암/복호화가 가능합니다.
스크립트 파일 자체를 사용하지 않고 Secret Manager 에서 암호를 가져올 수 있는 방법이 있는 지 확인이 필요한데,
아마 앤서블의 aws 컬렉션을 사용하면 가능할 듯 싶습니다.
참고 문서
https://malwareanalysis.tistory.com/692
- Look up secrets stored in AWS Secrets Manager
https://docs.ansible.com/ansible/latest/collections/amazon/aws/secretsmanager_secret_lookup.html#ansible-collections-amazon-aws-secretsmanager-secret-lookup