GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare Ansible Vault per proteggere i dati sensibili

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.


Linux
  1. Come utilizzare il comando SFTP per il trasferimento di file sicuro

  2. Come utilizzare il tipo di file in Vim?

  3. Come proteggere i dati sensibili con Docker Compose Secrets

  4. Come usare chmod per modificare i permessi dei file?

  5. Come funziona rm? Cosa fa rm?

Come usare il comando Tronca in Linux

Come usare Ansible per configurare Vim

Una breve introduzione ad Ansible Vault

Come usare il comando lsof in Linux

Come usare gzip in Linux?

Come utilizzare il comando shred Linux