OpenBao/Vault-architectuur: seal, unseal en secrets engines
Hoe bewaart een secrets manager gevoelige data veilig, zelfs als de opslag zelf gecompromitteerd raakt? Het draait allemaal om seal, unseal en policies.
OpenBao (de open-source fork van HashiCorp Vault) is gebouwd rond één centraal probleem: hoe bewaar je wachtwoorden, API-sleutels en certificaten zo veilig mogelijk, terwijl applicaties er toch automatisch bij kunnen?
Seal en unseal
Alle data op de storage backend van OpenBao staat versleuteld met een hoofdsleutel. Bij het opstarten is de server sealed: zelfs met volledige toegang tot de schijf kan niemand de data lezen. Om te unsealen, zijn meerdere delen van de hoofdsleutel nodig (via Shamir's Secret Sharing) — standaard moeten bijvoorbeeld 3 van de 5 sleuteldelen worden aangeleverd door verschillende personen, zodat geen enkel individu alleen toegang heeft.
Auth methods: wie mag erbij?
Voordat een gebruiker of applicatie geheimen kan opvragen, moet die zich eerst authenticeren via een auth method: een statische token, AppRole (voor machine-to-machine), of een koppeling met LDAP/OIDC voor mensen. Na succesvolle authenticatie krijgt de aanvrager een token met bijbehorende policies.
Secrets engines: meer dan alleen opslag
De KV (key-value) engine is de eenvoudigste vorm: statische geheimen opslaan en uitlezen. Krachtiger zijn dynamische secrets engines, zoals de database-engine: die genereert bij elke aanvraag een gloednieuwe, tijdelijke databasegebruiker met een beperkte levensduur (lease). Verloopt de lease en wordt hij niet verlengd, dan wordt de toegang automatisch ingetrokken.
Policies: least privilege
Een policy beschrijft exact welke paden een token mag lezen, schrijven of beheren. Dit maakt het mogelijk om per applicatie of team strikt te beperken tot precies de geheimen die nodig zijn — niets meer.
Examentip: "Waarom heeft een applicatie na verloop van tijd geen toegang meer tot een database, zonder dat iets handmatig is aangepast?" wijst bijna altijd op een verlopen lease bij dynamische secrets.