Vaultの本番導入を見据えて(2)
概要
前回の記事では、ローカル環境でvaultのbackgroundをZookeeperに設定し、基本的な操作を行いました。
なんだか、便利そうだけどよく分からないVault。
今回は、実運用を想定して、Auth Backendを App ID
にして、tokenの動的な発行を試しました。
Auth Backendって何?
Auth Backendとは、ユーザーの認証やアクセス制限をを行うVaultのコンポーネントです。 (https://www.vaultproject.io/docs/auth/index.html) 現状は以下のAuth Backendを使用して認証を行うことができます。 GitHub・AppID・LDAP・MFA・TLS Certificates・Tokens・Username&Password
この中でも、今回、App ID
注目しました。
その理由としては、App ID
のbackendは 、個々のサーバー/コンテナに動的に
Vaultとの認証を行うことを想定した機構であり、クラウド環境と相性が良さそうだからです。
準備
前回同様、ZookeeperをBackendにして、Vaultを起動し、unsealの状態にしておきます。
* 完全に余談ですが、前回に馬鹿なことをやってしまっていたことに気付きました。 前回、発行したrootのtokenを書き止めておくのを忘れいました。 そのため、seal状態のVaultさんはうんともすんとも言ってくれず、 結果、前回作成したZookeeperのvaultデータを全て消さなければならなくなりました。。 皆さんも、まあないでしょうけど、気をつけて下さいね。
auth のAPIからapp_id
と user_id
を登録します。
① app_id
の登録
app_id: hogehoge
$ curl \ -X POST \ -H "X-Vault-Token:$VAULT_TOKEN" \ -d '{"value":"root", "display_name":"demo"}' \ http://localhost:8200/v1/auth/app-id/map/app-id/hogehoge
② user_id
の登録
user_id: fugafuga
$ curl \ -X POST \ -H "X-Vault-Token:$VAULT_TOKEN" \ -d '{"value":"hogehoge"}' \ http://localhost:8200/v1/auth/app-id/map/user-id/fugafuga
③ app_id
と user_id
から token を発行
$ curl \ -X POST \ -d '{"app_id":"hogehoge", "user_id": "fugafuga"}' \ "http://127.0.0.1:8200/v1/auth/app-id/login"
レスポンス
{ "lease_id": "", "renewable": false, "lease_duration": 0, "data": null, "warnings": null, "auth": { "client_token": "10921cd8-001c-25cd-2e5c-2a9c2fa43e16", "policies": [ "root" ], "metadata": { "app-id": "sha1:3b2c6c10d0e78072d14e02cc4c587814d0f10f3a", "user-id": "sha1:39975bb0ba31825c4fdd3de775dd468081b3522b" }, "lease_duration": 0, "renewable": true } }
client-token
としてtokenが発行されました。
簡単ですね。
いつtokenを発行するか
VaultのサイトAuth Backend: App ID - Vault by HashiCorp に想定される使い方があったので、手順まとめてみます。
- appIDを登録し、権限を与える。(上記①。例ではroot権限)
- configuration management service にappIDを保存する。
- cloud-init system がマシン毎の
user_id
を登録する。 (上記②) - マシンを起動。マシンはconfiguration management serviceから
appID
を取得。 割り振られたuser_id
でvaultと認証を行う。(上記③)
ん。。。なんか分かりそうでわからない。 クラウド環境でいろいろ試してみます。
今回のまとめ
前回、今回とローカルで試しましたが、Vault自体がクラウド環境を想定して設計されているぽいので、 クラウド環境で実環境に即した使い方を模索します。