Your web browser is out of date. Update your browser for more security, speed and the best experience on this site.

Bewaar je geheimen op een veilige plek: HashiCorp Vault uitgelegd door onze expert

Wanneer je iets kostbaar bezit, wil je dat zo goed mogelijk beveiligen. Door het in een kluis te steken, bijvoorbeeld. Online is dat iets minder eenvoudig, maar gelukkig bestaan er interessante tools die daarbij kunnen helpen. Gertjan Roggemans, DevOps en System Engineer bij Axxes, leert je de ins en outs van HaschiCorp Vault kennen.

Deel dit artikel
Infrastructure

Gertjan Roggemans is al meer dan vijf jaar DevOps en System Engineer bij Axxes. Daarnaast is hij ook Competence Coach, wat in zijn geval inhoudt dat hij collega’s begeleidt die zich bezighouden met open source infrastructuur. Dat doet hij onder andere via keynotes, zoals de lezing over HashiCorp Vault die hij op Haxx Digital Edition gaf.

Voor wie nog nooit van HashiCorp hoorde: dit Amerikaans bedrijf maakt tools voor het beheren van moderne applicaties die bij voorkeur in de cloud draaien. In mindere mate focussen ze daarnaast op legacy applicaties of systemen die on-premise draaien.

HashiCorp heeft vier bekende producten die bedrijven helpen bij de automatisatie van hun cloud infrastructuur. Workload orchestrator Nomad kun je vergelijken met Kubernetes en is bedoeld om applicaties te laten draaien. Consul staat in voor een gestroomlijnde communicatie tussen applicaties. Terraform is een open source infrastructure as code software tool en gebruik je voor het beheren en opbrengen van infrastructuur. En dan is er nog Vault, dat dient voor security en secrets management. Dat laatste kan je ook omschrijven als ‘op een veilige en gecontroleerde manier je gevoelige informatie zoals paswoorden en data bewaren’. Een beetje zoals een fysieke kluis in een bank dus!

Welke Vault kies je?

Net zoals de ene kluis de andere niet is, zijn er ook verschillende varianten van HashiCorp Vault. Ze zijn allen geschreven in Go, een open source programmeertaal ontwikkeld bij Google. Dat zal ervoor zorgen dat applicaties makkelijk gecompileerd kunnen worden voor heel wat besturingssystemen.

Er zijn drie versies van HashiCorp Vault: een gratis open source variant, een enterprise platform en enterprise modules. Die laatste twee worden gebruikt in complexe organisaties binnen een of meerdere teams. Welke je ook gebruikt: HashiCorp biedt hun systeem aan in een statische binary, één file die je op je systeem plaatst om Vault te laten draaien. Er zijn dus geen dependencies of libraries die je moet zoeken of installeren.

Die binary gebruik je vervolgens om een server - met een web interface - te draaien. Doordat Vault volledig API-first is, kan je de tool makkelijk integreren met andere applicaties.


De kluis open en dichtdoen

Wie al eens iets in een bank heeft bewaard, weet dat een kluis vaak een grote impressionante deur heeft. Dat is ook het geval bij Vault: de eerste keer dat je de server wil opbrengen zal die ‘deur’ ontzegeld moeten worden. Dat ‘unsealen’ gebeurt door meerdere personen. Dat komt doordat er meerdere sleutels zijn - dit principe werkt op basis van shared shamir keys. Samen combineer je ze in één sleutel waarmee je de storage kan ontzegelen en decrypteren.

Klinkt als het plot van een spannende film, maar in realiteit hoef je niet steeds met meerdere mensen te zijn om je Vault te ontzegelen. In de cloud zijn al heel wat systemen om gegevens op een veilige manier te bewaren. Deze kunnen net als HSM-systemen in on-premise omgevingen worden gebruikt om de vault automatisch te unsealen.

