vsh
est un shell interactif HashiCorp Vault et un outil cli. Il est livré avec plusieurs opérations courantes et traite les chemins comme des répertoires et des fichiers. Les fonctionnalités principales sont :
cp
, rm
, mv
grep
(sous-chaîne ou expression régulière)replace
vsh -c "<cmd>"
)append
brew install vsh
nix-env -i vsh
Téléchargez les derniers binaires statiques à partir de la page de version.
Afin d'obtenir un jeton valide, vsh
utilise le mécanisme TokenHelper de Vault. Cela signifie que vsh
prend en charge la définition de jetons de coffre-fort via ~/.vault-token
, VAULT_TOKEN
et un assistant de jeton externe.
Ajoutez un certificat tls pour le serveur en définissant la variable d'environnement VAULT_CACERT
sur le chemin du certificat pem
.
vsh
nécessite l'autorisation List
sur les chemins exploités. Ceci est nécessaire pour déterminer si un chemin pointe vers un nœud ou une feuille dans l’arborescence des chemins. De plus, il est nécessaire de collecter des données d’auto-complétion.
Les commandes qui modifient les données comme cp
ou mv
nécessitent en outre des autorisations Read
et Write
sur les chemins exploités.
Afin de découvrir de manière fiable tous les backends disponibles, idéalement, le jeton de coffre-fort utilisé par vsh
dispose de l'autorisation List
sur sys/mount
. Cependant, ce n’est pas une exigence stricte. Si le jeton ne dispose pas de l'autorisation List
sur sys/mount
, alors vsh
ne connaît pas au préalable les backends disponibles. Cela signifie qu'au départ, il n'y aura pas de saisie semi-automatique du chemin au niveau supérieur (backend). Quoi qu'il en soit, vsh
fera de son mieux pour déterminer de manière fiable la version kv de chaque chemin entré.
export VAULT_ADDR=http://localhost:8080
export VAULT_TOKEN=root
export VAULT_PATH=secret/ # VAULT_PATH is optional
./vsh
http://localhost:8080 /secret/>
Remarque : le jeton donné est utilisé pour l'auto-complétion, c'est-à-dire que les requêtes List()
sont effectuées avec ce jeton, même si vous ne faites rien rm
ou mv
. vsh
met en cache les résultats List()
pour réduire le nombre de requêtes. Cependant, après l'exécution de chaque commande, le cache est vidé afin de permettre une complétion précise des onglets. Si votre jeton a un nombre limité d'utilisations, envisagez d'utiliser le mode non interactif ou désactivez la saisie semi-automatique pour éviter les requêtes List()
.
Pour réduire le nombre de requêtes sur Vault, vous pouvez désactiver la saisie semi-automatique du chemin de deux manières :
./vsh --disable-auto-completion
./vsh
http://localhost:8080 /secret/> toggle-auto-completion
Use path auto-completion: false
http://localhost:8080 /secret/> toggle-auto-completion
Use path auto-completion: true
export VAULT_ADDR=<addr>
export VAULT_TOKEN=<token>
./vsh -c "rm secret/dir/to/remove/"
Travailler sur les secrets du coffre-fort peut être critique, faisant de la qualité et du comportement correct un citoyen de premier ordre pour vsh
. Cela étant dit, vsh
est encore un petit projet open source, ce qui signifie que nous ne pouvons donner aucune garantie. Cependant, nous mettons fortement l’accent sur le développement piloté par les tests. Chaque PR est testé avec une suite complète de tests d'intégration. La grande majorité des tests s'exécutent sur KV1 et KV2 et chaque test s'exécute sur Vault 1.13.4
et 1.16.2
, c'est-à-dire que les versions de Vault intermédiaires sont susceptibles d'être également compatibles.
vsh
se fait à vos propres risques. Nous n'assumons aucune responsabilité et ne donnons aucune garantie.
Les contributions sous quelque forme que ce soit sont toujours les bienvenues ! Sans les contributions de la communauté, vsh
ne serait pas l'outil qu'il est aujourd'hui.
Exigences:
golang
( >= v1.21
)docker
pour les tests d'intégrationmake
des commandes simplifiées make compile
make get-bats
make integration-tests
-v DEBUG
définit le niveau de journalisation de débogage, qui crée également un fichier vsh_trace.log
pour enregistrer tout objet d'erreur de l'API du coffre-fort.