Vault

Vault KV v1: シンプルなキーバリューで始める静的シークレット管理

2026-04-19
NicheeLab編集部

KV v1は、バージョニングやメタデータを持たないシンプルなキーバリュー型のシークレットエンジンです。読み書きと削除に特化しており、初期ブートストラップや小規模な設定値の保管に向きます。

現在のVaultではkv v2が既定で使われることが多いため、v1を使いたい場合は有効化時に-version=1を明示します。試験ではこの差異とパスの違いが頻出です。

KV v1の概要と設計原則

KV v1は、指定したマウント配下にキーと値をそのまま保存する静的シークレットストアです。バージョニングや削除の履歴は保持せず、操作は基本的にPUT/GET/LIST/DELETEのみ。動的クレデンシャルのようなリースや自動失効は関与しません。

シンプルさが最大の利点で、アプリの初期化用APIキー、Webhookトークン、少量の設定値などに適します。既定でkv v2が選ばれがちな昨今でも、バージョン管理が不要/不要不急な場合はv1のほうが運用が軽く、ポリシーやパス設計も簡潔です。

  • 静的シークレット向け。リース/自動ローテーションなし
  • バージョニングなし。削除は即時・不可逆
  • パスは <mount>/<path>(例: secret/app)
  • LISTには明示的にlist権限が必要
  • Wrapはプロトコル機能として利用可能(エンジン非依存)

KV v1の論理フロー(認可→保管)

Client (App)capabilities (R/W)Vault Corepolicy check / token authStorage backende.g., RaftPUT/GET/LIST/DELETE <mount>/<path>・監査ログはVaultコアで記録

有効化と基本操作(CLIとHTTP)

kv v1を使うには、マウント時に-version=1を指定します。以降は mount/path へそのままPUT/GET/LIST/DELETEを行います。値は単純なキー=値のマップで、CLIは複数のk=vを一度に扱えます。

LISTには専用のHTTPメソッド(LIST)とポリシーcapability=listが必要です。削除は即時で、v2のような論理削除・復元・破壊削除はありません。

  • 有効化: vault secrets enable -version=1 kv
  • 書き込み: vault kv put <mount>/<path> k=v ...
  • 読み取り: vault kv get <mount>/<path>
  • 一覧: vault kv list <mount>/<prefix>
  • 削除: vault kv delete <mount>/<path>(不可逆)

CLIとHTTP APIの最小手順

# kv v1 を secret/ にマウント
vault secrets enable -path=secret -version=1 kv

# 書き込み(複数キー)
vault kv put secret/app api_key=s3cr3t env=prod

# 読み取り
vault kv get secret/app

# 一覧(末尾スラッシュに注意)
vault kv list secret/

# 削除(即時・不可逆)
vault kv delete secret/app

# HTTP API(書き込み)
curl \
  -H "X-Vault-Token: $VAULT_TOKEN" \
  -X PUT \
  -d '{"api_key":"s3cr3t","env":"prod"}' \
  "$VAULT_ADDR/v1/secret/app"

# HTTP API(読み取り)
curl -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_ADDR/v1/secret/app"

KV v1とv2の違い(試験対策の比較表)

Associateでは、v1とv2の相違がよく問われます。特にパスの違い(v1は<mount>/<path>、v2はdata/とmetadata/)と、削除・復元・CASの有無を確実に押さえてください。

CLIは多くの状況でマウントのバージョンを自動検出しますが、ポリシーのパス指定やHTTP APIのエンドポイントは明確に異なります。

  • v1はシンプル、バージョニングなし、即時削除
  • v2はバージョニング、CAS、論理削除/復元に対応
  • ポリシーのパス指定が最大の落とし穴
項目KV v1KV v2
データバージョニングなしあり(世代管理、メタデータ保持)
APIパス(読み書き)/v1/<mount>/<path>/v1/<mount>/data/<path>
APIパス(一覧)LIST /v1/<mount>/<prefix>LIST /v1/<mount>/metadata/<prefix>
削除の挙動即時削除(復元不可)論理削除→復元可/破壊削除で完全削除
CAS(Check-And-Set)未対応対応(競合防止)
ポリシーパス例path "secret/*" { ... }path "secret/data/*"(読み書き)、"secret/metadata/*"(一覧/管理)

ポリシー設計と最小権限(LISTを忘れない)

Vaultはデフォルト拒否です。KV v1では、読み取り(read)、書き込み(create/update)、削除(delete)、一覧(list)を必要最小限で付与します。特にLISTは明示しない限りvault kv listが失敗します。

