認証

認証方法の概要

Vaultの認証方法とその選び方
最終更新: 2026/2/17

認証方法の概要

Vaultは、様々な認証方法をサポートしており、ユーザーやアプリケーションの要件に応じて最適な方法を選択できます。

認証の仕組み

認証フロー

1. クライアント → Vault: 認証情報を送信
2. Vault: 認証情報を検証
3. Vault → クライアント: トークンを発行
4. クライアント → Vault: トークンを使用してAPIリクエスト

トークンベースの認証

すべての認証方法は、最終的にVaultトークンを発行します。

# 認証後にトークンが発行される
vault login -method=userpass username=myuser
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.

Key                    Value
---                    -----
token                  hvs.CAESIJ...
token_accessor         abc123...
token_duration         768h
token_renewable        true
token_policies         ["default" "myapp-read"]

主要な認証方法

1. Token認証

概要: 最もシンプルな認証方法。トークンを直接使用します。

用途:

  • 開発・テスト環境
  • 他の認証方法の基盤
  • 一時的なアクセス

認証方法:

vault login <token>

メリット:

  • シンプルで理解しやすい
  • すぐに使用可能

デメリット:

  • トークンの管理が必要
  • 人間のユーザーには不便

詳細はトークンをご覧ください。

2. Username/Password認証

概要: ユーザー名とパスワードで認証します。

用途:

  • 人間のユーザー
  • 開発者のアクセス
  • 管理者の操作

認証方法:

vault login -method=userpass username=myuser
Password (will be hidden):

メリット:

  • 直感的で使いやすい
  • ユーザー管理が容易

デメリット:

  • パスワード管理が必要
  • 自動化には不向き

詳細はUsername & Passwordをご覧ください。

3. AppRole認証

概要: アプリケーション向けの認証方法。Role IDとSecret IDを使用します。

用途:

  • アプリケーション
  • 自動化スクリプト
  • CI/CDパイプライン

認証方法:

vault write auth/approle/login \
  role_id=<role-id> \
  secret_id=<secret-id>

メリット:

  • 自動化に適している
  • Role IDとSecret IDの分離管理
  • Secret IDの動的生成

デメリット:

  • 初期設定がやや複雑
  • Secret IDの配布が必要

詳細はAppRoleをご覧ください。

4. LDAP/Active Directory認証

概要: 既存のLDAP/ADディレクトリと統合します。

用途:

  • 企業環境
  • 既存のユーザーディレクトリ活用
  • シングルサインオン

認証方法:

vault login -method=ldap username=myuser
Password (will be hidden):

メリット:

  • 既存のディレクトリを活用
  • ユーザー管理の一元化
  • グループベースのポリシー割り当て

デメリット:

  • LDAP/ADサーバーが必要
  • ネットワーク接続が必要

5. Kubernetes認証

概要: Kubernetes ServiceAccountを使用して認証します。

用途:

  • Kubernetes環境
  • コンテナアプリケーション
  • マイクロサービス

認証方法:

vault write auth/kubernetes/login \
  role=myapp \
  jwt=<service-account-jwt>

メリット:

  • Kubernetesとのネイティブ統合
  • ServiceAccountの自動管理
  • Podごとの細かいアクセス制御

デメリット:

  • Kubernetes環境が必要
  • 初期設定が必要

6. AWS認証

概要: AWS IAMロールやEC2インスタンスメタデータを使用します。

用途:

  • AWS環境
  • EC2インスタンス
  • Lambda関数

認証方法:

# IAM認証
vault login -method=aws

# EC2認証
vault login -method=aws role=my-role

メリット:

  • AWS IAMとの統合
  • インスタンスメタデータの活用
  • 認証情報の管理不要

デメリット:

  • AWS環境が必要
  • IAMロールの設定が必要

7. Azure認証

概要: Azure Managed IdentityやService Principalを使用します。

用途:

  • Azure環境
  • Azure VM
  • Azure Functions

認証方法:

vault login -method=azure \
  role=my-role \
  jwt=<jwt-token>

メリット:

  • Azure Managed Identityとの統合
  • 認証情報の管理不要

デメリット:

  • Azure環境が必要

8. GCP認証

概要: GCP Service AccountやGCE インスタンスメタデータを使用します。

用途:

  • GCP環境
  • GCE インスタンス
  • Cloud Functions

認証方法:

vault login -method=gcp \
  role=my-role \
  jwt=<jwt-token>

メリット:

  • GCP Service Accountとの統合
  • インスタンスメタデータの活用

デメリット:

  • GCP環境が必要

9. GitHub認証

概要: GitHubの個人アクセストークンを使用します。

用途:

  • 開発者のアクセス
  • GitHub Organizationとの統合

認証方法:

vault login -method=github token=<github-token>

メリット:

  • GitHubアカウントの活用
  • Organizationベースのアクセス制御

デメリット:

  • GitHubアカウントが必要
  • 個人アクセストークンの管理

10. JWT/OIDC認証

概要: JWT(JSON Web Token)やOIDCプロバイダーを使用します。

