I-secure ang iyong mga lihim Sa Ansible Vault



Ang Ansible vault blog na ito ay nagpapaliwanag kung paano ang sensitibong data (mga password / lihim na key / cert file) ay nakaimbak sa mga naka-encrypt na file at naka-embed sa Mga Ansible Playbook.

Mas mataas ang paggamit ng teknolohiya, mas malaki ang posibleng banta sa seguridad. Ang isang tipikal na Ansible na pag-set up ay nangangailangan sa iyo upang feed-in na 'Mga Lihim'. Ang mga lihim na ito ay maaaring maging anumang literal, mga password, token ng API, publiko o pribadong mga key ng SSH, mga sertipiko ng SSL, atbp. Paano natin mapanatiling ligtas ang mga lihim na ito? Nagbibigay ang Ansible ng isang tampok na tinatawag na Ansible Vault.

Sa blog na ito, ipapakita ko kung paano gamitin ang Ansible Vault at tuklasin ang ilan sa mga pinakamahusay na kasanayan para mapanatiling ligtas ang data.





Mga paksang sakop sa blog na ito:

Kung nais mong makabisado ang DevOps, ' kurso ay ang iyong go-to pagpipilian.



Ano ang Ansible Vault?

Ang pagkakaroon ng imprastraktura bilang code ay maaaring magdulot ng banta ng paglantad ng iyong sensitibong data sa mundo, na humahantong sa mga hindi ginustong isyu sa seguridad. Ang Ansible Vault ay isang tampok na nagbibigay-daan sa iyo upang mapanatiling ligtas ang lahat ng iyong mga lihim. Maaari itong i-encrypt ang buong mga file, buong mga playbook ng YAML o kahit na ilang mga variable. Nagbibigay ito ng isang pasilidad kung saan hindi mo lamang mai-encrypt ang sensitibong data ngunit isama rin ang mga ito sa iyong mga playbook.

Ang vault ay ipinatupad sa file-level granularity kung saan ang mga file ay alinman sa ganap na naka-encrypt o ganap na hindi naka-encrypt. Gumagamit ito ng parehong password para sa pag-encrypt pati na rin para sa pag-decrypt ng mga file na ginagawang napaka-friendly ng paggamit ng Ansible Vault.

Bakit gumagamit ng Ansible Vault?

Tulad ng ginagamit na Ansible para sa pag-aautomat, may mataas na posibilidad na maglaman ang mga playbook ng ilang mga kredensyal, sertipiko ng SSL o iba pang sensitibong data. Ang pag-save ng naturang sensitibong data bilang simpleng teksto ay isang masamang ideya. Ang isang maling gawin sa GitHub o pagnanakaw sa laptop ay maaaring maging sanhi ng isang malaking pagkawala ng isang samahan. Dito makikita ang larawan ng Ansible vault. Ito ay isang mahusay na paraan ng pagkakaroon ng imprastraktura bilang code, nang hindi nakakompromiso sa seguridad.



Ipagpalagay, mayroon kaming isang playbook na naglalaan ng iyong halimbawang EC2 sa AWS. Kailangan mong ibigay ang iyong AWS access key id at lihim na key ng AWS sa playbook. Hindi mo ibinabahagi ang mga key na ito sa iba para sa mga halatang dahilan. Paano mo maiiwasang ma-expose ang mga ito? Mayroong dalawang paraan - Alinmang i-encrypt ang dalawang variable na ito at i-embed ang mga ito sa playbook o i-encrypt ang buong playbook.

Ito ay isa lamang sa senaryo kung saan maaaring gamitin ang ansible vault. Maaari naming i-encrypt ang buong mga file o i-encrypt lamang ang ilang mga variable na maaaring maghawak ng sensitibong data at pagkatapos ay awtomatikong mai-decryp ng Ansible ang mga ito habang nag-runtime. Ngayon ay ligtas nating maisasagawa ang mga halagang ito sa GitHub.

Lumilikha ng Naka-encrypt na File

Upang lumikha ng isang naka-encrypt na file, gamitin ang nakakain-vault lumikha utusan at ipasa ang filename.

$ ansible-vault lumikha ng filename.yaml

Sasabihan ka upang lumikha ng isang password at pagkatapos ay kumpirmahin ito sa pamamagitan ng muling pagta-type nito.

hindi maramihang vault lumikha - Ansible Vault - Edureka

Kapag nakumpirma na ang iyong password, malilikha ang isang bagong file at magbubukas ng isang window ng pag-edit. Bilang default, ang editor para sa Ansible Vault ay vi. Maaari kang magdagdag ng data, i-save at lumabas.

At naka-encrypt ang iyong file.

Pag-edit ng Mga Naka-encrypt na File

Kung nais mong i-edit ang isang naka-encrypt na file, maaari mo itong i-edit gamit ang ansible-vault edit utos

$ ansible-vault i-edit ang mga lihim.txt

Kung saan ang lihim.txt ay isang nalikha na, naka-encrypt na file.

Sasabihan ka na ipasok ang password ng vault. Ang file (na-decrypt na bersyon) ay magbubukas sa isang vi editor at pagkatapos ay maaari mong gawin ang mga kinakailangang pagbabago.

Kung titingnan mo ang output, makikita mo ang iyong teksto ay awtomatikong naka-encrypt kapag nag-save at nagsara ka.

Pagtingin sa Naka-encrypt na File

Kung nais mong tingnan lamang ang isang naka-encrypt na file, maaari mong gamitin ang hindi nakikita-vault na pagtingin utos

