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:
- Vad är Ansible Vault?
- Varför använda Ansible Vault?
- Skapa krypterad fil
- Redigera krypterade filer
- Visar krypterad fil
- Återställa valvlösenord
- Kryptera okrypterade filer
- Dekryptera krypterade filer
- Kryptera specifika variabler
- Dekryptera krypterade filer under körning
- Använda Arkiv Id
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.
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.
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.
Å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.