LoginSignup
5
5

More than 5 years have passed since last update.

HashiCorp Vault の基本操作を INTERACTIV TUTORIAL で学習する

Last updated at Posted at 2017-08-11

はじめに

HashiCorpのVaultについて興味を持ち、チュートリアル(INTERACTIV TUTORIAL)を実施ましたので、基本操作についてまとめておきます。

Hashi Corp Vault とは?

機密情報を管理するツール

基本用語

seal

  • 機密情報が読み書き出来ない状態

unseal

  • 機密情報が読み書きできる状態
  • seal状態からunseal 状態にするためにはKeyが必要
  • 複数のkeyを払い出しておき、unsealに必要なkeyの数を設定することもできる

INTERACTIV TUTORIALとは

INTERACTIV TUTORIALはブラウザ上でVaultの基本的な操作を学べるチュートリアルです。
解説は英語ですが、事前にVaultの概要を知っていれば太字になっているコマンドを実行するだけで基本的な操作は理解できると思います。

INTERACTIV TUTORIALの内容

  • Initializing and unsealing your Vault(初期化、seal状態からunseal状態にする)
  • Authorizing your requests to Vault(認証する)
  • Reading and writing secrets(機密情報を読み書きする)
  • Sealing your Vault(unseal状態からseal状態に戻す)

補足:
チュートリアルでは以下のコマンドを実行することで解説を進めたり、戻したりできます

next : 次の解説に進む
previous : 前の解説に戻る

Initializing and unsealing your Vault

初期化

vault initコマンドでVaultを初期化するとkeytokenが払い出されます。

以下のコマンドで初期化するとkeyが1つ払い出され、unsealに必要なkeyの数も1つになります。

$ vault init -key-shares=1 -key-threshold=1

Key 1: 07f2d4a0a494e771efe9e3a4b9e7c81b13a59dd6aaff4e3fa07cd5e41ea2e147
Initial Root Token: eddc04cc-fc0f-cac2-09b9-d29c64dcb44b

オプションで指定する数字を変更することで払い出すkeyの数やunselaに必要なkeyの数を変更できます。
例えば、keyを5つ払い出し、unsealに必要なkeyの数を3つとする場合は、以下のコマンドになります。

$ vault init -key-shares=5 -key-threshold=3

補足

初期化直後はVaultがseal状態なので認証やデータの読み書きは実施できません。

$ vault auth <root token>

Error validating token: Error making API request.

URL: GET http://127.0.0.1:47143/v1/auth/token/lookup-self
Code: 503. Errors:

* Vault is sealed

unseal

vault unsealコマンドでVaultをunseal状態にします。

引数には初期化時に払い出させたKeyを入力します。
unseal状態(Sealed: false)になると機密情報にアクセスできるようになります。

$ vault unseal <key>

Sealed: false
Key Shares: 1
Key Threshold: 1
Unseal Progress: 0

補足

unsealに必要なkeyの数を複数に指定していた場合、1つのkeyを入力するだけではunseal状態(Sealed: false)になりません。

$ vault unseal <key>

Sealed: true
Key Shares: 5
Key Threshold: 3
Unseal Progress: 1

必要な数のkeyが入力されるとunseal状態(Sealed: false)になります。

$ vault unseal <key>

Sealed: false
Key Shares: 5
Key Threshold: 3
Unseal Progress: 0

Authorizing your requests to Vault

認証

vault authコマンドで認証を行います。

Vaultがunseal状態になっても機密情報を読み書きするためにはtokenでの認証が必要になります。
チュートリアルでは初期化時に払い出されたroot tokenを利用して認証します。

$ vault auth <root token>

Successfully authenticated!
token: eddc04cc-fc0f-cac2-09b9-d29c64dcb44b
token_duration: 0
token_policies: [root]

Reading and writing secrets

機密情報の書き込み

vault writeコマンドで機密情報の書き込みを行います。

$ vault write secret/hello value=world

Success! Data written to: secret/hello

機密情報の読み込み

vault readコマンドで機密情報の読み込みを行います。

$ vault read secret/hello

Key             Value
lease_duration  2592000
value           world

補足

複数の項目を書き込むこともできます。

$ vault write secret/test value1=aaa value2=bbb value3=ccc

Success! Data written to: secret/test

$ vault read secret/test

Key             Value
lease_duration  2592000
value1          aaa
value2          bbb
value3          ccc

Sealing your Vault

seal

vault sealコマンドでVaultをseal状態にします。
seal状態にすることで認証や機密情報の読み書きが行えなくなります。

$ vault seal

Vault is now sealed.
$ vault read secret/hello

Error reading secret/hello: Error making API request.

URL: GET http://127.0.0.1:47143/v1/secret/hello
Code: 503. Errors:

* Vault is sealed

補足

unsealに必要なkeyの数を複数に指定した場合でもvault sealコマンドが1回実行されればseal状態になります。

基本コマンド

# 初期化
$ vault init -key-shares=1 -key-threshold=1

# unseal
$ vault unseal <key>

# seal
$ vault seal

# 認証
$ vault auth <token>

# 機密情報の読み込み
$ vault read secret/hello

# 機密情報の書き込み
$ vault write secret/hello value=world
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5