AWS Vault

Ongeveer een jaar geleden schreef ik voor mezelf een script om eenvoudig een MFA sessie via de command line op te zetten. Werkt als een tierelier, op één klein puntje na: mijn access key en secret access key staan in plain text in mijn home-directory. Dat kan beter… Gelukkig is er AWS Vault, een open source tool van 99designs.

AWS Vault bewaart IAM credentials in een keystore naar keuze, zoals in mijn geval macOS Keychain. En da’s toch net iets veiliger dan een simpel textbestandje in /home/.aws/… Iets maar.

Hoe het werkt

Installatie en configuratie zijn vrij eenvoudig en staat goed beschreven op de github pagina.

Eenmaal aan de praat zijn AWS commando’s als volgt te geven:

aws-vault exec <profiel> -- <commando>

Bijvoorbeeld:

aws-vault exec jjanssen -- aws ec2 describe-instances

De eerste keer wordt om een MFA token gevraagd en vervolgens om het keychain-wachtwoord dat bij het configureren is ingesteld. Werkt goed dus, behalve dat er ieder uur om een token gevraagd wordt en keychain nog vaker zeurt. Ook jammer is dat er een stuk meer getypt moet worden. Maar een groter probleem is dat tools als bijvoorbeeld terraform niet zomaar met AWS Vault uit de voeten kunnen. Gelukkig heeft AWS Vault ook een server functie:

aws-vault exec <profile> -s

Met de -s van server. Na invoer popt er een nieuwe shell op alwaar aws commando’s (zonder aws-vault exec ervoor) zijn in te geven. En da’s fijn. Nog fijner is dat ook vanuit andere shells aws of bijvoorbeeld terraform commando’s te geven zijn. Mits het juiste profiel opgegeven wordt. Hier schuilt ook een gevaar in, namelijk dat iedere applicatie op je computer er gebruik van kan maken. De credentials zijn nog steeds beveiligd, maar er is desondanks wel contact met AWS te zoeken. Niet iets dus om continu aan te hebben…

Desalniettemin een fijne tool, voor zowel het sporadische commando, alsook het intensieve nachtwerk :)