Beskyt dine hemmeligheder med Ansible Vault

Denne Ansible vault-blog forklarer, hvordan følsomme data (adgangskoder / hemmelig nøgle / cert-filer) gemmes i krypterede filer og indlejres i Ansible Playbooks.

Højere brug af teknologi, jo større er den mulige trussel mod sikkerheden. En typisk Ansible-opsætning kræver, at du indtaster 'Secrets'. Disse hemmeligheder kunne bogstaveligt talt være alt, adgangskoder, API-tokens, SSH offentlige eller private nøgler, SSL-certifikater osv. Hvordan holder vi disse hemmeligheder sikre? Ansible har en funktion kaldet Ansible Vault.



I denne blog vil jeg demonstrere, hvordan du bruger Ansible Vault og udforske nogle af de bedste fremgangsmåder til at holde dataene sikre.



Emner, der er dækket af denne blog:

Hvis du ønsker at mestre DevOps, ' selvfølgelig ville være din go-to-mulighed.



Hvad er Ansible Vault?

At have infrastruktur som kode kan udgøre en trussel om at udsætte dine følsomme data for verden og føre til uønskede sikkerhedsproblemer. Ansible Vault er en funktion, der giver dig mulighed for at beskytte alle dine hemmeligheder. Det kan kryptere hele filer, hele YAML-playbøger eller endda et par variabler. Det giver en facilitet, hvor du ikke kun kan kryptere følsomme data, men også integrere dem i dine playbøger.

Vault implementeres med granularitet på filniveau, hvor filerne enten er helt krypterede eller helt ukrypterede. Det bruger den samme adgangskode til kryptering såvel som til dekryptering af filer, hvilket gør brug af Ansible Vault meget brugervenligt.

Hvorfor bruge Ansible Vault?

Da Ansible bruges til automatisering, er der en høj mulighed for, at playbooks indeholder visse legitimationsoplysninger, SSL-certifikater eller andre følsomme data. At gemme sådanne følsomme data som almindelig tekst er en dårlig idé. En forkert forpligtelse til tyveri af GitHub eller bærbar computer kan medføre en enorm tab for en organisation. Det er her Ansible hvælving kommer ind i billedet. Det er en fantastisk måde at have infrastruktur som kode uden at gå på kompromis med sikkerheden.



Antag, vi har en playbook, der leverer din EC2-forekomst til AWS. Du skal angive din AWS-adgangsnøgle-id og AWS-hemmelige nøgle i playbook. Du deler ikke disse nøgler med andre af åbenlyse grunde. Hvordan holder du dem ueksponerede? Der er to måder - Enten krypterer disse to variabler og integrerer dem i playbook eller krypterer hele playbook.

Dette var blot et af scenariet, hvor ansible hvælving kan bruges. Vi kan enten kryptere hele filer eller bare kryptere nogle variabler, der kan indeholde følsomme data, og derefter dekrypterer Ansible dem automatisk under kørsel. Nu kan vi sikkert forpligte disse værdier til GitHub.

Oprettelse af krypteret fil

For at oprette en krypteret fil skal du bruge ansible-vault opretter kommando og videregive filnavnet.

$ ansible-vault opret filnavn.yaml

Du bliver bedt om at oprette en adgangskode og derefter bekræfte den ved at indtaste den igen.

ansible vault create - Ansible Vault - Edureka

Når din adgangskode er bekræftet, oprettes en ny fil og åbner et redigeringsvindue. Som standard er redaktøren for Ansible Vault vi. Du kan tilføje data, gemme og afslutte.

Og din fil er krypteret.

Redigering af krypterede filer

Hvis du vil redigere en krypteret fil, kan du redigere den ved hjælp af ansible-vault redigering kommando.

$ ansible-vault rediger secrets.txt

Hvor secrets.txt er en allerede oprettet, krypteret fil.

Du bliver bedt om at indsætte adgangskoden til boksen. Filen (dekrypteret version) åbnes i en vi-editor, og derefter kan du foretage de nødvendige ændringer.

Hvis du kontrollerer output, ser du, at din tekst automatisk bliver krypteret, når du gemmer og lukker.

Visning af krypteret fil

Hvis du bare vil se en krypteret fil, kan du bruge ansible-hvælving visning kommando.

$ ansible-vault se filnavn.yml

Igen bliver du bedt om en adgangskode.

