강의 대시보드 [중간 업데이트] ansible-vault를 통해서 생성한 암호화 파일을 ansible-vault의 키로 사용할 경우
[중간 업데이트] ansible-vault를 통해서 생성한 암호화 파일을 ansible-vault의 키로 사용할 경우
강의명 : [심화] 앤서블(Ansible)을 깊이 있게 활용하기
수강 기한 : 무제한
진도율 : 0강/27강 (0%) | 시간 : 0분/182분
나가기
미수강
이전수업
다음수업
안녕하세요 보안을 첨가하기를 시작하기에 앞서, 앤서블 버전이 업데이트 된 이후에 발생하는 이슈에 대해서 먼저 설명하고 진행해도록 하겠습니다. 해당 내용은 Andrew님이 발견해 주셨습니다. 감사합니다. 이슈 내용: ansible-vault를 통해서 생성한 암호화 파일을 ansible-vault의 키로 사용할 경우 아래와 같은 에러가 발생함
해당 부분은 다음과 같은 Class와 관련한 내용의 수정으로 2.5.x 버전 이후로 ansible-vault를 통해서 암호화되어진 파일은 ansible-vault 키로 사용할수 없는 것으로 확인되었습니다.
[그림 1] 2.4.6 버전의 /usr/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py
[그림 2] 2.5.0 버전의 /usr/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py 즉 정리하자면, 2.4.2 - 2.7.1에서 2.5.0a1 버전 이후의 모든 버전에서 동일한 이슈 발생합니다. 따라서 이를 해결하기 위해서는 다음과 같은 방법을 사용할 수 있습니다.

#1 생성한 AES256 암호화 파일을 ansible-vault에서 볼트 암호화 파일로 인식하지 못하게 하기

#1-1 우선 알고 계시는 방법으로 vault_key를 생성합니다.
[vagrant@ansible-server ~]$ ansible-vault create ~/.ansible/vault_key
New Vault password:
Confirm New Vault password:
0L, 0C written
[vagrant@ansible-server ~]$ cat ~/.ansible/vault_key
$ANSIBLE_VAULT;1.1;AES256
34613235653831373135356463663939353438633731356666363961663338366433613833663235
6632336534323665393132646432633338373738303661610a636564656134356136363833663230
65353539323437636266373933646565613961636136656131346565666237393735303562356330
6261333337356137320a353466656237373837613933613038373637613539363461353061366361
3039
#1-2 여기서 $(달러 기호)를 삭제 합니다.
[vagrant@ansible-server ~]$ cat .ansible/vault_key
ANSIBLE_VAULT;1.1;AES256
34613235653831373135356463663939353438633731356666363961663338366433613833663235
6632336534323665393132646432633338373738303661610a636564656134356136363833663230
65353539323437636266373933646565613961636136656131346565666237393735303562356330
6261333337356137320a353466656237373837613933613038373637613539363461353061366361
3039
#1-3 그런 이후에 는 vault_key를 평문으로 인식하고 진행이 됩니다.
[vagrant@ansible-server ~]$  ansible-vault encrypt ./group_vars/nodes --vault-password-file ~/.ansible/vault_key
Encryption successful
[vagrant@ansible-server ~]$  ansible-vault decrypt ./group_vars/nodes --vault-password-file ~/.ansible/vault_key
Decryption successful

#2 볼트가 아닌 openssl을 이용하여 난수로 작성된 vault_key를 생성합니다.

