일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- hashicorp
- 커널 파라미터
- 리눅스
- kv
- 자동화
- auth methods
- VIRT
- 통합 풀 백업
- 인프라
- Role
- 파일시스템
- SSH OTP
- key/value
- devops
- 유닉스
- 구성관리
- Secret Engine
- 앤서블
- vault agent
- DATA 백업
- 시스템
- IAC
- 전체 백업
- SHR
- Vault
- secret engines
- 차분 백업
- backend storage
- REST API
- 백업
- Today
- Total
클라우드 아카이브
[암호화/복호화] ansible-vault를 이용한 암호화/복호화 본문
[암호화/복호화] ansible-vault를 이용한 암호화/복호화
Cloud Engineer 2022. 2. 2. 21:38개요
회사에서 앤서블을 도입하여 사용하다보면 회사가 종사하고 있는 산업의 법률 상 크리티컬한 데이터를 반드시 암호화해야한다거나 업무 상 중요한 데이터를 암호화해야되는 경우가 발생할 수 있습니다. 앤서블은 Vault와 연계하여 사용자의 패스워드 및 중요한 데이터가 입력되어있는 인벤토리(inventory)라거나 변수 파일(/vars 하위 파일) 등을 암호화/복호화하는 기능을 제공합니다. 덕분에 산업의 구분 없이 시스템 구축/운영 업무에 앤서블을 도입할 수 있도록 해줍니다. 본 포스팅에서는 Vault에 대한 간단한 개념을 소개하고, Ansible Vault을 사용하여 파일을 암호화/복호화할 수 있는 방법에 대해 포커싱을 맞춰 알아보는 시간을 가지겠습니다.
Vault란?
Hashicorp에서 개발된 크로스플랫폼 패스워드 및 인증 관리 시스템입니다. 외부에 공개되면 안되는 패스워드, API 키, 토큰 등을 암호화하여 저장 및 관리합니다.
Ansible Vault란?
패스워드 및 Key와 같은 크리티컬한 데이터를 일반 텍스트(plaintext)가 아닌 암호화된 파일에 보관할 수 있는 기능입니다. 해당 기능은 ansible을 설치할 때 같이 설치되며 ansible-vault라는 CLI 명령어를 통해 사용할 수 있습니다. 모든 파일은 기본적으로 AES 방식을 기반으로 암호화/복호화합니다.
Ansible Vault 기능 소개
암호화된 파일 생성
# 암호화된 파일 신규 생성
$ ansible-vault create inventory.yml
New Vault password:
Confirm New Vault password:
$
Vault를 통해 해당 파일을 사용할 경우 필요한 패스워드를 입력합니다. 패스워드를 입력 후, Vault는 $EDITOR라는 환경변수를 참조하여 편집기를 실행하며 파일 편집 작업을 마치면 inventory.yml라는 파일은 암호화된 데이터로 저장됩니다. 만약 기존에 존재하는 파일과 동일한 파일명으로 암호화된 파일을 생성하고자 할 경우 아래와 같은 에러 메세지와 함께 생성이 안 됩니다.
# tmp라는 이름을 가진 파일 생성 및 데이터 입력
$ touch tmp
$ vi tmp
$ cat tmp
123
# 기존에 존재하는 tmp 파일명으로 암호화된 신규 파일 생성 시, ERROR 메세지와 함께 생성이 안 됨
$ ansible-vault create tmp
New Vault password:
Confirm New Vault password:
ERROR! tmp exists, please use 'edit' instead
$
기존 파일을 암호화
# 기존에 존재하는 파일을 암호화 (1개)
$ ansible-vault encrypt inventory.INI
New Vault password:
Confirm New Vault password:
Encryption successful
# 기존에 존재하는 파일을 암호화 (여러 개)
$ ansible-vault encrypt 1.txt 2.txt
New Vault password:
Confirm New Vault password:
Encryption successful
# 암호화된 파일을 조회할 경우 아래와 같은 내용을 볼 수 있음
$ cat inventory.INI
$ANSIBLE_VAULT;1.1;AES256
34646539333264386335643661346338343630333133663338353031393239626234346631373830
343565627373134363930336139353966613836356266363362650a636239626366633464636638646239
3730306265613563373245635673563456523453241512346345673833383863613663323862326266613433616166333363616166
35383566383437383433626533393963366630346136303738303043764257436348345743951651561561353861316431032765363930363866
3135626135663531363462323232316336313731313639313830563156156156168951865156302356065305616895156
Vault를 사용하여 기존에 존재하는 1개 이상의 파일을 암호화할 수 있습니다.
암호화된 파일 편집
$ ansible-vault eidt inventory.INI
Vault password:
암호화된 파일을 복호화하지 않은 상태에서 편집하려면 위와 같이 하면 됩니다.
암호화된 파일 패스워드 변경
$ ansible-vault rekey inventory.INI
Vault로 암호화된 파일을 사용할 때 필요한 패스워드를 변경하려면 위와 같이 하면 됩니다.
암호화된 파일을 복호화
$ ansible-vault decrypt inventory.INI
Vault password:
Decryption successful
$
Vault로 암호화된 파일을 복호화하여 영구적으로 일반 텍스트(Plaintext)로 만들고 싶을 경우 위와 같이 하면 됩니다.
암호화된 파일 열람
# 암호화된 파일을 텍스트 편집기로 일회적으로 열람
$ ansible-vault view inventory_temp.INI
Vault password:
암호화된 파일의 내용을 복호화하지 않은 상태에서 보고싶다면 위와 같이 하면 됩니다.
[출처]
- https://docs.ansible.com/ansible/2.5/user_guide/vault.html
'Cloud Native Solution > [IaC] ansible' 카테고리의 다른 글
[Ansible] 앤서블 겔럭시를 사용하여 LVM 구성 (0) | 2021.11.05 |
---|---|
[Ansible] 앤서블 겔럭시를 사용하여 유저/그룹 생성 및 삭제 (0) | 2021.11.03 |
[IaC] Ansible Galaxy의 개념과 구성요소 (0) | 2021.10.22 |
[구성관리] Ansible(앤서블) 개념, 배경 그리고 활용 사례 정리 (0) | 2021.09.19 |
[IaC/앤서블] 앤서블 겔럭시를 이용한 서버 패스워드 변경 자동화(2) (0) | 2021.08.22 |