HashiCorp Vault Serverのストレージにファイルシステムを使う

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

今回はVault Serverのストレージとしてファイルシステムを使ってみます。

やってみた

サーバ側の作業

Vault Server起動時に指定するConfigファイルを作成します。storage項目でfileを指定します。また前回同様にオレオレ証明書でTLSを有効にしています。

storage "file" {
 path = "/home/ec2-user/vault"
}

listener "tcp" {
 address     = "EC2のプライベートIPアドレス:8200"
 tls_cert_file = "/home/ec2-user/vault-server.crt"
 tls_key_file  = "/home/ec2-user/vault-server.key"
}

ファイルシステムを使う場合のパラメータはpathのみです。

Vault Serverを起動します。Storageがfileになっています。

$ sudo ./bin/vault server -config=config.hcl
==> Vault server configuration:

                     Cgo: disabled
              Listener 1: tcp (addr: "172.31.30.249:8200", cluster address: "172.31.30.249:8201", tls: "enabled")
               Log Level: info
                   Mlock: supported: true, enabled: true
                 Storage: file
                 Version: Vault v0.9.3
             Version Sha: 7d73ac4c967b3b8726c71e00c017129e1d36ad3c

==> Vault server started! Log data will stream in below:

この時点ではファイルは何もありません。

$ ls -alF ./vault
合計 8
drwxrwxr-x 2 ec2-user ec2-user 4096  2月 13 01:31 ./
drwx------ 9 ec2-user ec2-user 4096  2月 13 01:31 ../

クライアント側の作業

Vault Serverのアドレスを環境変数に設定します。

$ export VAULT_ADDR='https://EC2のパブリックIPアドレス:8200'

initializeします。

$ vault operator init -tls-skip-verify

するとcoreとsysというディレクトリが作成されます。これらのディレクトリにはVault Serverの設定などが格納されています。

$ ls -alF ./vault
合計 16
drwxrwxr-x 4 ec2-user ec2-user 4096  2月 13 01:33 ./
drwx------ 9 ec2-user ec2-user 4096  2月 13 01:31 ../
drwx------ 4 root     root     4096  2月 13 01:33 core/
drwx------ 4 root     root     4096  2月 13 01:33 sys/

Unsealして使えるようにします。

$ vault operator unseal -tls-skip-verify
$ vault operator unseal -tls-skip-verify
$ vault operator unseal -tls-skip-verify

loginします。

$ vault login -tls-skip-verify 6bcc76e3-98d8-3d5d-a8e1-a15ad3cc9ac8

さて、それでは実際に値を格納してみます。

$ vault write -tls-skip-verify secret/sasakidaisuke value=smokeymonkey
Success! Data written to: secret/sasakidaisuke

するとlogicalというディレクトリが作成されます。

$ ls -alF
合計 20
drwxrwxr-x 5 ec2-user ec2-user 4096  2月 13 01:34 ./
drwx------ 9 ec2-user ec2-user 4096  2月 13 01:31 ../
drwx------ 4 root     root     4096  2月 13 01:33 core/
drwx------ 3 root     root     4096  2月 13 01:34 logical/
drwx------ 4 root     root     4096  2月 13 01:33 sys/

この中にはアンダースコアとKeyをファイル名としたファイルが作成されています。

$ sudo tree ./vault/logical/
./vault/logical/
└── e402eb4a-b2db-3a04-46ec-8de6d339b7ec
    └── _sasakidaisuke

ファイルの中身は暗号化されており読むことが出来ません。

$ sudo cat ./vault/logical/e402eb4a-b2db-3a04-46ec-8de6d339b7ec/_sasakidaisuke
{"Value":"AAAAAQJ3GrD1OIcDbdSwHb7fpSijzl/AL6rHKYHRiABXhoxdcuUubBJ4e+PYPKA8QmiVFLRqYsqT"}

さいごに

ファイルシステムをストレージにする場合はHigh Availability Modeがサポートされておりません。開発環境等で使用する分にはお気軽に使えるでしょう。

合わせて読みたい