Vaultとは
主要な概念
Vaultの基本的な用語と概念
最終更新: 2026/2/17
主要な概念
Vaultを効果的に使用するために、まず基本的な用語と概念を理解しましょう。
シークレット(Secret)
シークレットとは、保護が必要な機密情報のことです。
シークレットの種類
| 種類 | 例 | 特徴 |
|---|---|---|
| 静的シークレット | パスワード、APIキー | 手動で設定・更新 |
| 動的シークレット | データベース認証情報 | Vaultが自動生成 |
| 暗号化キー | AES-256キー | データ暗号化に使用 |
| 証明書 | TLS/SSL証明書 | PKIで自動発行 |
シークレットの保存場所
secret/
├── myapp/
│ ├── config # アプリケーション設定
│ ├── database # データベース認証情報
│ └── api-keys # 外部API認証情報
└── shared/
└── common-config # 共有設定
トークン(Token)
トークンは、Vaultへの認証に使用される認証情報です。
トークンの特徴
# トークンの例
hvs.CAESIABcDeFgHiJkLmNoPqRsTuVwXyZ
プロパティ:
- ID: トークンの一意な識別子
- ポリシー: トークンに付与された権限
- TTL(Time To Live): 有効期限
- 更新可能性: リニューアルの可否
- 親トークン: トークンの階層構造
トークンの種類
1. ルートトークン(Root Token)
# 初期化時に生成される
vault operator init
特徴:
- すべての権限を持つ
- ポリシーの制約を受けない
- 初期設定後は無効化を推奨
Root Tokenの取り扱いRoot Tokenは最高権限を持つため、慎重に管理してください。初期設定後は速やかに無効化し、必要な場合のみ一時的に生成することを推奨します。
2. サービストークン(Service Token)
# 通常のトークン作成
vault token create -policy=myapp-read
特徴:
- ポリシーによる権限制限
- 有効期限の設定が可能
- リニューアル可能
3. バッチトークン(Batch Token)
# バッチトークン作成
vault token create -type=batch -policy=myapp-read
特徴:
- 軽量で高速
- リニューアル不可
- 短期間の使用に適している
詳細はトークンをご覧ください。
ポリシー(Policy)
ポリシーは、トークンに付与される権限を定義します。
ポリシーの基本構文
# 読み取り専用ポリシー
path "secret/data/myapp/*" {
capabilities = ["read", "list"]
}
# 読み書き可能ポリシー
path "secret/data/myapp/config" {
capabilities = ["create", "read", "update", "delete"]
}
権限(Capabilities)
| 権限 | 説明 | 用途 |
|---|---|---|
create | 新規作成 | シークレットの作成 |
read | 読み取り | シークレットの取得 |
update | 更新 | シークレットの変更 |
delete | 削除 | シークレットの削除 |
list | 一覧表示 | パスの一覧取得 |
sudo | 管理者権限 | 特権操作 |
deny | 明示的な拒否 | アクセス拒否 |
詳細はポリシーの構文をご覧ください。
認証方法(Auth Method)
認証方法は、ユーザーやアプリケーションがVaultにログインする方法です。
主要な認証方法
1. Token認証
vault login <token>
- 最もシンプルな認証方法
- 他の認証方法の基盤
2. Username/Password認証
vault login -method=userpass username=myuser
- 人間のユーザー向け
- 直感的で使いやすい
3. AppRole認証
vault write auth/approle/login \
role_id=<role-id> \
secret_id=<secret-id>
- アプリケーション向け
- 自動化に適している
4. クラウドプロバイダー認証
# AWS IAM認証
vault login -method=aws
# Kubernetes認証
vault write auth/kubernetes/login \
role=myapp \
jwt=<service-account-jwt>
- クラウド環境との統合
- 既存のIDを活用
詳細は認証方法の概要をご覧ください。
シークレットエンジン(Secrets Engine)
シークレットエンジンは、シークレットの保存、生成、暗号化を行うコンポーネントです。
主要なシークレットエンジン
1. KV(Key-Value)
# シークレットの保存
vault kv put secret/myapp/config \
username=admin \
password=secret123
用途: 静的なシークレットの保存
2. Database
# 動的な認証情報の生成
vault read database/creds/my-role
用途: データベース認証情報の動的生成
3. Transit
# データの暗号化
vault write transit/encrypt/my-key \
plaintext=$(echo "secret data" | base64)
用途: 暗号化サービス
4. PKI
# 証明書の発行
vault write pki/issue/my-role \
common_name=example.com
用途: 証明書の発行と管理
詳細はシークレットエンジンをご覧ください。
パス(Path)
パスは、Vaultのリソースを識別するための階層的な文字列です。
パスの構造
<mount-point>/<endpoint>/<resource>
例:
secret/data/myapp/config
│ │ │ │
│ │ │ └─ リソース名
│ │ └─────── エンドポイント
│ └──────────── マウントポイント
└─────────────────── シークレットエンジンタイプ
パスの例
| パス | 説明 |
|---|---|
secret/data/myapp/config | KVシークレットの読み取り |
secret/metadata/myapp/config | シークレットのメタデータ |
auth/userpass/login/myuser | ユーザー認証 |
database/creds/my-role | データベース認証情報の生成 |
sys/policy/myapp-read | ポリシーの管理 |
リース(Lease)
リースは、シークレットの有効期限を管理する仕組みです。
リースの基本
vault read database/creds/my-role
Key Value
--- -----
lease_id database/creds/my-role/abc123
lease_duration 1h
lease_renewable true
プロパティ:
- lease_id: リースの一意な識別子
- lease_duration: 有効期限(秒)
- lease_renewable: 更新可能かどうか
リースの操作
リニューアル(更新)
# リースの更新
vault lease renew database/creds/my-role/abc123
失効(Revocation)
# 特定のリースを失効
vault lease revoke database/creds/my-role/abc123
# プレフィックスに一致するすべてのリースを失効
vault lease revoke -prefix database/creds/my-role/
シール/アンシール(Seal/Unseal)
シールは、Vaultのセキュリティ状態を表します。
シール状態
vault status
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed true # シール状態
特徴:
- 暗号化キーがメモリにない
- APIリクエストを受け付けない
- データへのアクセス不可
アンシール状態
vault status
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed false # アンシール状態
特徴:
- 暗号化キーがメモリにロード済み
- APIリクエストを処理可能
- データへのアクセス可能
アンシールプロセス
# Shamir's Secret Sharingを使用(デフォルト)
vault operator unseal <key1>
vault operator unseal <key2>
vault operator unseal <key3>
仕組み:
- 初期化時に複数のUnseal Keyを生成
- 指定された数(閾値)のキーでアンシール
- デフォルト: 5つのキーのうち3つが必要
Unseal Keyの管理Unseal Keyは安全な場所に保管し、複数の管理者に分散して保管することを推奨します。これらのキーが漏洩すると、Vaultのすべてのデータにアクセスされる可能性があります。
マウント(Mount)
マウントは、シークレットエンジンや認証方法をVaultに登録することです。
シークレットエンジンのマウント
# KVシークレットエンジンをマウント
vault secrets enable -path=myapp kv-v2
# マウントポイントの確認
vault secrets list
認証方法のマウント
# Username/Password認証をマウント
vault auth enable -path=userpass userpass
# マウントポイントの確認
vault auth list
マウントポイントの特徴
- 複数の同じタイプのエンジンをマウント可能
- パスは自由に設定可能
- 各マウントポイントは独立した設定を持つ
監査デバイス(Audit Device)
監査デバイスは、すべてのVault操作を記録します。
監査ログの有効化
# ファイルベースの監査ログ
vault audit enable file file_path=/var/log/vault/audit.log
# Syslogへの出力
vault audit enable syslog
監査ログの内容
{
"time": "2024-01-15T10:30:45.123456Z",
"type": "response",
"auth": {
"client_token": "hmac-sha256:...",
"display_name": "token-user"
},
"request": {
"operation": "read",
"path": "secret/data/myapp/config"
}
}
詳細は監査ログをご覧ください。
次のステップ
主要な概念を理解したら、ユースケースでVaultの実際の活用シーンを見てみましょう。
用語の理解これらの用語は、Vaultを使用する上で頻繁に登場します。最初はすべてを覚える必要はありませんが、実際に操作しながら徐々に理解を深めていきましょう。