Zoeken op website

Ansible Vault in Playbooks gebruiken om gevoelige gegevens te beschermen - Deel 10


Terwijl u Ansible gebruikt, kan het zijn dat u vertrouwelijke of geheime informatie in draaiboeken moet intoetsen. Dit omvat privé- en openbare SSH-sleutels, wachtwoorden en SSL-certificaten, om er maar een paar te noemen. Zoals we al weten, is het een slechte gewoonte om deze gevoelige informatie om voor de hand liggende redenen in platte tekst op te slaan. Deze informatie moet achter slot en grendel worden bewaard, omdat we ons alleen maar kunnen voorstellen wat er zou gebeuren als hackers of ongeautoriseerde gebruikers deze in handen zouden krijgen.

Gelukkig biedt Ansible ons een handige functie die bekend staat als Ansible Vault. Zoals de naam al doet vermoeden, helpt de Ansible Vault essentiële geheime informatie veilig te stellen, zoals we eerder hebben besproken. Ansible Vault kan variabelen versleutelen, of zelfs hele bestanden en YAML-playbooks, zoals we later zullen aantonen. Het is een zeer handige en gebruiksvriendelijke tool die hetzelfde wachtwoord vereist bij het coderen en decoderen van bestanden.

Laten we er nu in duiken en een overzicht krijgen van de verschillende bewerkingen die kunnen worden uitgevoerd met Ansible Vault.

Hoe u een gecodeerd bestand maakt in Ansible

Als u een gecodeerd Playbook-bestand wilt maken, gebruikt u eenvoudigweg de opdracht ansible-vault create en geeft u de bestandsnaam op zoals weergegeven.

ansible-vault create filename

Als u bijvoorbeeld een gecodeerd bestand mijngeheimen.yml wilt maken, voert u de opdracht uit.

ansible-vault create mysecrets.yml

Daarna wordt u om een wachtwoord gevraagd en nadat u dit hebt bevestigd, wordt een nieuw venster geopend met behulp van de vi-editor waarin u kunt beginnen met het schrijven van uw toneelstukken.

Hieronder vindt u een voorbeeld van wat informatie. Als u klaar bent, slaat u het speelboek eenvoudig op en sluit u het af. En dat is het dan ook zo'n beetje bij het maken van een gecodeerd bestand.

Om de bestandscodering te verifiëren, gebruikt u de cat-opdracht zoals weergegeven.

cat mysecrets.yml

Hoe u een gecodeerd bestand in Ansible kunt bekijken

Als u een gecodeerd bestand wilt bekijken, geeft u eenvoudigweg de opdracht ansible-vault view door, zoals hieronder weergegeven.

ansible-vault view mysecrets.yml

Opnieuw wordt u om een wachtwoord gevraagd. U heeft opnieuw toegang tot uw gegevens.

Hoe een gecodeerd bestand in Ansible te bewerken

Om wijzigingen aan te brengen in een gecodeerd bestand gebruikt u de opdracht ansible-vault edit, zoals weergegeven.

ansible-vault edit mysecrets.yml

Geef zoals altijd het wachtwoord op en ga daarna verder met het bewerken van het bestand.

Nadat u klaar bent met bewerken, slaat u de vim-editor op en sluit u deze af.

Hoe u het Ansible Vault-wachtwoord kunt wijzigen

Als u de behoefte voelt om het Ansible-kluiswachtwoord te wijzigen, kunt u dit eenvoudig doen met de opdracht ansible-vault rekey, zoals hieronder weergegeven.

ansible-vault rekey mysecrets.yml

Hierdoor wordt u om het kluiswachtwoord gevraagd en wordt u later gevraagd het nieuwe wachtwoord in te voeren en dit later te bevestigen.

Hoe een niet-gecodeerd bestand in Ansible te coderen

Stel dat u een niet-gecodeerd bestand wilt coderen, dan kunt u dit doen door de opdracht ansible-vault encrypt uit te voeren, zoals weergegeven.

ansible-vault encrypt classified.txt

U kunt het bestand later bekijken met behulp van de cat-opdracht, zoals hieronder aangegeven.

Hoe een gecodeerd bestand te decoderen

Om de inhoud van een gecodeerd bestand te bekijken, decodeert u eenvoudigweg het bestand met de ansible-vault encryptie, zoals geïllustreerd in het onderstaande voorbeeld.

ansible-vault decrypt classified.txt

Hoe specifieke variabelen in Ansible te coderen

Bovendien biedt Ansible Vault u de mogelijkheid om bepaalde variabelen te coderen. Dit wordt gedaan met behulp van de opdracht ansible-vault encrypt_string, zoals weergegeven.

ansible-vault encrypt_string 

Ansible Vault zal u om het wachtwoord vragen en u later vragen dit te bevestigen. Typ vervolgens de tekenreekswaarde die u wilt coderen. Druk ten slotte op ctrl+d. Daarna kunt u beginnen met het toewijzen van de gecodeerde waarde in een playbook.

Dit kan in één enkele regel worden bereikt, zoals hieronder weergegeven.

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

Een Playbook-bestand decoderen tijdens runtime

Als u een playbook-bestand hebt en dit tijdens runtime wilt decoderen, gebruikt u de optie --ask-vault-pass zoals weergegeven.

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

Hiermee worden alle bestanden gedecodeerd die in het draaiboek worden gebruikt, op voorwaarde dat ze met hetzelfde wachtwoord zijn gecodeerd.

De wachtwoordprompts kunnen soms vervelend zijn. Deze aanwijzingen maken automatisering onhoudbaar, vooral wanneer automatisering cruciaal is. Om het proces van het ontsleutelen van playbooks tijdens runtime te stroomlijnen, wordt aanbevolen om een apart wachtwoordbestand te hebben dat het Ansible-kluiswachtwoord bevat. Dit bestand kan vervolgens tijdens runtime worden doorgegeven, zoals weergegeven.

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

Dit brengt ons bij de conclusie van dit onderwerp en de Ansible-automatiseringsserie. We hopen dat de tutorials wat nuttige kennis hebben opgeleverd over hoe u taken op meerdere servers vanaf één centraal systeem kunt automatiseren.