NamespacesはVault Enterpriseの機能で、単一クラスタ内に強固な論理的隔離をつくり、チーム・環境・顧客単位のマルチテナントを安全に運用できます。各名前空間は認証方式、シークレットエンジン、ポリシー、エンティティ/グループ、トークンを独立管理します。
実務では“どの分離手段を選ぶか”と“運用の一貫性”が鍵です。試験ではX-Vault-Namespaceヘッダ、トークン/ポリシーのスコープ、レプリケーションやスナップショットの挙動が頻出です。本稿では安定した公式仕様に基づき、設計判断の軸と運用手順を具体化します。
NamespacesはVault Enterpriseにおける論理的テナント境界です。各名前空間は独立したポリシー評価・トークン発行・認証方式・シークレットエンジンを持ち、同一パス名でも名前空間が異なれば衝突しません。APIではX-Vault-Namespaceヘッダ、CLIでは-namespaceフラグまたはVAULT_NAMESPACE環境変数で対象を切り替えます。
運用・試験の落とし穴は“意図した名前空間に対して操作しているか”です。ヘッダや環境変数の指定漏れは、誤った名前空間へのマウントやポリシー適用を招きます。root権限のトークンも、発行された名前空間にスコープされる点を忘れないでください。
| アプローチ | 分離レベル | 運用コスト/複雑性 | 試験での要点 |
|---|---|---|---|
| Namespaces(同一クラスタ) | 強い論理分離(ポリシー/認証/エンジン/トークン独立) | 中:クラスタは1つだが名前空間管理が増える | X-Vault-Namespace、スコープ、レプリケーション時の維持 |
| パス分割のみ(単一名前空間) | 弱い論理分離(ポリシー次第) | 低:管理は単純だが誤設定リスク高 | パスの権限境界、誤設定時の影響範囲が広い |
| 物理クラスタ分離 | 最強(完全分離) | 高:インフラ/監視/更新が複数系統に | DR/Perfレプリケーションのクラスタ単位設計 |
単一クラスタ内のNamespaceによる隔離
APIとCLIでの名前空間指定(作成・一覧)
# 1) root 名前空間で team-a を作成(API)
curl -sS \
-H "X-Vault-Token: $VAULT_TOKEN" \
-H "X-Vault-Namespace: root" \
-X POST $VAULT_ADDR/v1/sys/namespaces/team-a
# 2) 一覧(LISTメソッド)。ヘッダの指定が必須
curl -sS -X LIST \
-H "X-Vault-Token: $VAULT_TOKEN" \
-H "X-Vault-Namespace: root" \
$VAULT_ADDR/v1/sys/namespaces | jq .
# 3) CLIはVAULT_NAMESPACEで明示
export VAULT_NAMESPACE=team-a
auth_method=$(vault auth list -detailed -format=json | jq 'keys')設計の基本は“誰が何を独立運用したいか”を起点にします。よくあるパターンは、組織・顧客単位で第1階層、環境(dev/stg/prod)を第2階層に置く方式です。過度な深さは運用と可視性を損なうため、2〜3階層を目安にします。
命名は一貫したスキーム(英小文字・ハイフン・環境接尾辞)を採用し、短く衝突しない形にします。短命な検証用はsandboxなどに集約し、定期的に棚卸しします。
名前空間の一覧取得と存在確認(API)
# root配下の第1階層を列挙
curl -sS -X LIST \
-H "X-Vault-Token: $VAULT_TOKEN" \
-H "X-Vault-Namespace: root" \
$VAULT_ADDR/v1/sys/namespaces | jq '.data.keys'
# team-a配下の環境を列挙
curl -sS -X LIST \
-H "X-Vault-Token: $VAULT_TOKEN" \
-H "X-Vault-Namespace: team-a" \
$VAULT_ADDR/v1/sys/namespaces | jq '.data.keys'ACLポリシーは“評価対象の名前空間”内のパスに対して作用します。トークンも名前空間にスコープされるため、team-aで発行したトークンはteam-bのシークレットにアクセスできません。root権限であってもスコープ外へは越境できません。
運用では名前空間管理用の管理者ロール(例: ns-admin)を各テナントに用意し、ポリシー登録・マウント・エンティティ管理を委任します。発行や失効の自動化はテナントごとに行い、監査容易性を高めます。
team-a にポリシーを作成しトークンを発行
# 対象の名前空間を明示
export VAULT_NAMESPACE=team-a
# 最小権限ポリシーを登録
echo '
path "kv/data/app/*" { capabilities = ["read"] }
' > read-app.hcl
vault policy write app-read read-app.hcl
# ポリシーを付与したトークン発行
vault token create -policy=app-read -period=24h -orphan各名前空間で認証方式(例: userpass、OIDC、Kubernetes、GitHub)を個別に有効化できます。同様に、kv、pki、databaseなどのシークレットエンジンもテナント単位でマウントします。パス名の重複は名前空間で吸収されるため、各テナントは同じパス規約を採用しても干渉しません。
TTLやローテーション、ロール定義は名前空間ローカルに完結します。標準運用タスク(ロール作成、エンジン有効化、チューニング)は、常に対象の名前空間を明示して実施します。
名前空間ごとの認証/シークレットエンジンの有効化
# team-a で GitHub 認証を有効化
export VAULT_NAMESPACE=team-a
vault auth enable github
vault write auth/github/config organization=my-org
# 同名パスで kv-v2 を有効化(team-a と team-b は独立)
vault secrets enable -path=kv -version=2 kv
export VAULT_NAMESPACE=team-b
vault secrets enable -path=kv -version=2 kvEnterpriseのDR/Performanceレプリケーションは、名前空間を含む状態を複製します。フェイルオーバー後もテナント境界は維持されるため、切替計画では“どの名前空間がどのエンドポイントに乗るか”を明示しておきます。
Integrated Storage(RAFT)利用時のスナップショットはクラスタ全体を対象とし、名前空間を含めて取得/復元できます。計画停止時に取得し、復元手順は非本番で定期検証します。
スナップショット運用(Integrated Storage)
# 取得(権限: 適切な管理トークン、通常はroot名前空間で実施)
vault operator raft snapshot save /backups/vault_$(date +%Y%m%d%H%M).snap
# 復元(事前にクラスタ停止/隔離した検証環境で)
vault operator raft snapshot restore /backups/vault_YYYYMMDDHHMM.snapTerraformのVaultプロバイダで名前空間やマウント、ポリシーをコード化すると、テナント増加に伴う設定ドリフトを抑制できます。プロバイダのnamespace引数で操作対象を固定し、テナントごとにワークスペースを分けると安全です。
Enterpriseのクォータ(レートリミット等)は名前空間単位で適用できます。SLAに応じてテナントごとに制限値を定義し、負荷偏りを防ぎます。
Terraformで名前空間作成 + レートリミット設定例
# Terraform (vault >= 3.x)
provider "vault" {
address = var.vault_addr
token = var.vault_token
namespace = "root"
}
resource "vault_namespace" "team_a" {
path = "team-a"
}
# team-a 内で kv をマウント(別プロバイダでスコープ)
provider "vault" {
alias = "team_a"
address = var.vault_addr
token = var.vault_token
namespace = "team-a"
}
resource "vault_mount" "kv" {
provider = vault.team_a
path = "kv"
type = "kv-v2"
}
# クォータ(API例):team-a に毎秒100リクエスト
curl -sS -X POST \
-H "X-Vault-Token: $VAULT_TOKEN" \
-H "X-Vault-Namespace: root" \
-H "Content-Type: application/json" \
$VAULT_ADDR/v1/sys/quotas/rate-limit/team-a-rl \
-d '{
"rate": 100,
"interval": "1s",
"namespace": "team-a"
}'Ops
問題 1
Vault EnterpriseでNamespacesを用いた運用中、運用者が新しいkv-v2マウントをteam-a/prodに作成したつもりが、実際にはroot名前空間に作成されてしまった。最も起こりやすい原因はどれか。
正解: A
APIやCLIで名前空間指定が欠落すると“現在の名前空間”に対して操作されます。kv-v2の自動共有やレプリケーションによる昇格は起こりません。rootトークンもスコープは発行された名前空間に限定されます。
OSS版VaultでNamespacesは使えますか?
いいえ。NamespacesはVault Enterpriseの機能です。OSS版ではパス分割や別クラスタでの分離を検討してください。
名前空間をまたいでシークレットを参照できますか?
直接はできません。各名前空間は独立したポリシー/トークン境界を持つため、越境参照は設計上想定されていません。必要ならアプリ側でフェデレーション層を設ける、あるいはテナント共通の上位名前空間に共有用マウントを用意するなどのパターンを検討します。
バックアップは名前空間ごとに取得できますか?
Integrated Storageのスナップショットはクラスタ全体を対象とします。名前空間単位の部分復元は前提としていないため、復元設計は“クラスタ全体”で行い、テナント分離は切替計画と自動テストで担保します。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Vault のコア概念を最短距離で理解する:Secret / Auth / Policy / Token
HashiCorp Vault Associate レベルで押さえるべきコア概念(Secret Engine、Auth ...
Vault Operations Professional: 上位資格としての範囲を実務目線で押さえる
HashiCorp Vault Operations Professional(Ops Pro)の出題範囲を、Assoc...
Vaultにおけるパスベースのルーティング: マウントとAPI構造を読み解く
HashiCorp Vaultのパスベースのルーティングを、マウント設計とAPIパスの観点から整理。Associateレ...
Vault Tokens の基礎: 認証の起点となる概念
HashiCorp Vault におけるトークンの役割、種類、ライフサイクル、ポリシー連携、設計パターンをAssocia...
Vault のトークン種類を正しく使い分ける: service / batch 実践
HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...