Vaultはストレージを暗号化するためのマスターキーをShamir分散秘密で分割し、一定数のシャードを集めたときだけ復元できるようにします。これがいわゆる鍵シャーディングです。
本稿では、N-of-Mのしきい値設計、手動アンシールと自動アンシール、リキーやリカバリ鍵の違いを、コマンド例と運用ガードレールを交えて解説します。Associate / Opsレベルの出題を意識した要点整理付き。
Shamir分散秘密は、1つの秘密値をM個のシャードに分割し、N個以上を集めたときだけ復元できる方式です。Vaultはこの性質を使い、マスターキーを直接保持せず、アンシール時にしきい値分のシャード提供を受けて復元します。
Vaultが起動すると初期状態はシール済みで、ストレージのデータは暗号化バリアの背後にあります。しきい値分のアンシール鍵(シャード)が与えられると、マスターキーが復元されアンシールされます。自動アンシールを構成している場合、HSMやクラウドKMSがこの復号を自動的に行い、Shamirで配布されるのはリカバリ鍵になります。
3-of-5のShamirとVaultシール/アンシールの流れ
サンプル: 現在のシール状態を確認する
vault status
# Key Value
# Seal Type shamir | awskms | gcpckms | hsm ...
# Sealed true/false
# Unseal Progress 0/3 などシャード数Mとしきい値Nは、事業継続性と内部統制の両立で決めます。多すぎるMは配布負荷と漏えいリスクを上げ、Nが高すぎると障害時にアンシールできない恐れがあります。一般的にはM=5〜7、N=3程度から検討を開始します。
自動アンシールがある場合も、災害復旧やトークン喪失への備えとしてリカバリ鍵の保管運用を定義しておきます。PGPで各シャードを個別に暗号化し、ホット/コールドラインと監査の分離を設けるのが実務的です。
| 項目 | Unseal鍵 (Shamir) | Recovery鍵 (Shamir) | Auto-Unseal (KMS/HSM) |
|---|---|---|---|
| 主な用途 | 手動アンシールでマスターキー復元 | リカバリ操作(ルートトークン生成、リキー等) | 起動時の自動アンシール |
| 生成の有無 | 自動アンシールを使わない構成で生成 | 自動アンシール構成で生成 | 構成が有効な場合に利用 |
| 必要者 | しきい値分の保有者が対面または安全チャネルで提供 | しきい値分の保有者(通常は非常時のみ) | 外部KMS/HSMの権限保有者とVaultサーバ |
| メリット | 外部依存なく制御可能 | KMS障害時の復旧性向上 | 運用自動化と短時間復旧 |
| 注意点 | 人手依存で復旧に時間がかかる | 日常運用では使わないため保管/手順が埋もれがち | KMS/HSMのIAMや可用性設計が鍵 |
サンプル: しきい値設計に合わせた初期化オプション
vault operator init \
-key-shares=5 \
-key-threshold=3 \
-pgp-keys="key1.asc,key2.asc,key3.asc,key4.asc,key5.asc"
# 出力される各シャードは対応するPGP公開鍵で個別暗号化される初期化では、Vaultがバックエンドに暗号化バリアを構築し、Shamirで分割された鍵と初期ルートトークンを生成します。自動アンシール構成時はアンシール鍵ではなくリカバリ鍵が出力されます。
アンシールはしきい値に達するまで複数回の鍵入力を行います。クラスタでは各ノードをアンシールする必要があります(自動アンシールを除く)。
コマンド例: 初期化とアンシール
# 初期化(手動アンシール構成の例)
vault operator init -key-shares=5 -key-threshold=3 > init.out
# 出力からUnseal Key 1..5を安全に配布
# アンシール(しきい値分を順に入力)
vault operator unseal <Unseal_Key_1>
vault operator unseal <Unseal_Key_2>
vault operator unseal <Unseal_Key_3>
# 状態確認
vault status
# 自動アンシール構成時は初期化でRecovery Keyが出力される
# 通常運用ではunsealは不要(自動)。recovery操作時のみ鍵を使用運用中にシャード配布先やしきい値を変更したくなる場面では、リキーを実行します。リキーは現在のしきい値を満たす提供を受けて新しいセットを生成します。PGPを併用している場合は新しいPGP鍵を渡して再暗号化します。
ルートトークンを紛失した場合はgenerate-rootを使います。自動アンシール構成ではリカバリ鍵のしきい値を満たす必要があります。
コマンド例: リキーとルートトークン生成
# アンシール鍵のリキー(手動アンシール構成)
vault operator rekey -init -key-shares=7 -key-threshold=4
# 出力されたNonceを保持し、しきい値分の現行鍵を順に入力して承認
vault operator rekey -nonce=<nonce> <Unseal_Key_1>
...
# 自動アンシール構成でのリカバリ鍵のリキー
vault operator rekey -target=recovery -init -key-shares=5 -key-threshold=3
vault operator rekey -target=recovery -nonce=<nonce> <Recovery_Key_1>
...
# ルートトークンの再生成(generate-root)
vault operator generate-root -init
# 出力されたOTP/Nonceを保持し、しきい値分の鍵を提供
vault operator generate-root -nonce=<nonce> <Key_Share_1>
...
# 完了すると新しいルートトークンが表示(またはOTPで復号)Associate / Opsでは、ShamirのN-of-M、アンシール鍵とリカバリ鍵の違い、自動アンシールの利点と前提、リキーとgenerate-rootの使いどころを正確に区別できれば十分です。
実務では、権限分散、鍵の媒体と保管場所の分離、監査有効化、災害復旧手順の演習が鍵シャーディングの成否を分けます。
チェックリスト例: 監査と安全な受け渡し
# 監査の有効化(ファイル例)
vault audit enable file file_path=/var/log/vault_audit.log
# レスポンスラッピング(一次シークレットの受け渡し)
VAULT_TOKEN=<admin> vault kv get -wrap-ttl=5m secret/bootstrap
# 受け取り側はwrapping_tokenのみを受領し、unwrap
vault unwrap <wrapping_token>Associate / Ops
問題 1
Vaultを手動アンシールで運用している。初期化時に-key-shares=5, -key-threshold=3を設定した。計画再起動後に素早く復旧したい。正しい対応はどれか。
正解: A
手動アンシールではしきい値Nに相当する3つのアンシール鍵を順に入力すればアンシールできる。rekeyは鍵の再生成であり再起動時の必須手順ではない。管理者トークンのログインではアンシールされない。Recovery鍵は自動アンシール構成での非常時操作に用いる。
自動アンシール構成でもShamirは使われますか?
はい。通常のアンシールはKMS/HSMが担当しますが、非常時の復旧やgenerate-root、rekeyのためにShamirで分割されたRecovery鍵が生成されます。日常の起動時にはこれらを入力する必要はありません。
しきい値Nを後から変更できますか?
可能です。vault operator rekeyで新しい-key-sharesと-key-thresholdを指定してリキーします。現行のしきい値を満たす数の鍵提供が必要で、新旧の鍵セットが入れ替わります。
クラスタの各ノードでアンシールは必要ですか?
手動アンシールの場合は各ノードで必要です。自動アンシール構成ではノード起動時に外部KMS/HSMが復号を行うため、各ノードが自動でアンシールされます。
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...