#2-1 아래의 명령어를 실행하여 vault_key_by_ssl 이라는 vault_key파일을 생성합니다.
[vagrant@ansible-server ~]$ openssl rand -base64 2048 > ~/.ansible/vault_key_by_ssl
#2-2 처음 보는 거니까, 내용을 살펴 봅니다.
[vagrant@ansible-server ~]$ cat ~/.ansible/vault_key_by_ssl
R4kTxBUg3daBqsL9Ouu6Fl9RPOTv8Gpi+w7hFN9Jd+6o+U0sCs4cKqnFnUDYTil3
EgZotHewfSw8Gax/L7dDC7rPb0VNn4xJFikcbEgmTKI8M+3H4hAuNgrf5SnAFT/J
lw50QsGMr+ZhGgcyBoPX9oGBzUV6DRJisk5+jILqD2SBmI2m8zTh/csCg1HUSC8W
IUh1IArHcFDxznoM0ttTG1I7cC1S5Mzdlc8FAGHluZGXXl1L6YjRRLJFoKJerIT9
dpEtiG05jBb2PNdtq4vTWrJRc9tHMt31EJ2aR2rINLdB23gUGM+5Obnhw3uarXnx
DO5YRTnSB2eZX1VmXgFHB47yxFtesexkYA+4qqglM5lsLB6p5jgBSGqcqkyD2QEo
Bud8PaGaege5l3WSQgRYOHSmm6euzwpanuQHx6N0zzJw4TIulyCdaB/rbmoI7mx8
KWNwqryEzaq8shOuZIIlAVqelR0W4Dccngq5744mCsw0+5TRezuq4kR8+UNaQH67
GRhPYzkJCkWmaBCENH4ewtBpTQBbr2ORejzmkPPLhynegGh+jN4tz77M6YkFIC/O
x3Go+BlGyhHQC1g3NVMAX/NqWljf6fAZlRVNz7ss7gWSo65rZFguaC70Gf0/lC1I
sWrxh3GcgoewEva7WgFFJNmG9Gn2HA7uMooIzsqDyhxk9lYRDgezwgfPvv0Zc/lL
k6xTDiNvfgeHEDpXnV3EPTRWkCwsYypvFMgMB3N6SPVOc6CYCedSQY/bmAO/2VUi
HqWJ8uRHTx+4CHzPQO18vm7MaklkUU71eUBZEDeD3PM6Ca/g2avXu7bzcEcAmMec
6hTU378DawmvCsUr1kYCHE66DNT13frTYfhOrg9EFegEnIVeVyXK8F7K8jsCpZd3
verZu/KxP0FtAFXLGazY89ueE8IXP5EaF+keMRUNrN+KPvnLFXG6oN87fpeC5T2q
xUti8YE3XXLFxw7Xl0vkq6kfup+MznwA2+dAr1AylWfhUT8WcdZQxmt5pdSGELLP
EBvUVRqnzzRSn3MDJqxIvtzafdRbVeboQXcYfWpn+gwozXCw+os1pXuqjNpXsbEg
55BriLCcM6S4RRUVEnF3Int+493rVmZ1gejy4k2TxA+3SCYL6vBZOXgH2x9DHXYh
G4uwpf2tBlgRcDGXcxRXXy4cqrLc8lQEurQOdLvUGzA8c6nb4Q4Z1ol1dL8IG36u
vQODSjschz4k0PO0vmbeM9OGe0A8d4N20Tp4HUVKbMBgzw/YNSZnXSIm5MEGl1Zi
/dskJtcK40NkC+RAOyknJSO5eryc1trrZlZa7vSY6WSCp6gt/yPDjafYWQHSViKk
mWTaEvu/ewK6rFCLST2xu6LSHFEpvRuNsrelxMb6r83A5GgTW0LoRQDLN+HL139a
5uKw8nN2QxayKjac0MfSbMaF9XW6GAAGI9b/O26OdQtsgBGDWpCYtAmstBU8fYWD
A2WVgctNaJpwPQfY3UAW/hzPBmj5oY9ONTyu9Zd+YQLc7ZTEgmjfGN5Z5uNtCO/D
xHzLhUJ+e1CJgtR3EWlYciJ3AGyYTZIwNJw39T2TbETTs5TmP2H3awf+RVFfbYxa
j7tbb7x0MZ5w7ROcMjJcWhIqr/yg1LZqfmcK6qK4+39pwR217iZufXbFILWmgb3r
95sfdRsaXBsjadvL2niOju+oY7YEXSds0R0ocr6a41UYtFj2m4qaRacPbuKmzLea
cV/WOTWGFT7ZGTaVFM+yyYpThHEj0alXXUQLAYzppLPMBrWbS4lPun7yKWuYCXAn
SnPXi0/j9AadUu+wQNLq+B+CN2+dcj9/dFK3VoRkiNUvdsroG5yafB+eAgPTkpHb
R8xqVM/jdXgtvSW5ASYXGuC/0YfRNy/xllyaEnq7PMD4kZk7IUb82mP/IOh1jVud
Nvp9182cAAaJ5FwLT+rTTHrMJMsu+zvDq3FeFjnVxrPsQnF+uvVSm7ro6cCP6LAO
wC1MqwxEr9eMdk832CVuwt5sozGOC9pzh15LbwMDhxIrJDMIRDmcue+EKzryu0Gc
gPmKhP6i3Ury7oLToYryIwDG1DXit7VAPswCQZPM4O1Q6m9hU8dwAyJwcp9XVS/9
UG3niB++MXlyfFZsc1Ye/ybPSQkvdWEUGM8dM89BKiBipwclv0KEyXKYAML1x+pa
F6Wx/9gdtws0ccG3yIhJum02ULkLDc4GxGoh27l9yMXec3al8nsXbWZ+LOe6U41a
53qKNtthtxRT+XyGFkZ56G2beG9Yggqe/+TQKd6XHwnBoB/iHXSa1Y9V/R01JNOr
7eMSlfw8hYu63ULnI2Z/7Ji7IyMORFWWlhtcl8EM6A6E559WMad3syPnU0+XzaVI
fru8tZwlfY+EmEGoUOsnxaAdo3Qx16df1PPHGvFw9jfVpnfF3bUHKDoo/3rS0S9M
I87vIAxVgCPvMPTvcmEZc20o95RYrHQBeolVTWA2QzWiiY32xfrK+zlIEjjgF098
51TPXqqZuWNY/2aDvZZgpe3GltEI8WFJq22sVTRy0V8Pd0fP+myaGPv51N0NeLpj
GW95wCIKBroIf+5nfnLT0JKqo2jCQ3VCV/4JRZWol2kJs8LKsvJ7iDJuL0c58vm7
yeKa7Oqli31QR0pYsuFpKJtVLTkGFZnxKPdrykj/ar/TDwSIcX0E2Nx92QQQUk/Z
NLHI9iQ/IPpxqKKOlFaBEgCu9+TuW07LYJyHAqiAXMM=
#2-3 새로 생성한 vault_key인 vault_key_by_ssl을 이용해서 암호화합니다.
[vagrant@ansible-server ~]$  ansible-vault encrypt ./group_vars/nodes --vault-password-file ~/.ansible/vault_key_by_ssl
Encryption successful
#2-4 암호화된 파일을 확인합니다.
[vagrant@ansible-server ~]$ cat ./group_vars/nodes
$ANSIBLE_VAULT;1.1;AES256
38323237383235633039383566343232336237326565633738393662383837316134636639373732
6463626234326530633032323437303638663362643930350a323033636166646334656362343361
65336132366366633936323230363866316135613764336339333830393134356532663662363965
3166653161386136330a313232666439343536393932343730366334666235343738306630303534
35343637306238376362396563383034643564313431653834613938646464663332
#2-5 복호화도 해봅니다.
[vagrant@ansible-server ~]$  ansible-vault decrypt ./group_vars/nodes --vault-password-file ~/.ansible/vault_key_by_ssl
Decryption successful
따라서, 앞으로는 ansible-vault를 사용시에 난수를 생성하는 방법을 위의 2가지 중에 하나로 하는 것을 추천 드립니다. 해당 변경 사항은 앤서블 Team에서 정확하게 기입하진 않았지만, 몇차례 암호화 된 것인지 확인되지 않기 때문에 복호화를 진행할때 참고할 수 없기 때문에 아닐까 추정 정도가 가능할 것 같네요. 해당 내용은 공식 changelog 페이지에도 기입되어 있지 않은 내용이라..파악하는데, 시간이 걸린 점에 대해서 양해 부탁드립니다. 그리고, 이 내용은 일단 참고로만 보시고, 강의를 듣고 나서 수정해 보시면, 확실하게 어떤 내용인지 이해가 되실 것입니다. 감사합니다. 조훈 드림.
    목차 질답