Vault d'Hashicorp, ou comment stocker de facon sécurisée nos identifiants
Par pepin le vendredi, juin 5 2020, 10:16 - Ingénierie Système - Lien permanent
vault
Installation
Sous ubuntu, vault s'installe avec snap (comme beaucoup de produits hashicorp)
# snap install vault
Démarrer un serveur de test sans https
# vault server -dev # export VAULT_ADDR='http://127.0.0.1:8200'
il faut positionner l'environnement pour dialoguer en http, sinon nous auront une erreur http over https. vault considère son adresse par default comme https://127.0.0.1:8200/
# vault status Key Value --- ----- Seal Type shamir Initialized true Sealed false Total Shares 1 Threshold 1 Version 1.1.1 Cluster Name vault-cluster-7640183a Cluster ID 1cbdf2eb-c7ec-633d-c398-e9fa3333c7d3 HA Enabled false
Il pourra être intéressant d'avoir un cluster vault pour éviter les SPOF
Création d'une key/value
# vault kv put secret/basket login=admin Key Value --- ----- created_time 2020-06-05T08:13:16.165816113Z deletion_time n/a destroyed false version 1 # vault kv put secret/basket password=poweruser Key Value --- ----- created_time 2020-06-05T08:13:30.598469939Z deletion_time n/a destroyed false version 2
le piege est que basket est en fait versionné. Si nous faisons ces deux commandes successivement, nous notons que seul le password de stocké, et a écrasé l'ancien secret. Il faut donc, soit passer les deux k/v sur la même commande, soit utiliser un fichier pour importer nos k/v.
#vault kv put secret/basket @basket-secrets.json
ou basket-secrets.json est un json contenant nos k/v :
{ "username":"admin", "password":"poweruser" }
Lire un secret
Cela peut se faire directement, ou via un json qui sera ensuite traité par jq
# vault kv get --field password secret/basket # vault kv get --format=json secret/basket | jq -r .data.data.password
Détruire un secret
# vault kv delete secret/basket