Beveilig uw geheimen met Ansible Vault



Deze Ansible-kluisblog legt uit hoe gevoelige gegevens (wachtwoorden / geheime sleutel / cert-bestanden) worden opgeslagen in gecodeerde bestanden en ingesloten in Ansible Playbooks.

Hoe hoger het gebruik van technologie, hoe groter de mogelijke bedreiging voor de veiligheid. Een typische Ansible-opzet vereist dat u 'Secrets' invoert. Deze geheimen kunnen letterlijk alles zijn, wachtwoorden, API-tokens, openbare of privé-SSH-sleutels, SSL-certificaten, enz. Hoe houden we deze geheimen veilig? Ansible biedt een functie genaamd Ansible Vault.

In deze blog laat ik zien hoe je Ansible Vault gebruikt en verken ik enkele praktische tips om de gegevens veilig te houden.





Onderwerpen die in deze blog aan bod komen:

Als je DevOps onder de knie wilt krijgen, ' natuurlijk zou uw go-to-optie zijn.



Wat is Ansible Vault?

Het hebben van infrastructuur als code kan de dreiging vormen dat uw gevoelige gegevens aan de wereld worden blootgesteld, wat kan leiden tot ongewenste beveiligingsproblemen. Ansible Vault is een functie waarmee u al uw geheimen veilig kunt bewaren. Het kan volledige bestanden, volledige YAML-playbooks of zelfs een paar variabelen coderen. Het biedt een faciliteit waarmee u niet alleen gevoelige gegevens kunt versleutelen, maar deze ook kunt integreren in uw playbooks.

Vault wordt geïmplementeerd met granulariteit op bestandsniveau, waarbij de bestanden ofwel volledig gecodeerd of volledig niet-gecodeerd zijn. Het gebruikt hetzelfde wachtwoord voor het versleutelen en voor het ontsleutelen van bestanden, wat het gebruik van Ansible Vault zeer gebruiksvriendelijk maakt.

Waarom Ansible Vault gebruiken?

Aangezien Ansible wordt gebruikt voor automatisering, is de kans groot dat playbooks bepaalde inloggegevens, SSL-certificaten of andere gevoelige gegevens bevatten. Het is een slecht idee om dergelijke gevoelige gegevens als platte tekst op te slaan. Een verkeerde verplichting tot GitHub of laptopdiefstal kan een organisatie een groot verlies bezorgen. Dit is waar Ansible-kluis in beeld komt. Het is een geweldige manier om infrastructuur als code te hebben, zonder concessies te doen aan de beveiliging.



Stel dat we een playbook hebben dat uw EC2-instantie in AWS voorziet. U moet uw AWS-toegangssleutel-ID en AWS-geheime sleutel opgeven in het playbook. U deelt deze sleutels om voor de hand liggende redenen niet met anderen. Hoe houd je ze onbelicht? Er zijn twee manieren: ofwel deze twee variabelen versleutelen en insluiten in het playbook of het hele playbook versleutelen.

Dit was slechts een van de scenario's waarin een weerbare kluis kan worden gebruikt. We kunnen ofwel volledige bestanden versleutelen of slechts enkele variabelen versleutelen die gevoelige gegevens kunnen bevatten, en Ansible ontsleutelt ze automatisch tijdens runtime. Nu kunnen we deze waarden veilig vastleggen op GitHub.

Gecodeerd bestand maken

Om een ​​versleuteld bestand te maken, gebruikt u de ansible-vault create commando en geef de bestandsnaam door.

$ ansible-vault creëer bestandsnaam.yaml

U wordt gevraagd een wachtwoord te maken en dit vervolgens te bevestigen door het opnieuw te typen.

Ansible Vault Create - Ansible Vault - Edureka

Zodra uw wachtwoord is bevestigd, wordt een nieuw bestand gemaakt en wordt een bewerkingsvenster geopend. Standaard is de editor voor Ansible Vault vi. U kunt gegevens toevoegen, opslaan en afsluiten.

samenvoegen sorteren in c ++

En uw bestand is versleuteld.

Versleutelde bestanden bewerken

Als u een gecodeerd bestand wilt bewerken, kunt u dit bewerken met ansible-kluis bewerken opdracht.

$ ansible-vault bewerk secrets.txt

Waar secrets.txt een reeds gemaakt, gecodeerd bestand is.

U wordt gevraagd om het kluiswachtwoord in te voeren. Het bestand (gedecodeerde versie) wordt geopend in een vi-editor en vervolgens kunt u de vereiste wijzigingen aanbrengen.

Als u de uitvoer controleert, ziet u dat uw tekst automatisch wordt gecodeerd wanneer u opslaat en sluit.

Gecodeerd bestand bekijken

Als u alleen een gecodeerd bestand wilt bekijken, kunt u de ansible-vault-weergave opdracht.

$ ansible-vault bekijk bestandsnaam.yml

U wordt opnieuw om een ​​wachtwoord gevraagd.