$ ansible-vault view filename.yml

Muli ay sasabihan ka para sa isang password.

at makikita mo ang katulad na output.

Rekeying Vault Password

Siyempre, may mga oras kung saan nais mong baguhin ang password ng vault. Maaari mong gamitin ang ansible-vault rekey utos

nagtatapos ng isang programa sa java
Mga lihim na rekey na $ ansible-vault rekey.txt

Sasabihan ka ng kasalukuyang password ng vault at pagkatapos ay ang bagong password at sa wakas ay tapos na sa pamamagitan ng pagkumpirma ng bagong password.

Pag-encrypt ng Mga Hindi Naka-encrypt na Mga File

Ipagpalagay na mayroon kang isang file na nais mong i-encrypt, maaari mong gamitin ang nakaka-encrypt na vault utos

$ ansible-vault encrypt filename.txt

Ipoaganyay sa iyo na magpasok at kumpirmahin ang password at naka-encrypt ang iyong file.

Ngayon na tiningnan mo ang mga nilalaman ng file, naka-encrypt ang lahat.

Pag-decrypt ng Mga Naka-encrypt na File

Kung nais mong i-decrypt ang isang naka-encrypt na file, maaari mong gamitin ansible-vault decrypt utos

$ ansible-vault decrypt filename.txt

Tulad ng dati, hihimokin ka nitong ipasok at kumpirmahin ang password ng vault.

Pag-encrypt ng mga tukoy na variable

Pinakamahusay na kasanayan habang gumagamit ng Ansible Vault ay ang naka-encrypt lamang ng sensitibong data. Sa halimbawang ipinaliwanag sa itaas, ang koponan sa pag-unlad ay hindi nais na ibahagi ang kanilang password sa paggawa at sa pangkat ng pagtatanghal nguni't maaaring kailanganin nila ang pag-access sa ilang data upang maisakatuparan ang kanilang sariling gawain. Sa ganitong mga kaso dapat mo lamang na naka-encrypt ang data na hindi mo nais na ibahagi sa iba, na iniiwan ang natitirang ito.

Pinapayagan ka ng Ansible Vault na i-encrypt lamang ang mga tukoy na variable. Maaari mong gamitin ang ansible-vault encrypt_string utos para dito.

$ ansible-vault encrypt_string

Sasenyasan kang ipasok at pagkatapos ay kumpirmahin ang password ng vault. Maaari mo nang simulang ipasok ang halaga ng string na nais mong i-encrypt. Pindutin ang ctrl-d upang wakasan ang input. Ngayon ay maaari mo nang italaga ang naka-encrypt na itohalagasa isang string sa playbook.

Maaari mo ring makamit ang parehong bagay sa isang solong linya.

$ ansible-vault encrypt_string 'string' --name 'variable_name'

Pag-decrypt ng mga Naka-encrypt na File Habang Runtime

Kung nais mong i-decrypt ang isang file sa panahon ng runtime, maaari mong gamitin –Ask-vault-pass bandila.

$ ansible-playbook launch.yml --ask-vault-pass

Tatanggalin nito ang lahat ng naka-encrypt na mga file na ginagamit para sa launch.yml playbook na ito upang maisagawa. Gayundin, posible lamang ito kung ang lahat ng mga file ay naka-encrypt na may parehong password.

Ang mga pag-prompt ng password ay maaaring maging nakakainis. Ang layunin ng awtomatiko ay nagiging walang kabuluhan. Paano natin ito napapagbuti? Ang Ansible ay may tampok na tinatawag na 'password file' na tumutukoy sa isang file na naglalaman ng password. Maaari mo lamang ipasa ang file ng password na ito sa panahon ng runtime upang i-automate ito.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

Ang pagkakaroon ng isang hiwalay na script na tumutukoy sa mga password ay posible rin. Kailangan mong tiyakin na ang file ng script ay maipapatupad at ang password ay nai-print sa karaniwang output upang gumana ito nang walang nakakainis na mga error.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

Paggamit ng Vault Id

Ang Vault Id ay isang paraan ng pagbibigay ng isang identifier sa isang partikular na password ng vault. Tumutulong ang Vault ID sa pag-encrypt ng iba't ibang mga file na may iba't ibang mga password na ma-refer sa loob ng isang playbook. Ang tampok na ito ng Ansible ay lumabas sa paglabas ng Ansible 2.4. Bago ang paglabas na ito, isa lamang ang password ng vault ang maaaring magamit sa bawat nasasabing pagpapatupad ng playbook.

Kaya ngayon kung nais mong magpatupad ng isang Ansible playbook na gumagamit ng maraming mga file na naka-encrypt na may iba't ibang mga password, maaari mong gamitin ang Vault Id.

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filename.yml

Sa pamamagitan nito, nakarating kami sa dulo ng Ansible Vault blog na ito. Nakakamangha na makahabol sa teknolohiya at gawin ang buong buo sa kanila ngunit hindi sa pamamagitan ng pag-kompromiso sa seguridad. Ito ang isa sa mga pinakamahusay na paraan upang magkaroon ng Infrastructure bilang code (IaC).

Kung nakita mong kapaki-pakinabang ang artikulong ito, tingnan ang ' inalok ni Edureka. Saklaw nito ang lahat ng mga tool na gumawa ng mas matalinong industriya ng IT.

May tanong ba sa amin? Mangyaring i-post ito sa at babalikan ka namin.