Een sleutel hebben is één zaak, je moet je daarnaast ook identificeren. Bij Vault doe je dat door in te loggen aan de hand van tokens. Wees gerust: je hoeft de typische slinger aan letters en cijfers niet vanbuiten te leren, maar kan ook inloggen met andere authenticatiesystemen.


Wie mag er binnen?

Het voordeel aan een kluis is dat niet iedereen er zomaar binnen en buiten kan wandelen. Ook in Vault kan je bepaalde identiteiten of applicaties specifieke policies toewijzen. Zo kan je aangeven wie wat mag te zien krijgen en wat niet. Die policies kan je definiëren per API path. Je kan het wat vergelijken met Google Docs: je security team kan bepalen wie data enkel kan lezen, wie zaken mag gebruiken en wie helemaal niets mag doen.

Binnen de Vault heb je heel veel verschillende plaatsen waar je secrets in kwijt kan, de zogenaamde Secrets Engines. Er zijn er verschillende:

  • Generieke: Key Value, certificaten, SSH keys...

  • Cloud: AWS, Azure, GCP...

  • Infra: databases, andere HashiCorp-producten zoals Nomad en Consul

Onder Key Value secrets verstaan we onder andere gebruikersnamen en paswoorden. Extra handig is dat je die in JSON kan opvragen, wat volledig past binnen de filosofie van HashiCorp Vault om API-first te zijn. Je applicaties kunnen dus perfect een secret, met een curl call, in JSON-formaat uitlezen. Voldoet de aanvraag aan de policy (= mag deze persoon de kluis binnen?) zal de applicatie de nodige reply terugkrijgen. In dat geval krijgt je applicatie ook metadata mee. Wanneer de secret is aangemaakt, bijvoorbeeld, en of ze intussen verwijderd is.


De buitenbeentjes

Ook oude en legacy applicaties kunnen via een zijweg van secrets voorzien worden. Daarvoor gebruikt men de Vault Agent, een kleine applicatie die je met bepaalde opties opstart. Eigenlijk is die een soort tussenschakel. Wie er gebruik van wilt maken moet een template schrijven waarin staat welke secrets de applicatie nodig heeft. De agent vraagt die vervolgens op in Vault, steekt die in de template, rendert de template en daarna kan de template door je applicatie als configuratiebestand gebruikt worden.

Tot zover de metafoor van de kluis. HashiCorp gaat met Vault namelijk nog een stap verder. Wanneer je een secret opslaat kan het handig zijn om te weten wie wat heeft kunnen inzien of gebruiken. Je wil namelijk niet dat iemand die je bedrijf verlaat nog steeds toegang zou hebben maar je wil ook vermijden dat je in zo’n geval steeds alles zou moeten aanpassen.


Daar heeft HashiCorp wat op gevonden: Dynamic Secrets. Die laten toe om een bepaalde tijdsduur in te stellen voor de zaken die bij je Vault opgevraagd worden. Na die ‘lease tijd’ wordt hetgeen dat uit de kluis werd gehaald gewoon verwijderd. Zo weet je security team altijd wie toegang tot je gevoelige informatie heeft en met welke rechten.


Tot slot is er nog een andere noemenswaardige toepassing van Vault. Doordat we steeds meer data in de cloud verwerken, duiken er veel vragen rond privacy en de GDPR op. Daar speelt HashiCorp op in met Encryption as a Service. Het idee? Vault gaat onze data via encryptie versleutelen.

Dat gebeurt centraal, dus je moet niet in iedere applicatie afzonderlijk encryptie gaan implementeren. De applicatie stuurt de data naar Vault en krijgt die geëncrypteerd terug, waarna ze die versleuteld in de database kan steken. Nadien kan die via de API van Vault opnieuw gedecrypteerd worden. Zo kan via Vault bepaald worden wie toegang heeft tot de ontsleutelde vorm.

Benieuwd naar meer Axxes Insights?

Gertjan Roggemans Vierkant

Gertjan Roggemans

Competence Coach Infra

Lees je graag meer over Security?

Check dan hier een Insight over de Axxes Hackaton.

Lees meer
Axxes