en je zult vergelijkbare output zien.

Wachtwoord kluis opnieuw intoetsen

Er zijn natuurlijk momenten waarop u het kluiswachtwoord wilt wijzigen. U kunt de ansible-vault rekey opdracht.

$ ansible-vault rekey secrets.txt

U wordt gevraagd om het huidige wachtwoord van de kluis en vervolgens het nieuwe wachtwoord, en ten slotte wordt u gedaan door het nieuwe wachtwoord te bevestigen.

Versleutelen van niet-versleutelde bestanden

Stel dat u een bestand heeft dat u wilt versleutelen, dan kunt u de ansible-kluis versleutelen opdracht.

$ ansible-vault versleutelt bestandsnaam.txt

U wordt gevraagd een wachtwoord in te voeren en te bevestigen, en uw bestand wordt gecodeerd.

Nu je naar de bestandsinhoud kijkt, is alles gecodeerd.

Versleutelde bestanden decoderen

Als u een gecodeerd bestand wilt decoderen, kunt u ansible-vault decoderen opdracht.

$ ansible-vault decodeert bestandsnaam.txt

Zoals gewoonlijk wordt u gevraagd het kluiswachtwoord in te voeren en te bevestigen.

Versleutelen van specifieke variabelen

De beste werkwijze bij het gebruik van Ansible Vault is om alleen de gevoelige gegevens te versleutelen. In het hierboven toegelichte voorbeeld wil het ontwikkelingsteam hun wachtwoord niet delen met de productie en het staging-team, maar hebben ze mogelijk toegang nodig tot bepaalde gegevens om hun eigen taak uit te voeren. In dergelijke gevallen moet u alleen de gegevens versleutelen die u niet met anderen wilt delen, en de rest laten zoals ze zijn.

Met Ansible Vault kunt u alleen specifieke variabelen versleutelen. U kunt de ansible-vault encrypt_string commando hiervoor.

$ ansible-vault encrypt_string

U wordt gevraagd om het kluiswachtwoord in te voegen en vervolgens te bevestigen. U kunt dan beginnen met het invoegen van de tekenreekswaarde die u wilt versleutelen. Druk op ctrl-d om de invoer te beëindigen. Nu kunt u dit versleuteld toewijzenwaardeaan een tekenreeks in het playbook.

U kunt hetzelfde bereiken op één regel.

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

Versleutelde bestanden decoderen tijdens runtime

Als u een bestand tijdens runtime wilt decoderen, kunt u -Ask-kluis-pass vlag.

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

Hiermee worden alle gecodeerde bestanden gedecodeerd die worden gebruikt om deze launch.yml-playbook uit te voeren. Dit is ook alleen mogelijk als alle bestanden met hetzelfde wachtwoord zijn versleuteld.

Wachtwoordaanwijzingen kunnen vervelend worden. Het doel van automatisering wordt zinloos. Hoe maken we dit beter? Ansible heeft een functie genaamd 'wachtwoordbestand' die verwijst naar een bestand met het wachtwoord. U kunt dit wachtwoordbestand dan gewoon tijdens runtime doorgeven om het te automatiseren.

$ ansible-playbook launch.yml - kluis-wachtwoord-bestand ~ / .vault_pass.txt

Het is ook mogelijk om een ​​apart script te hebben dat de wachtwoorden specificeert. U moet ervoor zorgen dat het scriptbestand uitvoerbaar is en dat het wachtwoord wordt afgedrukt naar de standaarduitvoer, zodat het zonder vervelende fouten werkt.

$ ansible-playbook launch.yml - kluis-wachtwoord-bestand ~ / .vault_pass.py

Vault-ID gebruiken

Kluis-ID is een manier om een ​​ID aan een bepaald kluiswachtwoord te geven. Kluis-ID helpt bij het versleutelen van verschillende bestanden met verschillende wachtwoorden waarnaar in een playbook kan worden verwezen. Deze functie van Ansible kwam naar buiten met de release van Ansible 2.4. Voorafgaand aan deze release kon slechts één kluiswachtwoord worden gebruikt bij elke uitvoering van een ansible playbook.

Dus als u nu een Ansible-playbook wilt uitvoeren waarin meerdere bestanden worden gebruikt die met verschillende wachtwoorden zijn gecodeerd, kunt u Vault Id gebruiken.

$ ansible-playbook --vault-id kluis-pass1 --vault-id kluis-pass2 bestandsnaam.yml

Hiermee komen we aan het einde van deze Ansible Vault-blog. Het is geweldig om technologie in te halen en er alles uit te halen, maar niet door in te boeten aan beveiliging. Dit is een van de beste manieren om Infrastructure as code (IaC) te hebben.

Als je dit artikel nuttig vindt, bekijk dan het ' aangeboden door Edureka. Het omvat alle tools die de IT-industrie slimmer hebben gemaakt.

Heeft u een vraag voor ons? Plaats het op en we nemen zo snel mogelijk contact met u op.