Vaultでバイナリファイルのread/write
Vaultでバイナリファイルを扱う
Vaultではコマンドラインまたはhttpで値を指定したり、json形式のファイルを指定してその値を保存することができます。
バイナリファイル(画像やPDFなど)も扱うことが可能なので、今回はバイナリファイルの保存/取得方法について紹介します。
dev版のビルド
今回はdev版を使用して動作確認をするため、ここを参考に、ソースからビルドします。
GOPATH環境変数(なければ適当なパスを設定)以下にsrc/github.com/hashicorpを作成し、
githubからvaultのソースを取得します。
% cd $GOPATH/src/github.com/hashicorp % git clone https://github.com/hashicorp/vault.git
ソースを取得したらビルドします。
% cd vault % make dev
これでbinディレクトリにvaultが生成されるので、dev版を使用することができます。
% ./vault version Vault v0.2.1-dev (8503f5b4b260145e5906c4105fe8a4aa799f444c)
バイナリファイルをread/writeする
では、バイナリファイルを使って動作確認してみましょう。
まずはvaultサーバをdevモードで起動しておき、VAULT_ADDRをexportしておきます。
% ./vault server -dev ・ ・ % export VAULT_ADDR='http://127.0.0.1:8200'
バイナリファイルはbase64でエンコード/デコードしなければいけないので、base64コマンドでエンコードし、
writeコマンドで登録します。(@をつけるとファイル指定)
% base64 --input test.pdf --output base64.pdf % ./vault write secret/mypdf binfile=@base64.pdf
ではreadしてみます。formatはbinaryを指定し、field(dev版で使用可能)を指定して、binfileフィールドのみを取得しています。
取得した結果をデコードし、ファイルに出力しています。
% ./vault read -format=binary -field=binfile secret/mypdf | base64 -D --output decode-test.pdf
これでバイナリファイルのwriteおよびreadができました。