認証

Username & Password

ユーザー名とパスワードによる認証
最終更新: 2026/2/17

Username & Password認証

Username/Password認証は、最も直感的な認証方法です。人間のユーザーがVaultにアクセスする際に適しています。

Username/Password認証とは

Username/Password認証は、ユーザー名とパスワードのペアを使用してVaultに認証する方法です。

特徴

直感的

  • 誰でも理解しやすい
  • 学習コストが低い

管理が容易

  • ユーザーの追加・削除が簡単
  • パスワードのリセットが可能

ポリシーの柔軟な割り当て

  • ユーザーごとに異なるポリシーを設定可能

自動化には不向き

  • パスワードの入力が必要
  • スクリプトでの使用が困難

認証方法の有効化

基本的な有効化

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

出力:

Success! Enabled userpass auth method at: userpass/

カスタムパスで有効化

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

有効化の確認

vault auth list

出力:

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

ユーザーの管理

ユーザーの作成

# 基本的なユーザー作成
vault write auth/userpass/users/myuser \
  password=mypassword \
  policies=default

ポリシーを指定してユーザー作成

# 複数のポリシーを持つユーザー
vault write auth/userpass/users/developer \
  password=devpassword \
  policies=default,myapp-read,myapp-write

TTLを指定してユーザー作成

# トークンのTTLを設定
vault write auth/userpass/users/tempuser \
  password=temppass \
  policies=default \
  token_ttl=1h \
  token_max_ttl=4h

ユーザー一覧の表示

vault list auth/userpass/users

出力:

Keys
----
developer
myuser
tempuser

ユーザー情報の確認

vault read auth/userpass/users/myuser

出力:

Key                        Value
---                        -----
policies                   [default myapp-read]
token_bound_cidrs          []
token_explicit_max_ttl     0s
token_max_ttl              0s
token_no_default_policy    false
token_num_uses             0
token_period               0s
token_policies             [default myapp-read]
token_ttl                  0s
token_type                 default

パスワードの変更

# パスワードを変更
vault write auth/userpass/users/myuser/password \
  password=newpassword

ポリシーの更新

# ポリシーを更新
vault write auth/userpass/users/myuser \
  policies=default,myapp-read,myapp-write,myapp-admin

ユーザーの削除

vault delete auth/userpass/users/myuser

ログイン

CLIでのログイン

# ユーザー名を指定してログイン
vault login -method=userpass username=myuser
Password (will be hidden):

出力:

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"]
identity_policies      []
policies               ["default" "myapp-read"]
token_meta_username    myuser

パスワードを環境変数から取得

# パスワードを環境変数に設定
export VAULT_PASSWORD=mypassword

# ログイン
vault login -method=userpass username=myuser password=$VAULT_PASSWORD

Web UIでのログイン

  1. ブラウザでhttp://127.0.0.1:8200/uiにアクセス
  2. Method: Usernameを選択
  3. Username: ユーザー名を入力
  4. Password: パスワードを入力
  5. Sign Inをクリック

APIでの使用

ログインAPI

# APIでログイン
curl \
  --request POST \
  --data '{"password": "mypassword"}' \
  http://127.0.0.1:8200/v1/auth/userpass/login/myuser

レスポンス:

{
  "request_id": "abc123-def456",
  "lease_id": "",
  "renewable": false,
  "lease_duration": 0,
  "data": null,
  "auth": {
    "client_token": "hvs.CAESIJ...",
    "accessor": "abc123...",
    "policies": ["default", "myapp-read"],
    "token_policies": ["default", "myapp-read"],
    "metadata": {
      "username": "myuser"
    },
    "lease_duration": 2764800,
    "renewable": true
  }
}

トークンを使用したAPIリクエスト

# 取得したトークンを使用
TOKEN="hvs.CAESIJ..."

curl \
  --header "X-Vault-Token: $TOKEN" \
  http://127.0.0.1:8200/v1/secret/data/myapp/config

高度な設定

トークン設定のカスタマイズ

# 詳細なトークン設定
vault write auth/userpass/users/poweruser \
  password=powerpass \
  policies=admin \
  token_ttl=2h \
  token_max_ttl=8h \
  token_period=0s \
  token_bound_cidrs="10.0.0.0/8" \
  token_explicit_max_ttl=24h \
  token_no_default_policy=false \
  token_num_uses=0 \
  token_type=service

パラメータの説明:

パラメータ説明デフォルト
token_ttlトークンの初期TTLシステムデフォルト
token_max_ttlトークンの最大TTLシステムデフォルト
token_periodPeriodic Tokenの期間0(無効)
token_bound_cidrs許可するIPアドレス範囲なし
token_explicit_max_ttl明示的な最大TTL0(無制限)
token_no_default_policydefaultポリシーを付与しないfalse
token_num_usesトークンの使用回数制限0(無制限)
token_typeトークンタイプdefault

