Come Utilizzare Ansible Vault per Memorizzare le Chiavi Segrete

0
243

Con più di automazione, le credenziali necessarie per l’autenticazione e l’uso sicuro delle risorse. Ciò che è sempre stata una sfida è il modo migliore per conservare le credenziali in modo sicuro. Ansible è un sistema di automazione che fornisce il software di provisioning, gestione della configurazione e implementazioni di applicazioni.

Come con qualsiasi sistema di automazione, Ansible ha bisogno di un modo sicuro per memorizzare i segreti. In caso di Ansible, che il sistema è chiamato Ansible Vault. Ansible Vault offre una soluzione cross-platform per archiviare in modo sicuro le credenziali.

L’Introduzione Di Ansible Vault

Ansible Deposito può essere usato per cifrare qualsiasi tipo di file, o variabili di se stessi, dall’interno di un playbook. Per impostazione predefinita AES viene utilizzato, che è condiviso il segreto di crittografia. Entrambi i file e variabile di crittografia metodi hanno i loro vantaggi e svantaggi.

La Crittografia Dei File

Per creare un nuovo file crittografato denominato segreti.yml, basta usare il seguente ansible la volta di comando.

ansible la volta di creare segreti.yml

Dopo il suggerimento per la password, la ansible la volta di comando lanciare il sistema di default editor di file, che si tradurrà in un file crittografato al momento del salvataggio.

Allo stesso modo, per crittografare in precedenza file non crittografati, utilizzare il seguente ansible la volta di comando. Nota che questo usa la crittografare parametro piuttosto che il parametro di creazione.

ansible la volta di crittografare i segreti.yml

L’aspetto negativo di crittografia dei file è la leggibilità. Se si apre il file, allora troverete che senza di decrittazione, è impossibile decifrare il contenuto.

Variabile Di Crittografia

All’interno di un playbook, è possibile utilizzare un crittografati variabile da prefazione a i dati crittografati con la !vault tag. In esecuzione della encrypt_string argomento del ansible_vault comando in una stringa crittografata che è possibile utilizzare all’interno del vostro playbook.

ansible-vault encrypt_string ‘secret_data’ –nome ‘my_secret’

Dopo la richiesta di una password, verrà visualizzato il seguente stringa crittografata.

my_secret: !vault |
$ANSIBLE_VAULT;1.1;AES256
37636561366636643464376336303466613062633537323632306566653533383833366462366662
6565353063303065303831323539656138653863353230620a653638643639333133306331336365
62373737623337616130386137373461306535383538373162316263386165376131623631323434
3866363862363335620a376466656164383032633338306162326639643635663936623939666238
3161

Variabile di crittografia è grande per migliorare la leggibilità, ma la capacità di usare la riga di comando di reimpostazione delle chiavi è sacrificato quando si utilizza questo metodo.

Utilizzando Ansible Vault in Pratica

Si può capire che l’utilizzo di Ansible volta in produzione, è una sfida. Per utilizzare in modo efficace Ansible Volta, le seguenti tecniche di rendere questo processo più facile.

  • Spontaneamente Decrittografia
  • Più Volte
  • La rigenerazione delle chiavi

Spontaneamente Decrittografia

Una opzione in modo trasparente la decifrazione di un file o di una variabile durante l’utilizzo di Ansible è quello di memorizzare la password all’interno di un protetto e onu-versioni di un file di password. Per fare riferimento a questo memorizzata la password, è sufficiente passare alla posizione del file utilizzando il vault-password-file di parametro.

ansible-playbook –vault-password-file /percorso/vault-password-file segreti.yml

Questo in grado di decriptare tutti i file crittografati o variabili, usando la password.

È molto importante non commettere la vostra password in testo normale file nel sistema di controllo di versione. Allo stesso modo, proteggere questo file solo l’utente o il gruppo che ha bisogno di accedere alla password memorizzata nel file system utilizzando elenchi di controllo di accesso (ACL).

Più Volte

