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 的任何錯誤物件。