Hur man Använder Ansible Arkiv att Lagra Hemliga Nycklar

0
162

Med de flesta automation, autentiseringsuppgifter som behövs för att verifiera och använda säkra resurser. Vad har alltid varit en utmaning är hur man bäst för att lagra uppgifterna på ett säkert sätt. Ansible är ett automationssystem som erbjuder mjukvara för proviantering, konfigurationshantering, och ansökan distributioner.

Som med alla automationssystem, Ansible behöver ett säkert sätt att förvara hemligheter. I fall av Ansible, som systemet kallas Ansible Vault. Ansible Vault ger en plattformsoberoende lösning för att säkert lagra autentiseringsuppgifter.

Att Införa Ansible Vault

Ansible Vault kan användas för att kryptera en fil, eller variabler sig själva, inifrån en playbook. Som standard AES används som en delad hemlighet kryptering. Både fil-och variabel kryptering metoder har sina fördelar och nackdelar.

Kryptering

För att skapa en ny krypterad fil som heter hemligheter.yml, helt enkelt använda följande ansible-vault-kommandot.

ansible-vault skapa hemligheter.yml

Efter att fråga efter ett lösenord, ansible-vault kommando kommer att starta som standard för systemet file editor, vilket kommer att resultera i en krypterad fil på spara.

På samma sätt, för att kryptera en tidigare okrypterad fil, använd följande ansible-vault-kommandot. Observera att det använder kryptera parameter snarare än att skapa parameter.

ansible-vault kryptera hemligheter.yml

Nackdelen med att använda kryptering är läsbarheten. Om du öppnar filen så kommer du att finna att utan dekryptering, det är omöjligt att tyda innehållet.

Variabel Kryptering

Inom en playbook, är det möjligt att använda en krypterad variabel av prefacing krypterade data med !vault tag. Kör encrypt_string argument ansible_vault kommando kommer att resultera i en krypterad sträng som du kan använda på din playbooks.

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

Efter att tacka dig för ett lösenord, kommer du att få följande krypterade strängen.

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

Variabel kryptering är bra för läsbarheten, men möjligheten att använda kommandoraden uppdatering offras när du använder denna metod.

Med hjälp av Ansible Vault i Praktiken

Du kanske inser att du använder Ansible Vault i produktionen är en utmaning. För att effektivt kunna använda Ansible Valv, kan följande tekniker för att underlätta denna process.

  • Spontant Dekryptering
  • Flera Valv
  • Uppdatering

Spontant Dekryptering

Ett alternativ till öppet avkoda en fil eller en variabel medan du använder Ansible är att lagra lösenord i en skyddad och fn-versionshanterade lösenord fil. Att referera till denna lagrade lösenord, skicka helt enkelt i filen plats med hjälp av vault-password-fil som parameter.

ansible-playbook –vault-password-fil /sökväg/vault-password-fil hemligheter.yml

Detta kommer att dekryptera valfri ingår krypterade filer eller variabler med hjälp av den medföljande lösenord.

Det är mycket viktigt att inte begå din klartext lösenord filen i din version control system. På samma sätt skydda denna fil till endast den användare eller grupp som behöver tillgång till den lagrade lösenord på filsystem med hjälp av access control lists (ACL).

Flera Valv

Även om det är praktiskt att ha en enda valv med alla krypterade hemligheter, en bättre säkerhet praxis är att separera den säkra referenser till olika relevanta valv. Ett exempel på detta skulle vara att separera produktion och utveckling miljö. Tack och lov, Ansible Valvet tillåter oss att skapa flera valv och referenser som vault krypterat data kommer från att använda en etikett.

ansible-vault skapa-vault-id prod@uppmaning prod-hemligheter.yml

Ovanstående kod kommer att skapa en prod valv och fråga efter ditt lösenord i runtime (som noterades av @frågesträng). Om du redan har ett lösenord som du vill använda dig av, skicka helt enkelt in sökvägen till filen.

ansible-vault skapa-vault-id prod@/sökväg/prod-vault-password-fil prod-hemligheter.yml

Låt oss säga att vi vill kryptera samma my_secret variabel, men den här gången butik som i våra prod vault. Precis som innan, med hjälp av encrypt_string men med relevanta arkiv-id tillåter lagring av hemligheten i den angivna platsen.

ansible-vault encrypt_string –vault-id prod@/sökväg/prod-vault-password-fil ‘secret_data’ –namn ‘my_secret’

Du kommer att märka att efter AES256-string, en ny bit av texten, prod visas. Detta tyder på valvet som den krypterade texten är beläget i.

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

Vad händer om du vill inkludera flera valv i en enda playbook? Du kan lätt passera i flera arkiv-id förklaringar på en ansible-playbook kommandoraden.

ansible-playbook –vault-id dev@/sökväg/dev-vault-password-fil-vault-id prod@/sökväg/prod-vault-password-fil webbplats.yml

Uppdatering

Slutligen, det är viktigt att regelbundet cykla ditt lösenord. För filer som är krypterade, kan du använda kommandot line nedan. Som går i ny-vault-id-parametern gör det enkelt att byta lösenord för att hemligheter är krypterad med.

ansible-vault rekey –vault-id prod@/sökväg/prod-vault-password-fil-gamla-nya-vault-id prod@/sökväg/prod-vault-password-fil-ny webbplats.yml

Som nämnts ovan, kommandoraden uppdatering fungerar inte för krypterad variabler. I detta fall, du kommer att behöva individuellt kryptera strängar och ersätta dem i en viss playbook.

Bästa Praxis

Säkerhet är svårt, särskilt när det gäller att använda hemligheter inom automation-system. Med detta i åtanke, här är flera bästa praxis för att använda när använder Ansible Vault. Även om vi inte har täckt några av dessa tidigare, är det klokt att upprepa dessa metoder.

  • ACL skyddade och lösenord filer utan versionsinformationLösenord filer får inte förvaras inom versionshanteringssystem, som GIT. Dessutom, se till att endast lämpliga användare kan få tillgång till lösenordet för filen.
  • Separata valvNormalt, många olika miljöer är i bruk. Därför är det bäst att separera de nödvändiga referenser till lämpliga valv.
  • Vanlig fil och rörlig lösenord uppdateringI fråga om lösenord återanvändning eller läcker, är det bäst att regelbundet rekey lösenord som används för att begränsa exponeringen.

Slutsats

Som med alla automationssystem är det ytterst viktigt att hemligheter är ordentligt skyddad och kontrollerad. Med Ansible Vault, att processen är enkel och flexibel. Använder de bästa metoderna som beskrivs ovan, lagring och användning hemligheter inom Ansible är trygg och säker.

För att förlänga Ansible Vault ännu längre och ta denna process till nästa nivå, du kan använda skript för att integrera hantering av lösenord lösningar. Som du kan se, Ansible Vault är ett utmärkt sätt att använda utsöndrar inom Ansible playbooks.