støbning af en dobbelt til en int java

og du vil se lignende output.

Gendannelse af adgangskode til hvælving

Der er selvfølgelig tidspunkter, hvor du vil ændre boksadgangskoden. Du kan bruge ansible-vault rekey kommando.

$ ansible-vault rekey secrets.txt

Du bliver bedt om hvælvingens aktuelle adgangskode og derefter den nye adgangskode og til sidst gjort ved at bekræfte den nye adgangskode.

Kryptering af ukrypterede filer

Antag at du har en fil, som du vil kryptere, kan du bruge ansible-vault-kryptering kommando.

$ ansible-vault krypterer filnavn.txt

Du bliver bedt om at indsætte og bekræfte adgangskoden, og din fil er krypteret.

Nu hvor du ser på filindholdet, er det hele krypteret.

Dekryptering af krypterede filer

Hvis du vil dekryptere en krypteret fil, kan du bruge ansible-vault dekrypter kommando.

$ ansible-vault dekrypter filnavn.txt

Som normalt beder den dig om at indsætte og bekræfte adgangskoden til hvælving.

Kryptering af specifikke variabler

Bedste praksis, når du bruger Ansible Vault, er kun at kryptere de følsomme data. I eksemplet forklaret ovenfor ønsker udviklingsteamet ikke at dele deres adgangskode med produktionen og iscenesættelsesteamet, men de har muligvis brug for adgang til bestemte data for at udføre deres egen opgave. I sådanne tilfælde skal du kun kryptere de data, du ikke vil dele med andre, og lade resten være som de er.

Ansible Vault giver dig mulighed for kun at kryptere specifikke variabler. Du kan bruge ansible-vault encrypt_string kommando for dette.

$ ansible-vault encrypt_string

Du bliver bedt om at indsætte og derefter bekræfte adgangskoden til boksen. Du kan derefter begynde at indsætte den strengværdi, du vil kryptere. Tryk på ctrl-d for at afslutte input. Nu kan du tildele dette krypteretværditil en streng i playbook.

Du kan også opnå det samme i en enkelt linje.

$ ansible-vault encrypt_string 'streng' - navn 'variabel_navn'

Dekryptering af krypterede filer under kørselstid

Hvis du ønsker at dekryptere en fil under løbetiden, kan du bruge den –Ask-vault-pass flag.

$ ansible-playbook launch.yml --ask-vault-pass

Dette vil dekryptere alle de krypterede filer, der bruges til denne launch.yml playbook til at udføre. Dette er også kun muligt, hvis alle filerne er krypteret med den samme adgangskode.

Prompter om adgangskode kan blive irriterende. Formålet med automatisering bliver meningsløst. Hvordan gør vi dette bedre? Ansible har en funktion kaldet 'adgangskodefil', der henviser til en fil, der indeholder adgangskoden. Du kan derefter bare videregive denne adgangskodefil under kørsel for at automatisere den.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

Det er også muligt at have et separat script, der specificerer adgangskoder. Du skal sørge for, at scriptfilen er eksekverbar, og adgangskoden udskrives til standardoutput for at den skal fungere uden irriterende fejl.

$ ansible-playbook launch.yml --vault-password-fil ~ / .vault_pass.py

Brug af Vault-id

Vault Id er en måde at give en identifikator til en bestemt boksadgangskode. Vault ID hjælper med at kryptere forskellige filer med forskellige adgangskoder, der skal henvises til i en playbook. Denne funktion af Ansible kom ud med frigivelsen af ​​Ansible 2.4. Forud for denne udgivelse kunne kun en hvælvingskodeord bruges i hver ansible playbook-udførelse.

Så nu, hvis du ønsker at udføre en Ansible playbook, der bruger flere filer krypteret med forskellige adgangskoder, kan du bruge Vault Id.

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filnavn.yml

Med dette kommer vi til slutningen af ​​denne Ansible Vault-blog. Det er forbløffende at indhente teknologien og få mest muligt ud af dem, men ikke ved at gå på kompromis med sikkerheden. Dette er en af ​​de bedste måder at have infrastruktur som kode (IaC).

Hvis du finder denne artikel nyttig, skal du tjekke ' tilbudt af Edureka. Det dækker alle de værktøjer, der har gjort it-branchen smartere.

Har du et spørgsmål til os? Send det venligst på og vi vender tilbage til dig.