vsh
是一个交互式 HashiCorp Vault shell 和 cli 工具。它带有多种常见操作,并将路径视为目录和文件。核心特点是:
cp
、 rm
、 mv
grep
搜索(子字符串或正则表达式)replace
替换键和/或值(子字符串或正则表达式)中的模式vsh -c "<cmd>"
)append
具有不同策略的键brew install vsh
nix-env -i vsh
从发布页面下载最新的静态二进制文件。
为了获得有效的令牌, vsh
使用了vault的TokenHelper机制。这意味着vsh
支持通过~/.vault-token
、 VAULT_TOKEN
和外部 token-helper 设置保管库令牌。
通过将VAULT_CACERT
环境变量设置为pem
证书路径来为服务器添加 tls 证书。
vsh
需要所操作路径的List
权限。这是确定路径是否指向路径树中的节点或叶子所必需的。此外,需要收集自动完成数据。
更改数据的命令(例如cp
或mv
)还需要对所操作路径的Read
Write
。
为了可靠地发现所有可用的后端,理想情况下vsh
使用的保管库令牌具有sys/mount
上的List
权限。然而,这并不是一个硬性要求。如果令牌没有sys/mount
上的List
权限,则vsh
事先不知道可用的后端。这意味着最初在顶层(后端)不会有路径自动完成。无论如何, vsh
将尝试使用尽力而为的策略来可靠地确定每个输入路径的 kv 版本。
export VAULT_ADDR=http://localhost:8080
export VAULT_TOKEN=root
export VAULT_PATH=secret/ # VAULT_PATH is optional
./vsh
http://localhost:8080 /secret/>
注意:给定的标记用于自动完成,即List()
查询是使用该标记完成的,即使您没有rm
或mv
任何内容。 vsh
缓存List()
结果以减少查询量。但是,执行每个命令后,缓存将被清除,以便准确完成制表符补全。如果您的令牌的使用次数有限,请考虑使用非交互模式或关闭自动完成功能,以避免List()
查询。
要减少对保管库的查询数量,您可以通过两种方式禁用路径自动完成:
./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/"
处理金库机密至关重要,这使得质量和正确的行为成为vsh
的一等公民。话虽这么说, vsh
仍然是一个小型开源项目,这意味着我们无法提供任何保证。然而,我们非常重视测试驱动开发。每个 PR 都经过一系列广泛的集成测试的测试。绝大多数测试在 KV1 和 KV2 上运行,每个测试都针对 Vault 1.13.4
和1.16.2
运行,即,两者之间的 Vault 版本也可能兼容。
vsh
风险由您自行承担。我们不承担任何责任,也不提供任何保证。
随时欢迎任何形式的贡献!如果没有社区的贡献, vsh
就不会成为今天的工具。
要求:
golang
( >= v1.21
)docker
make
命令 make compile
make get-bats
make integration-tests
-v DEBUG
设置调试日志级别,这还会创建一个vsh_trace.log
文件来记录来自 Vault API 的任何错误对象。