パスはv1なら<mount>/*(例: secret/*)。v2のdata/metadataパス指定と混同しないこと。チームやアプリ単位でprefixを切ると、将来のスケールにも対応しやすくなります。

  • デフォルト拒否 → 必要最小限のcapabilitiesを明示
  • LISTは専用capability。readとは別物
  • パスの粒度はアプリ/環境単位で分割(例: secret/prod/appA/*)
  • 書き込み専用トークンと読み取り専用トークンを分離

KV v1向けサンプルACLポリシー(HCL)

path "secret/appA/*" {
  capabilities = ["create", "read", "update", "delete", "list"]
}

# 読み取り専用の例
path "secret/appA/*" {
  capabilities = ["read", "list"]
}

# ルート一覧のみ(インベントリ用途)
path "secret/" {
  capabilities = ["list"]
}

運用のベストプラクティスと落とし穴

バージョニングが無いKV v1では、誤削除・上書きの影響が直撃します。変更フローを明確化し、レビューやバックアップ(例: 定期的にexportして暗号化保管)を用意すると安全です。

キーの命名はprefixで整理し、環境/アプリ/用途で階層化します。大きなバイナリや頻繁な更新が必要なデータは不向きで、外部のストアやv2の採用を検討します。監査ログ(audit device)は必ず有効化し、誰がどのパスを読んだか記録を残しましょう。

  • 削除は不可逆 → 事前レビューとエクスポートの仕組み
  • 環境・アプリでパスを分離(prod/stg/devなど)
  • 大容量データは避け、値は必要最小限に
  • Wrapや短命トークンで取り回し時の露出を最小化
  • v2が必要な要件(履歴/復元/CAS)が無いか再確認

Associate試験対策チェックリスト

コマンドやパスの差異、ポリシーcapabilitiesの使い分けが頻出です。特にv1とv2のパス、LISTの有無、削除の挙動は取りこぼしやすいポイントです。

  • 有効化: vault secrets enable -version=1 kv(-pathで任意マウント)
  • v1のAPI: /v1/<mount>/<path>、LISTは/prefixに対して
  • v1にバージョニング/CAS/論理削除はない
  • v1のポリシーパス例: path "secret/*"
  • LIST権限が無いとkv listは失敗する
  • 削除は即時・復元不可 → 試験の引っかけに注意

問題で確認

Associate

問題 1

チームはVaultでシンプルな静的シークレットを扱いたい。secret/にKV v1を有効化し、その直下にmyappというキーセットを保存する最小手順として正しい組み合わせはどれか。

  1. A. vault secrets enable -path=secret -version=1 kv; vault kv put secret/myapp api_key=s123
  2. B. vault secrets enable -path=secret kv; vault kv put secret/data/myapp api_key=s123
  3. C. vault secrets enable -path=secret -version=2 kv; vault kv put secret/myapp api_key=s123
  4. D. vault secrets enable transit; vault write transit/myapp api_key=s123

正解: A

KV v1を使うには有効化時に-version=1を指定し、データパスは<mount>/<path>(例: secret/myapp)です。Bは-version=1を指定せず、さらにv2のdataパスを使っており不正。Cはv2の有効化。Dはtransitエンジンで用途が異なります。

よくある質問

KV v1で削除したシークレットを復元できますか?

できません。KV v1の削除は即時・不可逆です。復元や論理削除が必要な場合はKV v2の導入を検討してください。

LIST権限がなくてもreadがあれば一覧できますか?

できません。LISTはreadとは別のcapabilityです。一覧が必要なパス(例: secret/)に対してcapabilities=["list"]を明示的に付与してください。

KV v1でもレスポンスラッピング(Response Wrapping)は使えますか?

はい。レスポンスラッピングはVaultのコア機能で、エンジンに依存しません。X-Vault-Wrap-TTLを指定して読み取りレスポンスをラップし、短命のラッピングトークンで安全に受け渡しできます。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Vault

Vault のコア概念を最短距離で理解する:Secret / Auth / Policy / Token

HashiCorp Vault Associate レベルで押さえるべきコア概念(Secret Engine、Auth ...

Vault

Vault Operations Professional: 上位資格としての範囲を実務目線で押さえる

HashiCorp Vault Operations Professional(Ops Pro)の出題範囲を、Assoc...

Vault

Vaultにおけるパスベースのルーティング: マウントとAPI構造を読み解く

HashiCorp Vaultのパスベースのルーティングを、マウント設計とAPIパスの観点から整理。Associateレ...

Vault

Vault Tokens の基礎: 認証の起点となる概念

HashiCorp Vault におけるトークンの役割、種類、ライフサイクル、ポリシー連携、設計パターンをAssocia...

Vault

Vault のトークン種類を正しく使い分ける: service / batch 実践

HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...

Vaultの記事一覧 (100件)
© 2026 NicheeLab All rights reserved.