Anche se è comodo avere un unico archivio con tutte le cifrati segreti, una migliore pratica di sicurezza, è quello di separare le credenziali di sicurezza in rilevanti distinti volte. Un esempio di questo potrebbe essere la separazione di una produzione e ambiente di sviluppo. Per fortuna, Ansible Vault ci permette di creare molteplici volte e i riferimenti volta crittografati i dati provenienti dall’utilizzo di un’etichetta.

ansible la volta di creare –vault-id prod@prompt prod-segreti.yml

Il codice precedente crea un prod volta e richiedere la password in fase di runtime (come indicato dalla stringa @prompt). Se si dispone già di un file di password che si desidera utilizzare, è sufficiente passare il percorso del file.

ansible la volta di creare –vault-id prod@/percorso/prod-vault-password-file prod-segreti.yml

Diciamo che si desidera crittografare la stessa my_secret variabile, ma questa volta la memorizza nel nostro prod vault. Proprio come prima, utilizzando encrypt_string ma con le pertinenti vault-id permette di memorizzare il segreto nella posizione specificata.

ansible-vault encrypt_string –vault-id prod@/percorso/prod-vault-password-file ‘secret_data’ –nome ‘my_secret’

Si noterà che, dopo aver AES256 stringa, un nuovo pezzo di testo, prod viene mostrato. Questo indica il deposito che il testo cifrato è situato in.

my_secret: !vault |
$ANSIBLE_VAULT;1.1;AES256;prod
37636561366636643464376336303466613062633537323632306566653533383833366462366662
6565353063303065303831323539656138653863353230620a653638643639333133306331336365
62373737623337616130386137373461306535383538373162316263386165376131623631323434
3866363862363335620a376466656164383032633338306162326639643635663936623939666238
3161

Che cosa succede se si desidera includere più volte in un singolo playbook? Si può facilmente passare più vault-id dichiarazioni su un ansible-playbook riga di comando.

ansible-playbook –vault-id dev@/percorso/dev-vault-password-file –vault-id prod@/percorso/prod-vault-password-file del sito.yml

La rigenerazione delle chiavi

Infine, è importante regolarmente il ciclo la tua password. Per i file crittografati, è possibile utilizzare la riga di comando riportata di seguito. Il passaggio ai nuovi-vault-id parametro è facile cambiare la password che i segreti non sono crittografati con.

ansible la volta di reimpostazione –vault-id prod@/percorso/prod-vault-password-file-vecchia-nuova-volta-id prod@/percorso/prod-vault-password-file-nuovo sito.yml

Come notato sopra, la riga di comando di reimpostazione delle chiavi non funziona per crittografare le variabili. In questo caso, sarà necessario singolarmente ri-cifrare le corde e sostituirli con un dato playbook.

Le Migliori Pratiche

La sicurezza è difficile, soprattutto quando si tratta di segreti di sistemi di automazione. Con questo in mente, qui di seguito sono alcune best practices da utilizzare quando si utilizza Ansible Vault. Se abbiamo coperto alcuni di questi in precedenza, è prudente per ribadire quelle pratiche.

  • ACL protetti e privi di versione password file efile di Password non devono essere depositati all’interno di sistemi di controllo di versione, come GIT. Inoltre, assicurarsi che solo un appropriato gli utenti possono accedere al file delle password.
  • Distinti depositidi Norma, ambienti diversi, sono in uso. Pertanto, è meglio separare le necessarie credenziali negli appositi depositi.
  • File regolare e variabile di reimpostazione passwordIn caso di riutilizzo di password o perdite, è meglio regolarmente reimpostazione della password in uso per limitare l’esposizione.

Conclusione

Come con qualsiasi sistema di automazione, è di fondamentale importanza che i segreti sono adeguatamente protetti e controllati. Con Ansible volta, che il processo è semplice e flessibile. Utilizzando le migliori pratiche di cui sopra, la memorizzazione e l’utilizzo di segreti di Ansible è sicuro e sicuro.

Per estendere Ansible Vault ancora di più e prendere questo processo al livello successivo, è possibile utilizzare gli script che si integrano con la password di soluzioni per la gestione. Come si può vedere, Ansible Deposito è un ottimo modo per utilizzare secerne all’interno di Ansible playbook.