vSANクラスタ上のvCenterサーバのNKPでvSAN暗号化を有効化してみた
検証の目的と動作検証結果
vSAN暗号化を利用する場合KMSをvSANデータストア上に配置してしまうと”金庫の中に鍵”状態になってしまいます。そのため、Cluster Shutdown/PowerOnを実施すると仮想マシンの起動ができずデッドロック状態になってしまうことになります。しかし、VMwareのドキュメントを読んでいると、vCenterのNative Key Provider(NKP)を利用している場合はそうならない旨の記載を確認できました。そこでNKPを有効化したvCenterをvSANデータストアに配置した状態でvSAN暗号化を有効にし、Cluster Shutdown/PowerOnを実施したところ、問題なく仮想マシンの起動ができることを確認しました。
※上記は検証作業で明らかになった動作検証結果であり、その構成を採用可能かどうかの結論ではありません。
vSAN暗号化とは
以下の記事に説明があるとおり、vSANデータストアを暗号化する機能です。
vSAN暗号化を有効化するとvSANデータストアのすべてのファイルが暗号化されるため、復号キーがない限り仮想マシンを起動することができません。
複合キーはESXi起動時にKMSに接続することで入手できる仕組みになっています。
その為、KMSに接続できない状況ではキーを取得することができず、仮想マシンを起動できません。
ただし、ESXi起動時に入手したキー情報はメモリに保持されるため、入手後にKMSとの疎通が途絶えてもESXiを再起動しない限り再接続は不要です。
vSAN による保存データの暗号化 (vmware.com)
KMSとは
Key Management Serverのことであり、vSANに限らず暗号化のためのカギを管理し、必要に応じて配布する役割を持つサーバでです。
なお、VMwareのドキュメントやGUIでは後述のNKPとの区別としてStandard Key Providerと表記されることもあります。
vSAN暗号化における注意事項としては、以下の記事に記載のある通り、KMS自体を被暗号化対象であるvSANデータストア上に配置してはいけないという点です。
なぜならば、うっかり暗号化済みのvSANクラスタ全体をShutdownしてしまったときに、次回起動時にvSANデータストアのファイルを復号するためにKMSへの接続が必要となりますが、KMS自体が暗号化されているため、復号キーを入手できなくなってしまう、という問題が発生するためです。
vSAN 保存データの暗号化を設計する際の考慮事項 (vmware.com)
なお、こちらのブログ記事にてホスト起動時にKMSアクセス不可だとどうなるのかの検証をしており動作を理解するに非常に役立ちます。
暗号化されたvSAN環境でのKMS障害の影響 | Lab8010
ただし、KMS障害やアクセス不可時の対策として、vSAN 7.0U3 以降でKey Persistence(後述)という機能が利用可能になっています。
NKPとは
vCenter
Native Key Provider のことであり、KMSの役割をvCenter上で提供する機能です。
これによって、別途KMSを購入・構築しなくてもvCenterライセンスの範囲内でVM/vSAN暗号化やvTPMなどの機能を利用できるようになりました。
NKP=KMSと”仮定”すると、前述の通りvCenterを暗号化されたvSAN データストア上に保管することによって起動できなくなるリスクがあることを意味します。
Key Persistenceとは
KMSから提供されるキーをディスクではなくTPMに保存することにより、KMSがオフライン状態であったとしてもTPMからキーを取得できる仕組みです。
これによりホスト起動時にKMSにアクセス不可であったとしても、TPMからキーを取得できるためvSANデータストアにアクセスが可能となります。
なお、本機能は外部KMSだけでなく、NKPでも利用可能です。
詳細は以下のドキュメントが参考になります。
vSphere
Key Persistence on ESXi Hosts (vmware.com)
How
vSAN Data-At-Rest Encryption Works (vmware.com)
vSAN Encryption Services | VMware
vSAN暗号化に関わるリリース順序
なおここまでで説明した機能は同時にリリースされたわけではなくそれぞれで初出のバージョンが異なります。
過去のドキュメントやブログを参照する際に、どの時点で記載されたのかを意識する必要があります。
vSAN暗号化 → vSphere/vSAN 6.6からサポートされました。当時はNKPやKeyPersistenceの機能はなくKMSは必須となっていました。
NKP →
vSphere 7.0U2からサポートされました。これによってKMSが必須ではなくなりました。
Key Persistence → vSphere 7.0U2 からサポートされました。vSAN暗号化との組み合わせはvSAN 7.0U3からのサポートとなりますのでその点は注意が必要です。
vSAN暗号化(KMS利用)時のESXiの起動時の動作について
以下の記事が非常にわかりやすいです。なお、この記事はNKPやKeyPersistence機能のリリース前のため、それらの機能については考慮されていない点はご留意ください。
上記の記事からもわかる通り、KMSアクセス不可時に起動したESXiは復号キーを入手できずvSANデータストアの復号ができません。そのためvSAN環境で外部KMSを利用している場合は、以下の記事にもある通り、TPMを利用したKey Persistenceを有効にして、KMSアクセス不可に備えることが推奨とされます。
vSAN
Encryption Services | VMware
”Recommendation: VMware recommends the use of Trusted Platform
Modules (TPM) on each server. This will
allow for the keys distributed to the hosts to be securely stored on persistent
media (the TPM) on each host and provide the key to the host when the key
provider is inaccessible.”
なお、同記事内の別セクションに記載がある通りTPM2.0が必要です。KeyPersistenceはTPM1.2では対応していないため、機能を利用する場合は該当サーバのTPM搭載有無とバージョンを確認してください。。
vSAN暗号化(NKP利用)時のESXi起動時の動作について
NKP利用時の挙動についてはこれまでに引用させていただいたVMware公式の記事にもいくつか記載がありますが、以下に記事にはKeyPersistenceの必要性について言及があります。
vSphere
Key Persistence on ESXi Hosts (vmware.com)
”When using a vSphere
Native Key Provider, vSphere generates encryption keys and no key server is
required. The ESXi hosts get a Key Derivation Key (KDK), which is used to
derive other keys. After receiving the KDK and generating other keys, the ESXi
hosts do not need access to vCenter Server to do encryption operations. In
essence, a vSphere Native Key Provider always runs "key server free."
The KDK persists on an
ESXi host by default even after reboot, and even when vCenter Server is not
available after the host reboots.
You can activate key
persistence with vSphere Native Key Provider, but it is normally unnecessary.”
引用の最後にはっきりと記載のある通り、NKP利用時はKey Persistenceの有効化は不要とされています。なぜならば復号キーの入手に必要なKDKをESXiのローカルディスクに保持しているためです。
その事実は以下の記事に記載がされています。
https://core.vmware.com/native-key-provider-questions-answers#questions--answers
”How are Native Key
Provider keys protected at rest?
The Native Key Provider
KDK is stored in the ESXi encrypted configuration. If a TPM is present and
configured it will be used to help protect the encrypted configuration.
”
NKP利用時にvCenterを暗号化されたvSANデータストアに配置できるか(Key Persistence無し)
単純に配置するだけではなく、Cluster Shutdown/PowerUpなどのオペレーションが正常に動作することが前提となります。
また、代表的な定常運用作業可否の確認も必要です。。
ここまで辛抱強く記事を読んでくださった方は、文章の流れとして当然正常動作をするものとして疑いがない方もいるかもしれません。
しかし、ここまでの説明やVMwareのドキュメントの記載に懐疑的な方もいらっしゃると思います。(私もその一人です)
なぜならば、VMware社の記事は必ずしも一貫した表現や記載になっているとは限らず、どちらともとれるような曖昧な記載となっていたり、場合によっては真逆の解釈も可能な記載となっていたり、何よりも過去の自身の理解&経験や有識者からの説明と異なっている場合もあるためです。
そもそもvSAN暗号化はキーサーバがないと復号できないことで、セキュリティ機能としての意味をなしていたのではないのか?という製品機能のコンセプトとしても疑問を生じ得ると思います。
何にせよ、疑問があるならば実際にやってみるのが確実で早いです。
検証準備
4ノードのvSANクラスタ上のvSANデータストアにvCenterをデプロイして、NKPを有効化。
NKPを利用してvSAN暗号化を有効にする。
vSphere/vCenter
7.0U3o を利用。
TPM1.2を搭載したサーバを利用しているがBIOSからTPMを無効化し、ESXiから利用できないようにしている
検証①:Cluster Shutdown/PowerUp
ESXi起動時に復号キー入手のためにNKPにアクセスが必要であるとしたら、vCenter(NKP)がvSANデータストア上にあるため、vCenter VMの起動ができないことになる。
対偶として、vCenter
VMの起動が可能であるならば、ESXi起動時に復号のためにNKPアクセスが不要であることといえる。
結果
Cluster を完全にShutdownしてPowerOnし、vCenter VMが起動可能であることを確認した
検証②:NKP不在時の仮想マシンの作成と削除
結果
問題なく作成と削除ができた
検証③:NKP不在時の仮想マシンの起動と停止
結果
仮想マシンの起動停止が可能だった
検証④:NKP不在時のvMotionとHA
結果
vMotionとvSphere
HA(ホスト障害)も問題なく動作した
検証⑤:NKP不在時のSnapshot
結果
Snapshotの作成と削除が可能だった
検証⑥:NKP不在時のvSAN 暗号化の無効化
結果
NKPとの疎通がない状態では無効化ができなかった。
しかし、その後NKPを復旧させた際にvSAN設定の不整合を示すエラーが出たりしたため、実施すべきではない。
検証⑦:ESXiの再起動(NKP不在&vCenter健在時)
NKPをvCenterから削除した状態でESXiを再起動した場合の挙動について確認した
結果
ESXiの再起動後、ホストのEncryption ModeがDisableになり、該当ホストのvSAN DGがロックされた。
何度か試した結果、NKP削除状態かつvCenter健在状態でESXiを再起動すると上記の状態となった。
一方で、Cluster Shutdown時のようにvCenterサーバを停止した状態でESXiを再起動した場合はDGがロックされることはなかった。
検証⑧:vCenterサーバのファイルベースバックアップからのリストア
NKP削除後に1ノードを再起動し、3ノードがvSANデータストアにアクセス可能、1ノードがDGロックの状態(検証⑦の直後)で、いったんvCenterを削除し、事前に取得していたファイルベースバックアップからvCenterのリストアが可能かを確認した
結果
リストアは成功し、NKPも復活できた。リストア後はすべてのノードがvSANデータストアにアクセス可能となった。
検証結果の総括
KerPersistenceを利用せず、内部vCenterのNKPのみを利用したvSAN暗号化において、Cluster Shutdown後のPowerUpにおいて、データストアがロックされることなく正常にアクセス可能であることを確認できました。
また、NKPを削除し意図的にアクセス不可状態を再現した状況においても、仮想マシンに対する定常運用作業は可能でした。
ただし、NKPのみを削除し、vCenterサーバが正常稼働している状態でESXiを再起動すると、該当ESXiのEncyption Modeが無効化され、DGがロックされた。これはKMSにアクセス不可の状態で発生する挙動と同様でした。
参考:vSAN クラスタでディスク グループがロックされた状態になる (vmware.com)
この辺りの挙動についての詳細な資料は確認できませんでしたが、検証結果から判断するに、ESXiの起動時にvCenterにアクセス不可の場合と、vCenterにアクセス可能だがNKPからキーを取得できない場合は、それぞれ異なる動作仕様になっていると推測できます。
なお、NKPにアクセスできずESXiでDGロック状態になったとしても、vCenterのリストアが可能な条件がそろっていれば、バックアップから復旧することが可能です。
もし何らかの事情でvSANデータストア上にvCenterのリストアが困難な場合は、別途ストレージリソースやESXiサーバの用意が必要となる場合もあります。
NKP利用時とKMS利用時のセキュリティ機能としての差異
外部KMS利用時の場合、KMSなしの状態では起動時にvSANデータストアにアクセスができないため、物理的な盗難による情報漏洩の対策として効果があります。もちろん起動済みのESXiであればKMSがなくともキャッシュしている情報から復号キーを生成してvSANデータアクセスが可能ではあるため、ESXiやvCenterに侵入されている状況においてはセキュリティ機能として成立しないものの、ESXiよりも低いレイヤーからのデータアクセスや、サーバやドライブの物理的な盗難といった状況には効果を発揮します。
一方で、NKP利用時のvSAN暗号化は本質的にキーサーバ不要であり、NKPがいなくてもESXiが起動できればvSANデータストアへのアクセスが可能です。。つまりvSANドライブの盗難には強いもののサーバーごと盗難されるケースやESXiの構成を保持するブートドライブも含めて盗難されるケースにおいてはセキュリティ機能として効果を発揮できない可能性があります。
そもそもNKPなしでvSANデータストアへのアクセスを可能にしている技術仕様としてローカルディスク上のESXi
ConfigStoreにKDKが保存されていることがあげられますが、vSphere 7.0U2以降のバージョンではTPM2.0を搭載しているサーバでは、ESXiの構成情報を暗号化することが可能であり、TPMがない状態では構成情報を読み取れずESXiを起動できなくするセキュリティ機能があるため、TPM搭載サーバにおいてはESXi構成の暗号化機能を利用することでブートドライブの盗難には耐性を持つことが可能です。しかし依然としてTPMを含むサーバ丸ごとの盗難においてはリスクがある点は外部KMSとの大きな違いとなります。
同様のことは外部KMS利用時にKeyPersistenceを利用する際にも言えます。
そのため、エッジなどの非マシンルームでサーバの盗難リスクが比較的高い環境においてはNKP利用のvSAN暗号化はリスクを残留させてしまう可能性を考慮してサーバ盗難に対する保護を別途準備するか、外部KMSの利用(KeyPersistence無し)も検討したほうが良いかもしれません。
まとめ
本記事では、NKPを利用したvSAN暗号化の挙動についてVMwareドキュメントの記載の紹介と検証結果を共有いたしました。
NKP利用時とKMS利用時では同じvSAN暗号化でもセキュリティ機能としての耐性に差があるため、「何のために暗号化をしているのか」「どういった攻撃からどのように守る必要があるのか」を考慮したうえでどちらの方式を採用するのかを検討する必要がある旨について説明をさせていただきました。
今回の記事の内容がVMware仮想化基盤の導入や運用の一助になれば幸いです。
vExperts Advent Calendar 2023 の6日めは、 ishiiT さんよろしくお願いします。
コメント
コメントを投稿