vSANクラスタ上のvCenterサーバのNKPでvSAN暗号化を有効化してみた

※これは、vExperts Advent Calendar 2023 の5日めの投稿です。


検証の目的と動作検証結果

vSAN暗号化を利用する場合KMSvSANデータストア上に配置してしまうと”金庫の中に鍵”状態になってしまいます。そのため、Cluster Shutdown/PowerOnを実施すると仮想マシンの起動ができずデッドロック状態になってしまうことになります。しかし、VMwareのドキュメントを読んでいると、vCenterNative Key ProviderNKP)を利用している場合はそうならない旨の記載を確認できました。そこでNKPを有効化したvCentervSANデータストアに配置した状態で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などの機能を利用できるようになりました。

NKPKMS”仮定”すると、前述の通り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からサポートされました。当時はNKPKeyPersistenceの機能はなくKMSは必須となっていました。

NKP vSphere 7.0U2からサポートされました。これによってKMSが必須ではなくなりました。

Key Persistence vSphere 7.0U2 からサポートされました。vSAN暗号化との組み合わせはvSAN 7.0U3からのサポートとなりますのでその点は注意が必要です。

 

 

 

vSAN暗号化(KMS利用)時のESXiの起動時の動作について

以下の記事が非常にわかりやすいです。なお、この記事はNKPKeyPersistence機能のリリース前のため、それらの機能については考慮されていない点はご留意ください。

Understanding vSAN Encryption – Booting when vCenter is Unavailable – Virtual Blocks Blog (vmware.com)

 

上記の記事からもわかる通り、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が必要です。KeyPersistenceTPM1.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の有効化は不要とされています。なぜならば復号キーの入手に必要なKDKESXiのローカルディスクに保持しているためです。

その事実は以下の記事に記載がされています。

 

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不在時のvMotionHA

結果

vMotionvSphere HA(ホスト障害)も問題なく動作した

 

検証⑤:NKP不在時のSnapshot

結果

Snapshotの作成と削除が可能だった

 

検証⑥:NKP不在時のvSAN 暗号化の無効化

結果

NKPとの疎通がない状態では無効化ができなかった。

しかし、その後NKPを復旧させた際にvSAN設定の不整合を示すエラーが出たりしたため、実施すべきではない。

 

検証⑦:ESXiの再起動(NKP不在&vCenter健在時)

NKPvCenterから削除した状態でESXiを再起動した場合の挙動について確認した

結果

ESXiの再起動後、ホストのEncryption ModeDisableになり、該当ホストのvSAN DGがロックされた。

何度か試した結果、NKP削除状態かつvCenter健在状態でESXiを再起動すると上記の状態となった。

一方で、Cluster Shutdown時のようにvCenterサーバを停止した状態でESXiを再起動した場合はDGがロックされることはなかった。

 

検証⑧:vCenterサーバのファイルベースバックアップからのリストア

NKP削除後に1ノードを再起動し、3ノードがvSANデータストアにアクセス可能、1ノードがDGロックの状態(検証⑦の直後)で、いったんvCenterを削除し、事前に取得していたファイルベースバックアップからvCenterのリストアが可能かを確認した

結果

リストアは成功し、NKPも復活できた。リストア後はすべてのノードがvSANデータストアにアクセス可能となった。

 

 

検証結果の総括

KerPersistenceを利用せず、内部vCenterNKPのみを利用したvSAN暗号化において、Cluster Shutdown後のPowerUpにおいて、データストアがロックされることなく正常にアクセス可能であることを確認できました。

また、NKPを削除し意図的にアクセス不可状態を再現した状況においても、仮想マシンに対する定常運用作業は可能でした。

ただし、NKPのみを削除し、vCenterサーバが正常稼働している状態でESXiを再起動すると、該当ESXiEncyption Modeが無効化され、DGがロックされた。これはKMSにアクセス不可の状態で発生する挙動と同様でした。

参考:vSAN クラスタでディスク グループがロックされた状態になる (vmware.com)

この辺りの挙動についての詳細な資料は確認できませんでしたが、検証結果から判断するに、ESXiの起動時にvCenterにアクセス不可の場合と、vCenterにアクセス可能だがNKPからキーを取得できない場合は、それぞれ異なる動作仕様になっていると推測できます。

なお、NKPにアクセスできずESXiDGロック状態になったとしても、vCenterのリストアが可能な条件がそろっていれば、バックアップから復旧することが可能です。

もし何らかの事情でvSANデータストア上にvCenterのリストアが困難な場合は、別途ストレージリソースやESXiサーバの用意が必要となる場合もあります。

 

 

 

 

NKP利用時とKMS利用時のセキュリティ機能としての差異

外部KMS利用時の場合、KMSなしの状態では起動時にvSANデータストアにアクセスができないため、物理的な盗難による情報漏洩の対策として効果があります。もちろん起動済みのESXiであればKMSがなくともキャッシュしている情報から復号キーを生成してvSANデータアクセスが可能ではあるため、ESXivCenterに侵入されている状況においてはセキュリティ機能として成立しないものの、ESXiよりも低いレイヤーからのデータアクセスや、サーバやドライブの物理的な盗難といった状況には効果を発揮します。

一方で、NKP利用時のvSAN暗号化は本質的にキーサーバ不要であり、NKPがいなくてもESXiが起動できればvSANデータストアへのアクセスが可能です。。つまりvSANドライブの盗難には強いもののサーバーごと盗難されるケースやESXiの構成を保持するブートドライブも含めて盗難されるケースにおいてはセキュリティ機能として効果を発揮できない可能性があります。

そもそもNKPなしでvSANデータストアへのアクセスを可能にしている技術仕様としてローカルディスク上のESXi ConfigStoreKDKが保存されていることがあげられますが、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 さんよろしくお願いします。

コメント

このブログの人気の投稿

vSwitchにSTPが不要な理由

ESXi に DNS サーバを何個まで登録できるか

NTPと同期してくれないときのトラブルシューティング