HSM連携は、Vaultのマスターキー保護と自動アンシールを実現し、FIPS 140-2/140-3の要件充足に直結します。とはいえ、ベンダーごとのPKCS#11差分やFIPSモードの前提、TLS暗号スイート制約など、設計・運用で外せない細部があります。
本稿は、公式ドキュメントに基づく安定した概念を中心に、Opsとして現場で迷いがちなポイントを具体化。試験対策(Operations系)で問われやすい比較観点と落とし穴も併せて押さえます。
Vaultはシール鍵(バリア鍵)でデータを保護します。HSM連携では、この鍵素材の生成・保持・暗号処理をHSMに委譲し、起動時にHSMが自動的にアンシール(Auto Unseal)します。これにより、運用者がシャミア分散のアンシール鍵を持ち回る必要がなくなります。
PKCS#11はHSMとアプリケーションをつなぐ標準APIで、Vaultはsealタイプとしてpkcs11をサポートします。実運用ではベンダーのPKCS#11ライブラリ、スロット、PIN、キーラベルの整合性が肝になります。
FIPS適合を主張するには、FIPS認証済み暗号モジュール(VaultのFIPS準拠ビルドやHCP提供物など)と、FIPS認証済みHSM、FIPS承認アルゴリズムのみを使うTLS設定など、システム全体の設計が問われます。
| コンポーネント | 役割 | Ops/試験の要点 |
|---|---|---|
| Vault バリア鍵 | データ暗号の中核鍵 | HSMで保護し自動アンシールを成立させる |
| PKCS#11 ライブラリ | HSMとのI/F | 正しいパス・スロット・PIN・ラベルを一致させる |
| Recovery Keys | 非常時の復旧操作 | 自動アンシールでも配布対象。保管・ローテーション手順を持つ |
Vault と HSM(PKCS#11)による自動アンシールとFIPS適合の全体像
最初に押さえる確認コマンド(疎通と状態)
vault status
# HSMスロット・トークン確認(ベンダー依存。例: OpenSC)
pkcs11-tool -L
# VaultのTLS疎通確認(FIPS承認スイートのみで接続できるか)
openssl s_client -connect vault.example.com:8200 -tls1_2FIPS適合は単一プロダクトではなく、暗号モジュール、TLS構成、鍵のライフサイクル全体を含むシステム要件です。Vault単体の設定に加え、OS/ライブラリ、HSMの運用手順、監査証跡まで含めて設計します。
特にTLSは見落とされがちです。最小バージョンをTLS 1.2以上に固定し、FIPS承認スイートのみに限定します。クライアント/中間プロキシ側の非FIPSスイートを許可すると、評価で不適合判定を受けやすくなります。
| 領域 | 要件 | 確認方法 |
|---|---|---|
| 暗号モジュール | FIPS認証済みビルド/提供物を使用 | バイナリ配布元/バージョンの証跡 |
| TLS | TLS1.2+かつFIPS承認スイートのみ | listener設定/外形監査の両方で検証 |
| 鍵境界 | HSM外に秘密鍵素材を出さない | HSM監査ログと運用手順の整合 |
| 監査 | 追跡可能な監査ログ | 保管先の不変性と定期レビュー |
FIPS観点の境界イメージ
TLSのFIPS志向設定例(listener/tcp)
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 0
tls_min_version = "tls12"
# 環境のGo/OS実装に依存。代表的なFIPS承認スイートを列挙
tls_cipher_suites = [
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
]
tls_cert_file = "/etc/vault/tls/server.crt"
tls_key_file = "/etc/vault/tls/server.key"
}Vaultではsealにpkcs11を指定し、ベンダーのPKCS#11ライブラリ、スロット、PIN、キーラベルを設定します。初回起動時にHSM内で鍵を生成するか、既存ラベルの鍵を参照するかを選びます(ベンダーツールで事前作成する方式も一般的)。
ベンダーごとにライブラリのパスやスロット表現、PINポリシーが異なります。Cloud HSMやネットワーク型HSMでは、クライアントミドルウェアの状態(ログインセッションや接続数上限)が起動の成否に影響します。
| パラメータ | 意味 | ヒント |
|---|---|---|
| library | PKCS#11ライブラリのパス | ベンダー配布の.so/.dylib/.dllを指定 |
| slot | 対象スロット/トークン | pkcs11-tool -L 等で事前確認 |
| pin | HSMトークンの認証情報 | 保管・ローテ手順を明確化 |
| key_label | ラップ/暗号鍵のラベル | 既存鍵を使うか生成するかを決める |
| hmac_key_label | HMAC鍵のラベル | ラベル衝突に注意 |
起動〜自動アンシールの最小フロー
vault.hcl(PKCS#11自動アンシールとRaftの一例)
seal "pkcs11" {
library = "/opt/vendor/lib/pkcs11.so" # 例: /opt/cloudhsm/lib/libcloudhsm_pkcs11.so 等
slot = "0" # ベンダー/環境に依存
pin = "file:/etc/vault/hsm.pin" # 外部ファイル参照も可(権限管理必須)
key_label = "vault_wrap_key"
hmac_key_label = "vault_hmac_key"
generate_key = true # 既存鍵を使う場合はfalse
}
storage "raft" {
path = "/var/lib/vault"
node_id = "vault-1"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 0
tls_min_version = "tls12"
}
api_addr = "https://vault-1.example.com:8200"
cluster_addr = "https://10.0.0.11:8201"HSM連携の障害は、PIN不一致、スロット誤指定、ライブラリ不整合、セッション上限超過、ネットワーク遅延に収束しがちです。ノードごとにHSMクライアントを同一バージョンで整え、HSM側の監査ログと突き合わせて原因特定します。
起動直後にアンシールできない場合、HSM側の並列セッション数やトークンポリシーで弾かれていることがあります。再試行のバックオフやノードシリアライズ起動を検討します。
| 症状 | 主な原因 | 一次対応 |
|---|---|---|
| 起動時にSealedのまま | PIN/スロット/ラベル不一致, セッション上限 | 設定再確認, セッション削減, 単一ノードで検証 |
| 断続的な失敗 | HSM接続のネットワーク不安定 | 遅延測定, 経路見直し, 再試行設定 |
| 特定ノードのみ失敗 | ライブラリ/クライアント違い | バージョン揃えと再デプロイ |
簡易トラブルシュート分岐
現場で使う確認系コマンド例
# HSMスロット/トークン
pkcs11-tool -L
# Vaultステータス
vault status
# Recovery Keysの有無と閾値確認(出力取り扱い注意)
vault operator init -status
# HSMクライアント(例: CloudHSM)のセッション確認はベンダーツールを使用HSMは単体障害に備えクラスター化するのが前提です。Vaultノードは全て同一のHSMクラスターに到達できるようネットワークとクライアント設定を統一します。鍵はHSMベンダー機能でレプリケーション/バックアップし、DRサイトのHSMにも事前配備します。
VaultのデータはRaftスナップショット等でバックアップしますが、シールラップによりHSM鍵で保護されたままです。DRで復旧する際は、対象サイトのHSMに同一ラベルの鍵が存在することが前提になります。
| 設計領域 | プライマリ | DR |
|---|---|---|
| HSM | クラスター化+鍵バックアップ | 同一鍵の事前配備・疎通検証 |
| Vault | 複数ノード/ヘルスチェック | 起動順序とHSM接続確認の手順化 |
| データ | Raftスナップショット | 定期リストア検証 |
プライマリ/DRとHSMの対応関係
バックアップ/DR関連の代表コマンド
# Raftスナップショット保存(権限要)
vault operator raft snapshot save /backup/vault.snap
# リストアはDR環境で停止状態から実施(手順は本番と分離保管)
# HSM側の鍵配備はベンダーツール(例: クローン/バックアップリストア)で実施規制要件、RTO/RPO、運用負荷、コストで選定は変わります。FIPS 140のレベルや"ハードウェア境界内に鍵を留める"要件があるかどうかをまず確認します。運用面では、起動時のSLOと鍵ライフサイクルの手順化がポイントです。
Cloud KMSはFIPS承認モジュールを用いる場合が多いものの、"専用HSM内での鍵保持(アクセス境界の明確化)"という厳格な要件があるなら、PKCS#11で直接連携する専用HSMが選好されます。
| 方式 | FIPS/鍵境界 | 起動SLO/運用負荷 |
|---|---|---|
| HSM(PKCS#11自動アンシール) | FIPS L3等の専用HSMで鍵をHSM内保持 | 起動高速/運用はHSM運用が必要 |
| Cloud KMS(自動アンシール) | FIPS承認モジュールの利用可。専用HSM境界はベンダ設計に依存 | 起動高速/運用容易 |
| 手動アンシール(シャミア) | Vault内のソフト実装依存。鍵は人が保持 | 起動に手作業/運用負荷大 |
方式ごとの鍵境界ざっくり像
比較用:awskmsシール設定の骨子(参考)
seal "awskms" {
region = "us-east-1"
kms_key_id = "arn:aws:kms:...:key/..."
# HSMではなくKMS連携の自動アンシール例(要件に応じ選定)
}"自動アンシール時はRecovery Keysが配布され、手動アンシール鍵は不要"という差分を確実に説明できるようにします。FIPS要件の文脈では、"鍵がどこで生成・保護されるか(鍵境界)"と"TLSの最小バージョン/スイート制約"が頻出です。
設計選択肢の比較問題では、規制要件(例: FIPS 140-2 L3のハードウェア鍵保護、運用者が鍵素材に触れない)を満たす選択肢を選ぶのが定石です。
| テーマ | 問われ方 | 覚えるフレーズ |
|---|---|---|
| 自動アンシールと鍵種別 | 用語対応の正誤 | Auto Unseal → Recovery Keys |
| FIPS/TLS | 最小バージョン・スイートの指定 | tls_min_version=tls12 |
| 鍵境界 | 設計比較での選択 | 鍵はHSM内から出さない |
用語マッピングの最小図
監査強化(試験での加点要素になりやすい)
vault audit enable file file_path=/var/log/vault_audit.log
# 監査先は改ざん耐性を確保(例: WORMストレージや集中ログ基盤)Ops
問題 1
規制で「FIPS 140-2 レベル3相当のハードウェア境界でVaultのシール鍵を保護し、起動時に運用者の介入なく稼働させること(運用者がアンシール鍵を保持しないこと)」が求められています。最も適切な設計はどれか。
正解: A
要件はハードウェア境界(FIPS L3)内での鍵保護と自動アンシールです。PKCS#11で専用HSMと連携し、Vaultの起動を自動化しつつ、Recovery Keysのみを配布する設計が適合します。TLSをFIPS承認スイートに制限することもFIPS観点で重要です。Cloud KMSは要件次第で可ですが、ここでは専用HSMによるハードウェア境界が必須のため最適解ではありません。
VaultのFIPSモードはOSSでも使えますか?
FIPS適合を主張するには、公式に提供されるFIPS準拠のビルド/提供物(例: Vault EnterpriseやHCPで提供されるFIPS対応)を利用することが前提です。単に設定だけで通常ビルドをFIPS化することはできません。詳細は公式ドキュメントの提供形態に従ってください。
自動アンシール構成でもUnseal Keysは配布されますか?
自動アンシールでは通常のUnseal Keysは不要で、代わりにRecovery Keysが配布されます。復旧や一部の操作に用いるため、適切な保管とローテーション手順が必要です。初期化時のshares/threshold設計はRecovery Keysに対して行います。
Cloud KMSでFIPSは満たせますか?
Cloud KMSはFIPS承認暗号モジュールを用いる選択肢がある一方で、規制が"専用HSM内での鍵保持(ハードウェア境界の明示)"を要求する場合は適合しないことがあります。要件が"FIPS承認モジュール"で足りるのか、"専用HSMの境界"を求めているのかを確認し、必要に応じてPKCS#11連携の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...