Säkra dina hemligheter med Ansible Vault

Denna Ansible-valvblogg förklarar hur känslig data (lösenord / hemlig nyckel / certfiler) lagras i krypterade filer och inbäddas i Ansible Playbooks.

Ju högre användning av teknik, desto större risk för hot mot säkerheten. En typisk Ansible-inställning kräver att du matar in 'Secrets'. Dessa hemligheter kan vara bokstavligen vad som helst, lösenord, API-tokens, SSH-offentliga eller privata nycklar, SSL-certifikat osv. Hur skyddar vi dessa hemligheter? Ansible har en funktion som heter Ansible Vault.



I den här bloggen kommer jag att visa hur man använder Ansible Vault och utforska några av de bästa metoderna för att skydda data.



Ämnen som behandlas i den här bloggen:

Om du vill behärska DevOps, ' kursen skulle vara ditt alternativ.



Vad är Ansible Vault?

Att ha infrastruktur som kod kan utgöra ett hot att exponera dina känsliga data för världen, vilket kan leda till oönskade säkerhetsproblem. Ansible Vault är en funktion som låter dig skydda alla dina hemligheter. Det kan kryptera hela filer, hela YAML-spelböcker eller till och med några variabler. Det ger en möjlighet där du inte bara kan kryptera känslig data utan också integrera dem i dina spelböcker.

Valv implementeras med filnivågranularitet där filerna antingen är helt krypterade eller helt okrypterade. Den använder samma lösenord för kryptering såväl som för dekryptering av filer vilket gör att Ansible Vault är mycket användarvänligt.

Varför använda Ansible Vault?

Eftersom Ansible används för automatisering finns det en stor möjlighet att playbooks innehåller vissa referenser, SSL-certifikat eller andra känsliga data. Att spara sådana känsliga data som vanlig text är en dålig idé. Ett felaktigt engagemang för GitHub eller laptopstöld kan orsaka en organisation en enorm förlust. Det är här Ansible-valvet kommer in i bilden. Det är ett utmärkt sätt att ha infrastruktur som kod utan att kompromissa med säkerheten.



Antag att vi har en spelbok som tillhandahåller din EC2-instans på AWS. Du måste ange ditt AWS-åtkomstnyckel-id och AWS-hemliga nyckel i spelboken. Du delar inte dessa nycklar med andra av uppenbara skäl. Hur håller du dem oexponerade? Det finns två sätt - Antingen kryptera dessa två variabler och bädda in dem i spelboken eller kryptera hela spelboken.

Detta var bara ett av scenariot där ansible valv kan användas. Vi kan antingen kryptera hela filer eller bara kryptera några variabler som kan innehålla känslig data och sedan krypterar Ansible dem automatiskt under körning. Nu kan vi säkert begå dessa värden till GitHub.

Skapa krypterad fil

För att skapa en krypterad fil, använd ansible-valv skapa kommandot och skicka filnamnet.

$ ansible-vault skapa filnamn.yaml

Du uppmanas att skapa ett lösenord och sedan bekräfta det genom att skriva det igen.

ansible valv skapa - Ansible Vault - Edureka

När ditt lösenord har bekräftats skapas en ny fil som öppnar ett redigeringsfönster. Som standard är redigeraren för Ansible Vault vi. Du kan lägga till data, spara och avsluta.

Och din fil är krypterad.

Redigera krypterade filer

Om du vill redigera en krypterad fil kan du redigera den med ansible-valv redigera kommando.

$ ansible-vault redigera secrets.txt

Där secrets.txt är en redan skapad, krypterad fil.

hur man skriver ut array i php

Du uppmanas att infoga valvlösenordet. Filen (dekrypterad version) öppnas i en vi-editor och sedan kan du göra de ändringar som krävs.

Om du kontrollerar utdata kommer din text att krypteras automatiskt när du sparar och stänger.

Visar krypterad fil

