Slik bruker du Ansible Vault i Playbooks for å beskytte sensitive data - del 10


Når du bruker Ansible, kan det hende du må taste inn konfidensiell eller hemmelig informasjon i spillebøker. Dette inkluderer SSH private og offentlige nøkler, passord og SSL-sertifikater for å nevne noen. Som vi allerede vet, er det dårlig praksis å lagre denne sensitive informasjonen i ren tekst av åpenbare grunner. Denne informasjonen må oppbevares under lås fordi vi bare kan forestille oss hva som ville skje hvis hackere eller uautoriserte brukere fikk tak i den.

Heldigvis gir Ansible oss en praktisk funksjon kjent som Ansible Vault. Som navnet antyder, hjelper Ansible Vault med å sikre viktig hemmelig informasjon som vi har diskutert tidligere. Ansible Vault kan kryptere variabler, eller til og med hele filer og YAML-spillebøker, som vi senere skal demonstrere. Det er et veldig hendig og brukervennlig verktøy som krever det samme passordet når du krypterer og dekrypterer filer.

La oss nå dykke inn og få en oversikt over de ulike operasjonene som kan utføres ved å bruke Ansible vault.

Hvordan lage en kryptert fil i Ansible

Hvis du vil lage en kryptert Playbook-fil, bruk ansible-vault create-kommandoen og oppgi filnavnet som vist.

ansible-vault create filename

For å lage en kryptert fil for eksempel mysecrets.yml, kjør kommandoen.

ansible-vault create mysecrets.yml

Du vil deretter bli bedt om et passord, og etter å ha bekreftet det, åpnes et nytt vindu ved hjelp av vi-editoren hvor du kan begynne å skrive skuespillene dine.

Nedenfor er et eksempel på noe informasjon. Når du er ferdig, lagrer og går du ut av spilleboken. Og det handler bare om det når du lager en kryptert fil.

For å bekrefte filkrypteringen, bruk cat-kommandoen som vist.

cat mysecrets.yml

Slik viser du en kryptert fil i Ansible

Hvis du vil se en kryptert fil, sender du bare kommandoen ansible-vault view som vist nedenfor.

ansible-vault view mysecrets.yml

Nok en gang vil du bli bedt om et passord. Nok en gang vil du ha tilgang til informasjonen din.

Hvordan redigere en kryptert fil i Ansible

For å gjøre endringer i en kryptert fil, bruk ansible-vault edit-kommandoen som vist.

ansible-vault edit mysecrets.yml

Som alltid, oppgi passordet og fortsett deretter med å redigere filen.

Etter at du er ferdig med å redigere, lagre og avslutte vim-editoren.

Hvordan endre Ansible Vault-passord

I tilfelle du føler behov for å endre Ansible-hvelv-passordet, kan du enkelt gjøre det ved å bruke ansible-vault rekey-kommandoen som vist nedenfor.

ansible-vault rekey mysecrets.yml

Dette ber deg om hvelvpassordet og ber deg senere angi det nye passordet og bekrefte det senere.

Hvordan kryptere en ukryptert fil i Ansible

Anta at du vil kryptere en ukryptert fil, kan du gjøre det ved å kjøre kommandoen ansible-vault encrypt som vist.

ansible-vault encrypt classified.txt

Du kan senere vise filen ved å bruke cat-kommandoen som angitt nedenfor.

Hvordan dekryptere en kryptert fil

For å se innholdet i en kryptert fil, dekrypterer du bare filen ved å bruke ansible-vault encrypt som illustrert i eksemplet nedenfor.

ansible-vault decrypt classified.txt

Hvordan kryptere spesifikke variabler i Ansible

I tillegg gir Ansible hvelv deg muligheten til å kryptere visse variabler. Dette gjøres ved å bruke ansible-vault encrypt_string-kommandoen som vist.

ansible-vault encrypt_string 

Ansible vault vil be deg om passordet og senere kreve at du bekrefter det. Deretter skriver du inn strengverdien du vil kryptere. Til slutt trykker du ctrl+d. Deretter kan du begynne å tildele den krypterte verdien i en spillebok.

Dette kan oppnås på en enkelt linje som vist nedenfor.

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

Hvordan dekryptere en Playbook-fil under kjøretid

Hvis du har en playbook-fil og ønsker å dekryptere den under kjøring, bruk --ask-vault-pass-alternativet som illustrert.

ansible-playbook deploy.yml --ask-vault-pass

Dette dekrypterer alle filene som brukes i spilleboken forutsatt at de ble kryptert med samme passord.

Passordforespørselen kan til tider være irriterende. Disse spørsmålene gjør automatisering uholdbar, spesielt når automatisering er nøkkelen. For å strømlinjeforme prosessen med å dekryptere playbooks under kjøring, anbefales det å ha en egen passordfil som inneholder Ansible-hvelvet-passordet. Denne filen kan deretter sendes under kjøring som vist.

ansible-playbook deploy.yml --vault-password-file  /home/tecmint/vault_pass.txt

Dette bringer oss til konklusjonen av dette emnet og Ansible-automatiseringsserien. Vi håper at veiledningene har tilført litt nyttig kunnskap om hvordan du kan automatisere oppgaver på tvers av flere servere fra ett sentralt system.