Lire un secret du coffre¶
Le parc a deux coffres, et la première question est de savoir lequel interroger. Le critère, c'est qui tape le secret :
| Le secret est… | Coffre | Outils |
|---|---|---|
| un secret machine : clé d'API, mot de passe de service, jeton, clé SSH d'hôte | OpenBao, sur sa propre machine (pi-bao) | bao-get · bao-put |
| un secret humain : compte web, code de secours, appareil personnel | Vaultwarden | bws |
Ce partage date du 2026-09-27. Avant, tout vivait dans Vaultwarden : une note ou un script plus ancien qui y cherche une clé d'API décrit l'avant. Un garde refuse désormais d'y créer une entrée qui a la forme d'un secret machine.
Secret machine — OpenBao¶
# noms des clés d'un chemin (jamais les valeurs)
bao-get <hôte>/<stack> --keys
# lire une valeur, et la déplacer sans jamais l'afficher
bao-get <hôte>/<stack> <CLÉ> | ssh -p <port-ssh> <user>@<hôte> 'script-qui-lit-stdin'
# écrire : la valeur arrive sur stdin, jamais en argument
printf '%s' "$VALEUR" | bao-put <hôte>/<stack> <CLÉ> --maintenant
Le chemin machines/<hôte>/<stack> est le miroir du fichier de secrets chiffré du
stack. Un synchroniseur le fait descendre jusqu'au conteneur toutes les cinq minutes
(--maintenant le fait tout de suite), et fait remonter dans OpenBao toute
modification faite directement dans le fichier chiffré. Au démarrage, les hôtes ne
contactent jamais le coffre : ils lisent leur copie locale, si bien qu'un coffre
éteint n'empêche aucun service de redémarrer.
Aucun geste humain n'est requis sur un secret machine. Lire, écrire et faire tourner une clé se fait sans demander.
Secret humain — Vaultwarden¶
Le coffre est déjà déverrouillé : un service entretient la session dans
~/.cache/bw/session.
# 1. trouver l'identifiant de l'entrée — TOUJOURS filtrer
~/bin/bws list items --search <motif> | jq -r '.[] | "\(.id) \(.name)"'
# 2. lire la valeur, par un tube
~/bin/bws get password <identifiant> | <consommateur-qui-lit-stdin>
Ne jamais lancer bw unlock
Sans terminal interactif, la commande bloque jusqu'à expiration — et le coffre était déjà ouvert. C'est du temps perdu sur un problème qui n'existe pas.
bws list sans filtre rend l'objet complet, mot de passe inclus
D'où le jq de l'étape 1. Ce n'est pas du confort d'affichage : c'est ce qui
évite d'imprimer tous les mots de passe correspondant au motif.
Deux échecs se déguisent en « coffre verrouillé » :
~/.bwsessionn'existe plus (supprimé le 2026-08-20). C'était un cache orphelin figé sur une session de juin, que plusieurs sessions ont réclamé tour à tour pendant que le service, lui, écrivait dans~/.cache/bw/session.bwinvoqué sans chemin absolu échoue en contexte systemd : lePATHd'une unité ne contient pas~/.npm-global/bin. Lecommand not foundest avalé, et l'appelant conclut « coffre verrouillé » sur un coffre ouvert.
Ce que les deux coffres partagent¶
La valeur passe par un tube, jamais par l'écran, un argument de commande ou une variable affichée : elle ne traverse ni le contexte de l'agent, ni le journal de session, ni la liste des processus.
Un secret s'enregistre dès qu'il est installé, dans la même session, pas plus
tard. Un secret qui vit uniquement dans un .env sur un hôte est un secret que
personne ne retrouvera le jour où l'hôte tombe.
Dernière vérification de cette page : 2026-10-06