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/configKVシークレットの読み取り
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を使用する上で頻繁に登場します。最初はすべてを覚える必要はありませんが、実際に操作しながら徐々に理解を深めていきましょう。
© 2026 IBM Corporation. Licensed under CC BY 4.0.