というオーバーなタイトルにしましたが、main.yml内にクレデンシャルやパスワードを指定して、間違えてGitHubのパブリックリポジトリにpushしてAWSから連絡が来たり(プライベートは問題ないけど基本だめ)、パスワード漏洩など事例としてよくあります。そこで、Ansible Vaultを使うことで、暗号化ファイルになり、リポジトリもセキュアになるわけです。とりあえずやってみましょう。
■Ansible Vault
https://docs.ansible.com/ansible/2.7/user_guide/vault.html
ansible自体をインストールすると既にansible-vaultコマンドが使えるはずです。以下がサブコマンドになります。
1 2 |
$ ansible-vault -h Usage: ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml] |
・ansible-vault create
暗号化されたファイルを作成
・ansible-vault encrypt
既存のファイルを暗号化
・ansible-vault decrypt
暗号化されたファイルを復号化
・ansible-vault edit
暗号化されたファイルを編集
・ansible-vault rekey
パスワードを変更
・ansible-vault view
暗号化されたファイルを復号して PAGER で表示
■encrypt user.yml
だいぶ前に作ったユーザー作成で、パスワードを直書きしていますが、基本的にダメです。このuser.ymlを暗号化してみましょう。
・ansible-vault encrypt (暗号化)
1 2 3 4 |
$ ansible-vault encrypt user.yml New Vault password: #パスワードブチ込む Confirm New Vault password: #パスワードブチ込む Encryption successful |
・user.yml
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 |
$ANSIBLE_VAULT;1.1;AES256 37333339613364646664643061356161303036613666333165343633346164663666663730633530 3935656635623537346339643433313166393166346434380a313433356566303634316366386335 36663339306161616362623636633439636663306136623337333533643964303138663036336137 3233643130373862650a653261636463373965636261363061373565646534636333323239633139 34656362663061323866353665313036343435613637636537396633643235336664393063393531 35326431613531623437343161653033396666646635623435653066393537346163366130643062 64353131363365616166373833613665633731316138316234636330616237343464393338326137 61343362316566383965303663303831393139363531373663333135346365653536626531663637 65396634383161633233613937393635343530303263643630303363643864666131373331626537 39663638326561363162666563306236383036633663393632613431376262343537353562363537 62633335313561326465373564396365626537376138643461383938626236313038386632363164 61333535393635643462323964646366303933646133353737353732663035636538623465333937 63653262653939663433623630373636663466356465376162363430323435303837343466623935 64313361613862643861666334303661656465333464626332363535336631383531643332396233 61633666323939303765636466643037626661653730646339353539656466306361663035646535 36333665316562666430373765633333633263333061393936326137666531373565316563623836 39643633613762613264343530366338616332663037366237663938303536303763613838396364 39333834663931303338323862313234376235633562653132313737396233653066633932343934 65653739313161343065636430663636363863363630653232376663653666376236396662393533 34336132383162636335353865316137623631396137663166663163393032396331383236373665 34663239386230636337636336313365633865373135346530613061346435646337343030646337 63396132383862313939663338376236626330333662303032323434376133626263313531393463 32343138633665636132626163343239323039383535393835363330363230366461623238303365 6335306533396466363763363234564675734583364376135326635306364666433623034333037393833323932 31363133663834393639643236643839643533666166366334666134653739343537666664636261 453543535353535353237326364306638346365343833383735346136383630316332356433396665 65323739623832633935656338393632623636663066306438323866633563303165326664623933 32393839356564343476757575737336434336263383966323832373930363539653239396637363231333932 37353762383036353937633861646462313033656637333939643361363961373366386236633833 6162356635663064653161626364396665376137623839316164 |
次は復号化してみましょう。
・ansible-vault decrypt (復号化)
1 2 3 |
$ ansible-vault decrypt user.yml ault password: #さっきのパスワードブチ込む Decryption successful |
・ansible-playbookで適用する場合
1 |
$ ansible-playbook -i hosts test.yml --ask-vault-pass |
暗号化したファイルをansibleで適用する場合、–ask-vault-pass付けて実行することで反映されます。
■まとめ
ユーザーのパスワードは$ grub-crypt –sha-512でハッシュ化された文字列をymlに書けば、Ansible Vaultを使わなくても良さそう。
0件のコメント