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