Ansible je fantastický nástroj pro automatizaci a orchestraci populární mezi mnoha vývojáři díky své jednoduchosti a snadnému použití. Jednou z nejdůležitějších funkcí, která přichází s Ansible, je Ansible Vault. Jak už byste asi uhodli, Vault Ansible je bezpečnostní funkce, která se používá k šifrování nebo zabezpečení citlivých informací v příručkách nebo souborech namísto jejich prostého textu, což by v případě narušení představovalo významnou hrozbu. Mezi taková data patří hesla , tokeny rozhraní API a certifikáty SSL abych zmínil několik. Můžete zašifrovat celou příručku YAML soubory řetězce v playbooku s citlivými informacemi, jako je heslo.
V této příručce se podíváme na různé způsoby, jak vám Ansible vault může pomoci uzamknout vaše citlivé nebo důvěrné informace a udržet slídiče na uzdě.
Vytvořte šifrovaný soubor pomocí Ansible Vault
Ansible vault používá nástroj příkazového řádku ansible-vault pro šifrování citlivých informací pomocí algoritmu AES256. To poskytuje symetrické šifrování, které je vloženo do definovaného hesla. Uživatel může použít stejné heslo k šifrování nebo dešifrování souborů za účelem přístupu k obsahu.
Chcete-li vytvořit zašifrovaný soubor, použijte nástroj ansible-vault, jak je znázorněno
$ ansible-vault vytvořit soubor.yml
Chcete-li například vytvořit soubor, nazvěte jej secret_file.yml , spusťte příkaz
$ ansible-vault create secret_file.yml
Budete vyzváni k zadání nového hesla trezoru. Zadejte preferované heslo a potvrďte. Jakmile potvrdíte heslo, spustí se editor vim.
Poté zadejte obsah souboru, který chcete zašifrovat úložištěm Ansible, a soubor uložte. Níže je ukázkový text.
Hello, this is my secret file
Když si soubor prohlédnete, zjistíte, že již byl zašifrován pomocí algoritmu AES256, jak je znázorněno.
$ vim secret_file.yml
Úprava zašifrovaného souboru pomocí Ansible Vault
Chcete-li provést změny v již existujícím souboru, který je zašifrován, použijte syntaxi:
$ ansible-vault upravit soubor.yml
Z našeho ukázkového souboru, který jsme vytvořili dříve, by příkaz pro úpravu souboru byl:
$ ansible-vault edit secret_file.yml
Opět budete vyzváni k zadání hesla trezoru a po jeho poskytnutí vám bude udělen přístup k souboru, abyste mohli provádět úpravy.
Zobrazení zašifrovaného souboru
Chcete-li nahlédnout do zašifrovaného souboru, použijte syntaxi:
$ ansible-vault zobrazit soubor.yml
Pomocí našeho souboru bude tedy příkaz
$ ansible-vault view secret_file.yml
Šifrování existujícího souboru pomocí Ansible Vault
Předpokládejme, že chcete zašifrovat již existující soubor, který je nezašifrovaný, řekněme soubor inventáře. jak byste na to šli? Chcete-li toho dosáhnout, použijte syntaxi:
$ ansible-vault zašifrovat soubor.yml
Chcete-li například zašifrovat soubor file1.yml spusťte příkaz:
$ ansible-vault encrypt file1.yml
Zadejte heslo úložiště a potvrďte jej, aby se soubor zašifroval.
Dešifrování souboru pomocí Ansible Vault
Chcete-li dešifrovat soubor a vrátit se k prostému textu, spusťte příkaz:
$ ansible-vault decrypt file1.yml
Pokud vše proběhlo v pořádku, zobrazí se zpráva „Dešifrování bylo úspěšné“. Nyní můžete použít příkaz cat k zobrazení obsahu souboru.
Resetovat heslo Ansible vault
Také můžete resetovat nebo změnit heslo trezoru. To se provádí pomocí rekey možnost v příkazu ansible vault, jak je znázorněno:
$ ansible-vault rekey secret_file.yml
Nejprve zadejte aktuální heslo trezoru a později vytvořte nové heslo a potvrďte ho.
Dešifrování obsahu za běhu v Ansible Playbook
Před Ansible 2.4 vyžadovalo dešifrování souborů za běhu použití –ask-vault-pass jak je znázorněno buď s ansible nebo ansible-playbook příkazy:
$ ansible-playbook playbook_example.yml --ask-vault-pass
Poté budete vyzváni k zadání hesla Vault a dešifrování začne za běhu.
To však bylo zastaralé. Od Ansible 2.4 je standardní metodou výzvy k zadání hesla použití –vault-id možnost, jak je uvedeno.
$ ansible-playbook playbook_example.yml --vault-id @prompt
@prompt vyzve k zadání hesla
Jednoduchým trikem, jak se vyhnout výzvě k zadání hesla při každém dešifrování souborů za běhu, je uložit heslo úložiště do souboru.
Před Ansible 2.4 bylo způsobem, jak toho dosáhnout, použití –vault-password-file parametr k určení cesty k souboru, který obsahuje uložené heslo.
Například v níže uvedené ukázce je soubor s hesly umístěn v souboru /etc/ansible/vault_pass.txt.
$ ansible-playbook playbook_example.yml --vault-password-file /etc/ansible/vault_pass.txt
Nicméně stejně jako –ask-vault-pass možnost, možnost –soubor s heslem-sejfu byla zastaralá, aby připravila cestu pro –vault-id volba. Příkaz tedy vypadá takto:
$ ansible-playbook playbook_example.yml --vault-id /etc/ansible/vault_pass.txt
Šifrování proměnné v Ansible Playbook
Kromě šifrování celé příručky ansible-vault také vám dává možnost šifrovat pouze proměnné. Ve většině případů se jedná o proměnné obsahující vysoce důvěrné a citlivé informace, jako jsou hesla a klíče API.
Níže uvedená příručka je určena k vytištění hodnoty proměnné my_secret, která obsahuje heslo definované jako [email protected].
Obecně je špatný nápad ukládat hesla v prostém textu, protože pokud se někdo dostane k souboru playbooku, může být ohrožena vaše bezpečnost.
Nabízí se vám tedy 2 možnosti:zašifrovat celý soubor nebo zašifrovat hodnotu proměnné.
Chcete-li zašifrovat proměnnou, použijte encrypt_string možnost, jak je uvedeno.
$ ansible-vault encrypt_string ‘řetězec’ –name ‘název_proměnné’
Chcete-li zašifrovat hodnotu proměnné my_secret na příkladu playbooku bude příkaz:
$ ansible-vault encrypt_string '[email protected]' --name 'my_secret'
Výše uvedený výstup ukazuje, že heslo bylo zašifrováno šifrováním AES 256 . Odtud zkopírujte celý zašifrovaný kód z !vault | . Přejděte do souboru playbook a smažte hodnotu hesla v prostém textu a vložte zašifrovanou hodnotu, jak je znázorněno.
Uložte a ukončete soubor. Nyní spusťte playbook a ověřte, zda bude stále zobrazovat hodnotu hesla uloženého v my_secret proměnná.
Výše uvedený výstup ukazuje, že příručka poskytuje požadované výsledky, což znamená, že se nám podařilo zašifrovat proměnnou.
Toto uzavírá tento tutoriál o Ansible Vault. Nyní můžete zabezpečit své soubory a chránit své důvěrné informace před zvědavýma očima.