IPアドレス制限

# 特定のIPアドレスからのみアクセス可能
vault write auth/userpass/users/restricted \
  password=restrictedpass \
  policies=default \
  token_bound_cidrs="192.168.1.0/24,10.0.0.0/8"

使用回数制限

# 10回のみ使用可能なトークン
vault write auth/userpass/users/limited \
  password=limitedpass \
  policies=default \
  token_num_uses=10

実践例

開発チーム用のユーザー管理

# 開発者用ポリシーの作成
vault policy write developer - <<EOF
# 開発環境のシークレットへの読み書き
path "secret/data/dev/*" {
  capabilities = ["create", "read", "update", "delete", "list"]
}

# 本番環境のシークレットは読み取りのみ
path "secret/data/prod/*" {
  capabilities = ["read", "list"]
}
EOF

# 開発者ユーザーの作成
vault write auth/userpass/users/dev1 \
  password=dev1pass \
  policies=developer

vault write auth/userpass/users/dev2 \
  password=dev2pass \
  policies=developer

管理者用のユーザー管理

# 管理者用ポリシーの作成
vault policy write admin - <<EOF
# すべてのシークレットへのフルアクセス
path "secret/*" {
  capabilities = ["create", "read", "update", "delete", "list"]
}

# 認証方法の管理
path "auth/*" {
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}

# ポリシーの管理
path "sys/policies/*" {
  capabilities = ["create", "read", "update", "delete", "list"]
}
EOF

# 管理者ユーザーの作成
vault write auth/userpass/users/admin \
  password=adminpass \
  policies=admin \
  token_ttl=4h \
  token_max_ttl=8h

一時ユーザーの作成

# 短期間のアクセス用ユーザー
vault write auth/userpass/users/contractor \
  password=contractorpass \
  policies=read-only \
  token_ttl=8h \
  token_max_ttl=8h \
  token_explicit_max_ttl=8h

パスワードポリシー

パスワード要件の設定

Vaultでは、パスワードポリシーを定義できます(Enterprise版)。

# password-policy.hcl
length = 12
rule "charset" {
  charset = "abcdefghijklmnopqrstuvwxyz"
  min-chars = 1
}
rule "charset" {
  charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  min-chars = 1
}
rule "charset" {
  charset = "0123456789"
  min-chars = 1
}
rule "charset" {
  charset = "!@#$%^&*"
  min-chars = 1
}

セキュリティのベストプラクティス

1. 強力なパスワード

# 強力なパスワードを使用
vault write auth/userpass/users/secureuser \
  password="MyS3cur3P@ssw0rd!2024" \
  policies=default

2. 短いトークンTTL

# 短いTTLを設定
vault write auth/userpass/users/shortlived \
  password=password \
  policies=default \
  token_ttl=1h \
  token_max_ttl=4h

3. IPアドレス制限

# 社内ネットワークからのみアクセス可能
vault write auth/userpass/users/internal \
  password=password \
  policies=default \
  token_bound_cidrs="10.0.0.0/8"

4. 定期的なパスワード変更

# パスワードを定期的に変更
vault write auth/userpass/users/myuser/password \
  password=newpassword

5. 監査ログの確認

# 監査ログを有効化
vault audit enable file file_path=/var/log/vault/audit.log

# ログインの試行を確認
grep "auth/userpass/login" /var/log/vault/audit.log

トラブルシューティング

ログインに失敗する

エラー:

Error authenticating: Error making API request.
Code: 400. Errors:
* invalid username or password

確認事項:

# ユーザーが存在するか確認
vault list auth/userpass/users

# ユーザー情報を確認
vault read auth/userpass/users/myuser

パスワードを忘れた

解決策:

# 管理者権限でパスワードをリセット
vault write auth/userpass/users/myuser/password \
  password=newpassword

トークンの有効期限が短すぎる

解決策:

# TTLを延長
vault write auth/userpass/users/myuser \
  token_ttl=24h \
  token_max_ttl=72h

IPアドレス制限でアクセスできない

エラー:

Error making API request.
Code: 403. Errors:
* permission denied

解決策:

# IPアドレス制限を確認
vault read auth/userpass/users/myuser

# 制限を更新
vault write auth/userpass/users/myuser \
  token_bound_cidrs="10.0.0.0/8,192.168.1.0/24"

次のステップ

Username/Password認証を理解したら、次はAppRoleでアプリケーション向けの認証方法を学びましょう。

認証方法の使い分けUsername/Password認証は人間のユーザーに適しています。アプリケーションやスクリプトには、AppRoleやクラウドプロバイダー認証の使用を検討してください。
© 2026 IBM Corporation. Licensed under CC BY 4.0.