Auto Unseal を導入すると、日常運用で人手による Unseal は不要になりますが、その代わりに Recovery Keys が組織の最後の砦になります。
本稿では、Recovery Keys の正しい位置付け、必要となる具体的な場面、保管・ローテーション手順、ブレイクグラスの実行例までを、資格対策と実務の両面から解説します。
Auto Unseal は外部の KMS/HSM(例: AWS KMS, GCP KMS, Azure Key Vault, HSM)を使って Vault のバリア鍵を自動で復号し、起動時の Unseal 作業を不要にします。これにより Shamir の Unseal Keys は生成されません。その代替として、例外時にのみ使う運用鍵が Recovery Keys です。
Recovery Keys は Shamir の分散秘密分割で生成され、しきい値に達する数のシェアを集めることで、特定のリカバリ操作(新規 root トークンの生成や Recovery Keys の再生成など)を実行できます。通常のシークレット操作やポリシー管理には不要で、Auto Unseal 稼働中は保管・監査・定期的なテストが主な運用タスクになります。
Auto Unseal と Recovery Keys の位置付け
Auto Unseal 環境で Recovery Keys を使うのは、通常の認証・認可では解決できない例外対応だけです。最も代表的なのは、既存の root トークンを全て失い、かつポリシー上の昇格もできない場合に、新規 root トークンを発行するケースです。
また、Recovery Keys 自体の再生成(しきい値やシェア数の変更を含む)にも Recovery Keys を用います。バリア鍵のローテーション(operator rotate)は root トークンで実施し、Recovery Keys は不要です。
| 項目 | Unseal Keys (Shamir) | Recovery Keys (Auto Unseal) | Cloud KMS/HSM Key |
|---|---|---|---|
| 生成される環境 | Auto Unseal なし | Auto Unseal あり | Auto Unseal あり(外部) |
| 主目的 | Vault 起動時の手動 Unseal | 例外時のリカバリ操作(root 再発行、rekey) | バリア鍵の自動復号(起動時) |
| 保有者 | 人間のオペレーター | 人間のオペレーター | クラウド/HSM サービス |
| 日常運用での使用 | 必要(Auto Unseal なしの場合) | 不要(例外時のみ) | 必須(自動で利用される) |
| 代表 CLI | vault operator unseal | vault operator generate-root -recovery / rekey -recovery | 該当なし(Vault が透過的に使用) |
| 喪失時の影響 | 起動不可(Auto Unseal なし環境) | ブレイクグラス不能(復旧困難) | Auto Unseal 不能(KMS/HSM の可用性に依存) |
init 時に Recovery Keys のシェア数としきい値を定義します。一般的には 5 シェア中 3 をしきい値とする N-of-M 構成が多いですが、組織の人員配置・地理冗長性・監査要件を踏まえて決定します。
鍵の配布は、PGP で各担当者の公開鍵にラップして出力し、担当者ごとに秘密裏に配布・保管するのが実務的です。保管先はオフライン保管(耐火金庫)、シークレットマネージャの堅牢なスロット、あるいは物理封印付き保管庫など、二重管理を前提に選びます。
前提: Vault は起動しているが、root トークンが全て失われ、昇格もできない。Recovery Keys のしきい値分のシェアが回収可能であること。操作は監査対象として手順開始前にチェンジ記録を作成すること。
流れ: generate-root を初期化し、表示された Nonce と One-time password を控え、しきい値分の Recovery Key シェアを順次投入。最後にエンコード済みトークンを OTP で復号して root を得ます。実行後は速やかに目的タスクを完了し、root を取り消すか封じるのが望ましいです。
ブレイクグラス: Recovery Keys で新規 root を発行する
# 0) 環境確認
export VAULT_ADDR=https://vault.example.com:8200
vault status
# 1) 生成プロセスを初期化(-recovery を明示)
# 出力される Nonce と One-time password (OTP) を安全に控える
vault operator generate-root -init -recovery
# 例: 出力
# Nonce: 6f4c...e1
# One-time password: yxD-2V...-H9
# (Encoded token はこの時点では表示されない)
# 2) Recovery Key の各シェアを順次投入(しきい値回数繰り返す)
# <SHARE_i> は各オペレーターが保有する回復用シェア(復号済みの文字列)
vault operator generate-root -recovery -nonce 6f4c...e1 <SHARE_1>
vault operator generate-root -recovery -nonce 6f4c...e1 <SHARE_2>
# ... しきい値に達する最後の 1 回で Encoded token が表示される
# 例: Encoded token: VVNF... (省略)
# 3) Encoded token を OTP で復号し、root トークンを得る
vault operator generate-root -decode=VVNF... -otp=yxD-2V...-H9
# 例: Root token: s.p7y... (保護された経路で安全に共有)
# 4) 目的の作業を実施後、root の無用な長期保有を避ける
# 例: 緊急対応のための最小限の操作のみ実施
# 参考: Recovery Keys の再生成(しきい値・シェア変更)
# PGP で各担当の公開鍵を指定してラップすることを推奨
vault operator rekey -recovery -init \
-recovery-shares=5 -recovery-threshold=3 \
-pgp-keys="keybase:alice,keybase:bob,keybase:carol,keybase:dave,keybase:erin"
# 初期化後、しきい値分のシェアを順次投入
vault operator rekey -recovery <SHARE_1>
# ...(しきい値回数)
# 完了すると新しい Recovery Keys が払い出される(配布・受領記録を更新)Recovery Keys のローテーションは rekey -recovery で実施します。サービス継続に影響しないため、計画停止は不要ですが、シェア回収のための人的調整が発生します。完了後は旧シェアを速やかに廃棄し、台帳と監査記録を更新します。
バリア鍵のローテーション(vault operator rotate)は root トークンで実行し、Recovery Keys は使用しません。Auto Unseal のラップ鍵(KMS/HSM 側)のライフサイクルはクラウド/HSM のポリシーに従い、Vault 側と整合させます。監査については operator エンドポイントの呼び出しが確実に記録されるよう、少なくとも 2 系統の監査デバイスを推奨します。
試験では、Auto Unseal と Recovery Keys の役割分担、どの操作にどの鍵が要るか、コマンドのスイッチ指定を正しく選べるかが頻出です。特に generate-root と rekey に -recovery を付けるかどうか、rotate は root トークンで実行するという区別を確実に押さえてください。
設問は実務の落とし穴を突いてくることが多く、例えば「Auto Unseal だから Recovery Keys は不要」といった誤りを誘ってきます。Recovery Keys は日常では使わないが、無いと詰む最後の砦、という位置付けを忘れないこと。
Ops
問題 1
Auto Unseal を有効にした Vault クラスタで、すべての管理者が root トークンを失い、通常のポリシー昇格もできません。サービスは稼働中です。最小の停止と権限で復旧する正しい手順はどれか。
正解: C
Auto Unseal 環境では Unseal Keys は存在せず、例外時のブレイクグラスは Recovery Keys を用いて generate-root -recovery を行う。KMS のローテーションや rotate は root の再発行とは無関係であり、正解は Recovery Keys による root 生成フロー。
Auto Unseal でも Recovery Keys は必ず必要ですか?
はい。日常運用では使用しませんが、root 喪失時や Recovery Keys の再生成などの例外対応に不可欠です。初期化時にシェアとしきい値を決め、適切に配布・保管してください.
Recovery Keys を紛失した場合の影響は?
ブレイクグラスが不可能になります。root を失っていて Recovery Keys も無い場合、環境によっては復旧困難です。定期点検・受領証跡・オフライン保管・二重管理を必ず運用に組み込みましょう。
しきい値やシェア数を変更するには?サービス停止は必要ですか?
vault operator rekey -recovery -init で新しい recovery-shares と recovery-threshold を指定し、しきい値分のシェア投入で完了します。処理自体はオンラインで実施でき、通常はサービス停止を伴いません。
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...