用途:

  • シングルサインオン
  • 外部IDプロバイダーとの統合
  • OAuth2/OIDC環境

認証方法:

vault login -method=oidc

メリット:

  • 標準的なプロトコル
  • 多様なIDプロバイダーに対応

デメリット:

  • OIDCプロバイダーの設定が必要

認証方法の比較

認証方法人間アプリ自動化クラウド統合複雑さ
Token⭐⭐⭐⭐⭐⭐⭐-
UserPass⭐⭐⭐-
AppRole⭐⭐⭐⭐⭐⭐-⭐⭐
LDAP/AD⭐⭐⭐-⭐⭐
Kubernetes-⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
AWS-⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Azure-⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
GCP-⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
GitHub⭐⭐⭐-
JWT/OIDC⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

認証方法の選び方

シナリオ別の推奨

1. 開発者のアクセス

推奨: Username/Password または LDAP/AD

# Username/Password
vault login -method=userpass username=developer1

# LDAP
vault login -method=ldap username=developer1

理由:

  • 直感的で使いやすい
  • 既存のディレクトリを活用可能

2. アプリケーションのアクセス

推奨: AppRole

vault write auth/approle/login \
  role_id=<role-id> \
  secret_id=<secret-id>

理由:

  • 自動化に適している
  • Role IDとSecret IDの分離管理

3. Kubernetes環境

推奨: Kubernetes認証

vault write auth/kubernetes/login \
  role=myapp \
  jwt=<service-account-jwt>

理由:

  • Kubernetesとのネイティブ統合
  • ServiceAccountの自動管理

4. AWS環境

推奨: AWS認証

vault login -method=aws

理由:

  • AWS IAMとの統合
  • 認証情報の管理不要

5. CI/CDパイプライン

推奨: AppRole または クラウドプロバイダー認証

# AppRole
vault write auth/approle/login \
  role_id=$VAULT_ROLE_ID \
  secret_id=$VAULT_SECRET_ID

# AWS(GitHub Actions on AWS)
vault login -method=aws

理由:

  • 自動化に適している
  • シークレットの動的生成

認証方法の有効化

基本的な有効化

# Username/Password認証を有効化
vault auth enable userpass

# AppRole認証を有効化
vault auth enable approle

# Kubernetes認証を有効化
vault auth enable kubernetes

カスタムパスで有効化

# カスタムパスで有効化
vault auth enable -path=my-userpass userpass

# 複数の同じタイプの認証方法を有効化可能
vault auth enable -path=team-a-userpass userpass
vault auth enable -path=team-b-userpass userpass

認証方法の一覧

vault auth list

出力例:

Path           Type          Description
----           ----          -----------
approle/       approle       n/a
kubernetes/    kubernetes    n/a
token/         token         token based credentials
userpass/      userpass      n/a

認証方法の無効化

# 認証方法を無効化
vault auth disable userpass

# カスタムパスの認証方法を無効化
vault auth disable my-userpass
認証方法の無効化認証方法を無効化すると、その認証方法で発行されたすべてのトークンが無効になります。慎重に実行してください。

認証ポリシーの割り当て

ユーザーへのポリシー割り当て

# Username/Passwordユーザーにポリシーを割り当て
vault write auth/userpass/users/myuser \
  password=mypassword \
  policies=myapp-read,myapp-write

# AppRoleにポリシーを割り当て
vault write auth/approle/role/myapp \
  token_policies=myapp-read,myapp-write

グループベースのポリシー割り当て

# LDAPグループにポリシーを割り当て
vault write auth/ldap/groups/developers \
  policies=dev-read,dev-write

ベストプラクティス

1. 最小権限の原則

各ユーザー・アプリケーションに必要最小限の権限のみを付与します。

# 読み取り専用ポリシー
vault write auth/userpass/users/readonly-user \
  password=password \
  policies=read-only

# 読み書き可能ポリシー
vault write auth/userpass/users/admin-user \
  password=password \
  policies=admin

2. トークンのTTL設定

トークンの有効期限を適切に設定します。

# 短いTTL(1時間)
vault write auth/approle/role/myapp \
  token_ttl=1h \
  token_max_ttl=4h

# 長いTTL(30日)
vault write auth/userpass/users/developer \
  password=password \
  token_ttl=720h

3. 環境ごとの認証方法

環境ごとに適切な認証方法を選択します。

環境推奨認証方法理由
開発UserPass, Tokenシンプル、迅速
ステージングAppRole, クラウド認証本番環境に近い
本番AppRole, クラウド認証, LDAPセキュア、自動化

4. 監査ログの有効化

すべての認証試行を記録します。

vault audit enable file file_path=/var/log/vault/audit.log

次のステップ

認証方法の概要を理解したら、具体的な認証方法の設定を学びましょう:

認証方法の選択最初はUsername/PasswordやTokenから始めて、要件に応じてAppRoleやクラウドプロバイダー認証に移行することをお勧めします。
© 2026 IBM Corporation. Licensed under CC BY 4.0.