Om du bara vill se en krypterad fil kan du använda ansiktsvalvvy kommando.

$ ansible-vault visa filnamn.yml

Återigen uppmanas du att ange ett lösenord.

och du ser liknande resultat.

Återställa valvlösenord

Naturligtvis finns det tillfällen där du vill ändra valvlösenordet. Du kan använda ansible-vault rekey kommando.

$ ansible-vault rekey secrets.txt

Du uppmanas med valvets nuvarande lösenord och sedan det nya lösenordet och slutligen görs genom att bekräfta det nya lösenordet.

Kryptera okrypterade filer

Antag att du har en fil som du vill kryptera kan du använda ansible-vault-kryptering kommando.

$ ansible-vault krypterar filnamn.txt

Du uppmanas att infoga och bekräfta lösenordet och din fil är krypterad.

Nu när du tittar på filinnehållet är det krypterat.

Dekryptera krypterade filer

Om du vill dekryptera en krypterad fil kan du använda den ansible-vault dekryptera kommando.

$ ansible-vault dekryptera filnamn.txt

Som vanligt uppmanas du att infoga och bekräfta valvlösenordet.

Kryptera specifika variabler

Bästa praxis när du använder Ansible Vault är att bara kryptera känslig data. I exemplet som förklaras ovan vill utvecklingsteamet inte dela sitt lösenord med produktionen och iscensättningsteamet, men de kan behöva tillgång till vissa data för att utföra sin egen uppgift. I sådana fall bör du bara kryptera de data som du inte vill dela med andra och lämna resten som det är.

Ansible Vault låter dig kryptera endast specifika variabler. Du kan använda ansible-vault encrypt_string kommando för detta.

$ ansible-vault encrypt_string

Du uppmanas att infoga och sedan bekräfta valvlösenordet. Du kan sedan börja infoga strängvärdet som du vill kryptera. Tryck på ctrl-d för att avsluta inmatningen. Nu kan du tilldela detta krypteratvärdetill en sträng i spelboken.

Du kan också uppnå samma sak i en enda rad.

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

Dekryptera krypterade filer under körning

Om du vill dekryptera en fil under körning kan du använda –Ask-vault-pass flagga.

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

Detta kommer att dekryptera alla krypterade filer som används för att starta denna launch.yml-spelbok. Detta är också endast möjligt om alla filer är krypterade med samma lösenord.

Lösenordsmeddelanden kan bli irriterande. Syftet med automatisering blir meningslöst. Hur gör vi det bättre? Ansible har en funktion som kallas 'lösenordsfil' som refererar till en fil som innehåller lösenordet. Du kan sedan bara skicka den här lösenordsfilen under körning för att automatisera den.

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

Att ha ett separat skript som anger lösenorden är också möjligt. Du måste se till att skriptfilen är körbar och att lösenordet skrivs ut till standardutdata för att det ska fungera utan irriterande fel.

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

Använda Arkiv Id

Vault Id är ett sätt att tillhandahålla en identifierare till ett visst valvlösenord. Vault ID hjälper till att kryptera olika filer med olika lösenord som ska refereras i en spelbok. Den här funktionen i Ansible kom ut med lanseringen av Ansible 2.4. Före den här utgåvan kunde bara ett valvlösenord användas i varje synlig spelbokskörning.

Så nu om du vill köra en Ansible-spelbok som använder flera filer krypterade med olika lösenord kan du använda Arkiv Id.

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

Med detta kommer vi till slutet av denna Ansible Vault-blogg. Det är fantastiskt att komma ikapp med tekniken och utnyttja dem fullt ut, men inte genom att kompromissa med säkerheten. Detta är ett av de bästa sätten att ha infrastruktur som kod (IaC).

Om du tycker att den här artikeln är till hjälp, kolla in ' erbjuds av Edureka. Den täcker alla verktyg som har gjort IT-branschen smartare.

Har du en fråga till oss? Vänligen posta det på så återkommer vi till dig.