Vault を少し使ってみる[Vault]

このエントリーをはてなブックマークに追加


2015-04-30


HashiCorp社が出したVaultとはどういうものなのか
http://kiririmode.hatenablog.jp/entry/20150429/1430279218

Starting the Vault Server
https://www.vaultproject.io/intro/getting-started/dev-server.html

を参考に、少し触ってみる。

$ vault server -dev &


で起動する。ここで "Starting the Vault Server" の注意事項をすっ飛ばして書き込みをしようとすると

$ vault write secret/hello value=hello to=world
Error writing data to secret/hello: Put https://127.0.0.1:8200/v1/secret/hello: tls: oversized record received with length 20527


とエラーが出るので、VAULT_ADDR を設定しておくのと、Unseal key/root tokenをメモっておくのを忘れないようにする。

$ export VAULT_ADDR='http://127.0.0.1:8200'
$ vault write secret/hello value=hello to=world
Success! Data written to: secret/hello


今度は書けた。

$ vault read secret/hello
Key Value
lease_id secret/hello/bfa6ec06-ed0c-9f4b-c3aa-7d43fd770b0d
lease_duration 2592000
value hello
to world


読むのもOK。削除は deleteコマンド

$ vault delete secret/hello
Success! Deleted 'secret/hello'


サーバが動作しているかの確認には status コマンドを使う

$ vault status
Sealed: false
Key Shares: 1
Key Threshold: 1
Unseal Progress: 0

High-Availability Enabled: false


mount コマンドを使って AWSのバックエンドを mount することで、動的にポリシーに応じたユーザを生成することもできるようです。

$ vault mount aws
2015/04/29 23:12:11 [INFO] core: mounted 'aws/' type: aws
Successfully mounted 'aws' at 'aws'


ここまでは aws のaccount情報なしに実行できます。

二段階認証で、消してた access key と secret key を作って試しに投入。

$ vault write aws/config/root access_key=XXXXXXXXXXXXXXXXXXXX secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


$ vault read aws/config/root
Error reading aws/config/root: Error making API request.

URL: GET http://127.0.0.1:8200/v1/aws/config/root
Code: 500. Errors:

* unsupported operation


ということで、マニュアルの通り rootの access_key/secret_keyは読めません。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1426528957000",
      "Effect": "Allow",
      "Action": [
"ec2:*"
      ],
      "Resource": [
"*"
      ]
    }
  ]
}


を policy.json として作り

$ vault write aws/roles/deploy policy=@policy.json
Success! Data written to: aws/roles/deploy


で投入。

$ vault read aws/creds/deploy
Key Value
lease_id aws/creds/deploy/0d042c53-aa8a-7ce7-9dfd-310351c465e5
lease_duration 3600
access_key XXXXXXXXXXXXXXXXXXXX
secret_key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


こんな感じで、指定したポリシーが適用されたユーザaccount生成されます(AWSのAPI叩きに行くので、ちょっと時間が掛かります)
実際 aws のダッシュボードから確認すると、vault-root... といったユーザが生成されてた。
なお、

$ vault read aws/creds/<ロール名>


するたびに、ユーザが複製されていきます。

Image

vault revoke aws/creds/deploy/<lease_id> で無効化も簡単(これまた API叩きに行くので、ちょっと時間が掛かります)

$ vault revoke aws/creds/deploy/0d042c53-aa8a-7ce7-9dfd-310351c465
Key revoked with ID 'aws/creds/deploy/0d042c53-aa8a-7ce7-9dfd-310351c465'.


revoke したあと、もう一度 aws のダッシュボードで確認したら、ユーザは削除されてました。lease_duration にある 3600秒経ったら、自動的に revoke されるのかは、ちょっと未検証。今日はこれまで。



IPv4/IPv6 meter
検索キーワードは複数指定できます
ChangeLogを検索
Google
Web www.kunitake.org
思ったより安い……時もある、Amazon

カテゴリ