Ansible è un fantastico strumento di automazione e orchestrazione popolare tra molti sviluppatori grazie alla sua semplicità e facilità d'uso. Una delle caratteristiche più importanti di Ansible è Ansible Vault. Come ormai puoi immaginare, Vault Ansible è una funzionalità di sicurezza utilizzata per crittografare o proteggere le informazioni riservate nei playbook o nei file invece di averle come testo normale, il che rappresenterebbe una minaccia significativa in caso di violazione. Tali dati includono password , Token API e certificati SSL per citarne alcuni. Puoi crittografare l'intero playbook YAML file di una stringa all'interno del playbook con informazioni riservate come una password.
In questa guida, esaminiamo vari modi in cui Ansible Vault può aiutarti a bloccare le tue informazioni sensibili o riservate e tenere a bada i ficcanaso.
Crea un file crittografato utilizzando Ansible Vault
Ansible Vault utilizza lo strumento di utilità della riga di comando ansible-vault per crittografare le informazioni riservate utilizzando l'algoritmo AES256. Ciò fornisce una crittografia simmetrica incorporata in una password definita. Un utente può utilizzare la stessa password per crittografare o decrittografare i file al fine di accedere al contenuto.
Per creare un file crittografato, utilizza lo strumento di utilità ansible-vault come mostrato
$ ansible-vault crea file.yml
Ad esempio, per creare un file, chiamalo file_segreto.yml , esegui il comando
$ ansible-vault create secret_file.yml
Ti verrà chiesto di fornire una nuova password del vault. Digita la tua password preferita e conferma. Dopo aver confermato la password, verrà avviato vim editor.
Successivamente, digita il contenuto del file che desideri venga crittografato da Ansible Vault e salva il file. Di seguito è riportato un testo di esempio.
Hello, this is my secret file
Quando visualizzi il file, scoprirai che è già stato crittografato utilizzando l'algoritmo AES256 come mostrato.
$ vim secret_file.yml
Modifica un file crittografato con Ansible Vault
Per apportare modifiche a un file già esistente che è crittografato, utilizzare la sintassi:
$ ansible-vault modifica file.yml
Dal nostro file di esempio che abbiamo creato in precedenza, il comando per modificare il file sarebbe:
$ ansible-vault edit secret_file.yml
Ancora una volta, ti verrà richiesta la password del vault e, dopo averla fornita, ti verrà concesso l'accesso al file per apportare modifiche.
Visualizza un file crittografato
Per dare un'occhiata a un file crittografato, usa la sintassi:
$ ansible-vault view file.yml
Utilizzando il nostro file, il comando sarà quindi
$ ansible-vault view secret_file.yml
Crittografa un file esistente utilizzando Ansible Vault
Supponiamo di voler crittografare un file già esistente che non è crittografato, ad esempio un file di inventario. Come lo faresti? Per ottenere ciò, usa la sintassi:
$ ansible-vault crittografa file.yml
Ad esempio, per crittografare un file file1.yml esegui il comando:
$ ansible-vault encrypt file1.yml
Specifica la password del vault e confermala per crittografare il file.
Decrittografa un file utilizzando Ansible Vault
Per decrittografare un file e ripristinare il testo normale, esegui il comando:
$ ansible-vault decrypt file1.yml
Se tutto è andato bene, riceverai un messaggio "Decrittografia riuscita". Ora puoi usare il comando cat per visualizzare il contenuto del file.
Reimposta password Ansible vault
Inoltre, puoi reimpostare o modificare la password del Vault. Questo viene fatto usando il rekey opzione nel comando ansible vault come mostrato:
$ ansible-vault rekey secret_file.yml
Specifica prima la password del vault corrente, quindi crea una nuova password e confermala.
Decrittografia dei contenuti in fase di esecuzione in Ansible Playbook
Prima di Ansible 2.4, la decrittografia dei file durante il runtime richiedeva l'uso di –ask-vault-pass parametro come mostrato con ansible o ansible-playbook comandi:
$ ansible-playbook playbook_example.yml --ask-vault-pass
Ti verrà quindi richiesta una password del Vault e la decrittografia inizierà in fase di esecuzione.
Tuttavia, questo è stato deprecato. Da Ansible 2.4 il metodo standard per richiedere una password consiste nell'utilizzare il –vault-id opzione come mostrato.
$ ansible-playbook playbook_example.yml --vault-id @prompt
Il @prompt chiederà la password
Un semplice trucco per evitare che venga richiesta una password ogni volta che si decrittografano i file durante il runtime è archiviare la password del vault in un file.
Prima di Ansible 2.4 il modo per raggiungere questo obiettivo era l'uso del –vault-password-file parametro per specificare il percorso del file che contiene la password memorizzata.
Ad esempio, nella dimostrazione seguente, il file della password si trova nel file /etc/ansible/vault_pass.txt.
$ ansible-playbook playbook_example.yml --vault-password-file /etc/ansible/vault_pass.txt
Tuttavia, proprio come il –ask-vault-pass opzione, l'opzione –file-password-vault è stato ritirato per aprire la strada al –vault-id opzione. Il comando, quindi, si presenta così:
$ ansible-playbook playbook_example.yml --vault-id /etc/ansible/vault_pass.txt
Crittografia di una variabile in Ansible Playbook
Oltre a crittografare un intero playbook, ansible-vault ti dà anche la possibilità di crittografare solo le variabili. Nella maggior parte dei casi si tratta di variabili che contengono informazioni altamente riservate e sensibili come password e chiavi API.
Il playbook di seguito ha lo scopo di stampare il valore della variabile my_secret che contiene una password definita come [email protetta].
In genere, è una cattiva idea memorizzare le password in testo normale perché se qualcuno si impossessa del file del playbook, la tua sicurezza può essere compromessa.
Ti vengono quindi presentate 2 opzioni:crittografare l'intero file o crittografare il valore della variabile.
Per crittografare una variabile, utilizza encrypt_string opzione come mostrato.
$ ansible-vault encrypt_string 'string' –name 'variable_name'
Per crittografare il valore della variabile my_secret nell'esempio del playbook, il comando sarà:
$ ansible-vault encrypt_string '[email protected]' --name 'my_secret'
L'output sopra indica che la password è stata crittografata con crittografia AES 256 . Da qui, copia l'intero codice crittografato da !vault | . Vai al file del playbook ed elimina il valore della password in chiaro e incolla il valore crittografato come mostrato.
Salva ed esci dal file. Ora esegui il playbook e verifica se visualizzerà ancora il valore della password memorizzata in my_secret variabile.
L'output sopra mostra che il playbook fornisce i risultati desiderati, il che implica che siamo riusciti a crittografare la variabile.
Questo conclude questo tutorial su Ansible Vault. Ora puoi proteggere i tuoi file e tenere le tue informazioni riservate lontane da occhi indiscreti.