はじめに
タグ v1.33.1 (コミット
2248b7b) で検証済み。コマンドは Go と HashiCorp Vault バイナリが入った Unix シェルを想定。
前提
- Go 1.26 以降 (
go.mod:3がgo 1.26.3を指定)。 - HashiCorp Vault バイナリが
PATH上にあること (dev サーバー用)。 - リポジトリのチェックアウト。以下の手順はそのルートで実行する。
インストール
CLI をソースからビルドする。make build は go build -race -o build/ ./cmd/bank-vaults を実行する (Makefile:31)。
git clone https://github.com/bank-vaults/bank-vaults.git
cd bank-vaults
make buildバイナリは ./build/bank-vaults に出力される。
最初の動く構成
dev Vault を起動し、キーを平文ファイルに置く --mode file を使う。ローカル検証専用で、本番では aws-kms-s3 などのクラウド KMS モードを使う。
1 つ目の端末で dev Vault サーバーを起動する。
bashvault server -dev -dev-root-token-id=root2 つ目の端末で CLI をそのサーバーに向け、file モードで初期化する。
bashexport VAULT_ADDR=http://127.0.0.1:8200 ./build/bank-vaults init --mode file --file-path ./vault-keysこれで unseal キーと root token が生成され、
./vault-keysプレフィックスの下に書き込まれる。既定の mode はk8sなので (cmd/bank-vaults/main.go:196)、クラスタ外で動かすときは--mode fileを明示する必要がある。同じサーバーに対して unseal ループを実行する。
bash./build/bank-vaults unseal --mode file --file-path ./vault-keysdev Vault は unseal 済みで起動するため、ループは Vault が sealed でないとログに出して待機する。非 dev の Vault では各
vault-unseal-Nキーをファイルから読んで投入する。
動作確認
Vault CLI で seal 状態を直接確認する:
VAULT_ADDR=http://127.0.0.1:8200 vault statusSealed false なら unseal 済みである。Bank-Vaults のログでは vault is not sealed (sealed なインスタンスなら successfully unsealed vault) の行がループの正常動作を示す (cmd/bank-vaults/unseal.go:163、cmd/bank-vaults/unseal.go:176)。
次に読むもの
クラウド KMS モード・raft による HA・Vault Operator の CRD・Secrets Webhook などの本番運用は公式ドキュメント https://bank-vaults.dev/ を参照。webhook の挙動と HashiCorp の injector との比較は https://bank-vaults.dev/docs/mutating-webhook/ にある。