vSAN 暗号化について
vSAN データを保管時に暗号化するには、鍵管理システム(KMS)が必要です。 Google Cloud VMware Engine では、vSAN データ暗号化の鍵管理に次のオプションを使用できます。
- Google-owned and Google-managed encryption keys (GMEK): デフォルトでは、vSAN データ暗号化はプライベート クラウドのCloud Key Management Serviceで を使用します。追加費用はかかりません。 Google-owned and Google-managed encryption keys
- 顧客管理の暗号鍵(CMEK): Cloud Key Management Service で CMEK を使用して、個々のプライベート クラウドの暗号鍵を管理できます。
- 外部 KMS: vSAN 保存データを暗号化するための外部 KMS を、サポートされている以下のベンダーから選択してデプロイできます。
鍵管理ソリューションを選択する
鍵管理ソリューションを選択する際は、次の比較を参考にしてください。
| 機能 | GMEK(デフォルト) | CMEK | 外部 KMS |
|---|---|---|---|
| 鍵管理の責任 | 顧客 | 顧客 | |
| 鍵の保存 | Cloud Key Management Service(Google プロジェクト) | Cloud Key Management Service(顧客プロジェクト) | 外部 KMS |
| 分離レベル | リージョン サービス | 個々のプライベート クラウド | 個々のプライベート クラウド |
| ローテーションの自動化 | Google による自動化 | KMS のローテーション時に Google によって自動化 | 顧客による管理 |
| 追加のライセンス費用 | なし | Google Cloud KMS の料金が適用される | サードパーティの KMS ライセンス |
このページでは、vSAN の暗号化の動作について説明し、外部 KMS を使用して VMware Engine の仮想マシンの保存データを暗号化する方法をまとめています。
vSAN データ暗号化
デフォルトでは、VMware Engine は、プライマリ クラスタ内のデータと、プライベート クラウドに今後追加されるクラスタ内のデータに対して vSAN 暗号化を有効にします。保存時の vSAN データの暗号化には、暗号化後にクラスタのローカル物理ディスクに保存されるデータ暗号鍵(DEK)が使用されます。DEK は、ESXi ホストによって自動的に生成される、FIPS 140-2 レベル 1 準拠の AES-256 ビット暗号鍵です。システムは、Cloud Key Management Service または外部 KMS から提供される鍵暗号鍵(KEK)を使用して DEK を暗号化します。
保存データの vSAN 暗号化は、Google Cloud VMware Engine の サービス固有の規約に違反する可能性があるため、無効にしないことを強くおすすめします。クラスタでの保存データの vSAN 暗号化を無効にすると、VMware Engine モニタリング ロジックによってアラートが発生します。サービス規約に違反しないように、このアラートにより、該当するクラスタで vSAN 暗号化を再度有効にする Cloud カスタマーケア主導のアクションがトリガーされます。
同様に、外部 KMS を構成する場合は、vCenter Server で Cloud Key Management Service の鍵プロバイダ構成を削除しないことを強くおすすめします。
Google-owned and Google-managed encryption keys (GMEK)
デフォルトでは、プライベート クラウドは Google-owned and Google-managed encryption keys (GMEK)を使用します。 GMEK を使用すると、VMware Engine は GMEK プロバイダに接続するように vCenter Server を構成します。VMware Engine は、リージョンごとに鍵プロバイダのインスタンスを 1 つ作成します。鍵プロバイダは、KEK の暗号化に Cloud KMS を使用します。VMware Engine は鍵プロバイダを完全に管理し、すべてのリージョンで高可用性になるように構成します。
GMEK プロバイダは、vCenter サーバー(vSphere 7.0 Update 2 以降)の組み込み鍵プロバイダを補完するため、本番環境ではこの方法をおすすめします。組み込み鍵プロバイダは、VMware Engine の vSphere クラスタで実行される vCenter Server 内のプロセスとして実行されます。 VMware では、vCenter Server をホストするクラスタの暗号化に組み込み鍵プロバイダを使用することはおすすめしません。代わりに、GMEK、CMEK、または外部 KMS を使用してください。
GMEK の鍵の自動ローテーション
Google Cloud VMware Engine は、すべてのクラスタに対して GMEK の鍵の自動ローテーションを定期的にトリガーします。これはバックグラウンドのメンテナンス タスクであり、ユーザーの操作は必要ありません。また、クラスタの可用性にも影響しません。
顧客管理の暗号鍵(CMEK)
Google Cloud VMware Engine は、Cloud Key Management Service を使用して、個々のプライベート クラウドの顧客管理の暗号鍵(CMEK)をサポートしています。プロジェクト全体で 1 つの鍵を共有するのではなく、プライベート クラウドごとに異なる CMEK 鍵を構成できます。この方法には、次のような利点があります。
- 分離の強化: 1 つのプライベート クラウドの鍵が侵害またはローテーションされても、他のプライベート クラウドには影響しません。
- きめ細かいコンプライアンス: 各プライベート クラウド内のワークロードの特定のデータ所在地またはコンプライアンス要件に基づいて鍵を割り当てます。
CMEK 暗号化の管理
プライベート クラウドの顧客管理の暗号鍵(CMEK)は、
コンソールと VMware Engine API を使用して構成および管理できます。 Google Cloud CMEK を使用するには、使用する特定の Cloud KMS 鍵に対して、VMware Engine サービス アカウント(service-<var>PROJECT_NUMBER</var>@gcp-sa-vmwareengine.iam.gserviceaccount.com)に roles/cloudkms.cryptoKeyEncrypterDecrypter IAM ロールを付与する必要があります。この権限により、VMware Engine は、プロジェクトで選択した Cloud KMS 鍵を使用して、vSAN データを保護する鍵暗号鍵(KEK)を暗号化および復号できます。
鍵の権限を割り当てる
CMEK を有効にする前に、必要な権限を割り当てる必要があります。
KMS リソースを特定する: コンソールの [Key Management] ページに移動し、データ保護に使用する特定の Cloud KMS 鍵を見つけます。Google Cloud
IAM ロールを設定する: Cloud KMS 鍵ダッシュボードで、VMware Engine サービス アカウント (
service-<var>PROJECT_NUMBER</var>@gcp-sa-vmwareengine.iam.gserviceaccount.com) に roles/cloudkms.cryptoKeyEncrypterDecrypter ロールを直接付与します。
Google Cloud CMEK を管理するためのコンソールと VMware Engine API の手順は次のとおりです。
Google Cloud コンソール
コンソールを使用して顧客管理の暗号鍵(CMEK)を構成する手順は次のとおりです。 Google Cloud
CMEK を使用してプライベート クラウドを作成する
コンソールを使用して CMEK でプライベート クラウドを作成する手順は次のとおりです。 Google Cloud
コンソールで、[**プライベート クラウド**] ページに移動します。 Google Cloud
[作成] をクリックします。
[暗号化] セクションで、[顧客管理の暗号鍵(CMEK)] を選択します。
Cloud KMS 鍵の完全なリソース名を入力します。
[作成] または [保存] をクリックします。
既存のプライベート クラウドの CMEK 鍵を更新する
コンソールを使用して既存のプライベート クラウドの CMEK 鍵を更新する手順は次のとおりです。 Google Cloud
コンソールで、[**プライベート クラウド**] ページに移動します。 Google Cloud
更新する既存のプライベート クラウドを選択します。
[暗号化] セクションで、[顧客管理の暗号鍵(CMEK)] を選択します。
Cloud KMS 鍵の完全なリソース名を入力します。
[作成] または [保存] をクリックします。
既存のプライベート クラウドの暗号化を GMEK に更新する
コンソールを使用して既存のプライベート クラウドの暗号化タイプを GMEK に更新する手順は次のとおりです。 Google Cloud
コンソールで、[**プライベート クラウド**] ページに移動します。 Google Cloud
更新する既存のプライベート クラウドを選択します。
[**暗号化**] セクションで、[Google-owned and Google-managed encryption keys (GMEK)] を選択します。
[作成] または [保存] をクリックします。
VMware Engine API
API コマンドを使用するには、まず次の変数を環境の値に置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。LOCATION: VMware Engine リージョン(us-east4など)。PC_ID: 新しいプライベート クラウドの ID。NETWORK_ID: VPC ネットワークの ID。CIDR_RANGE: プライベート クラウドの管理 CIDR 範囲。CLUSTER_ID: 管理クラスタの ID。NODE_TYPE: ノードタイプ(standard-72など)。COUNT: クラスタ内のノード数。RING: Cloud KMS キーリングの名前。KEY: Cloud KMS 暗号鍵の名前。PC_NAME: 既存のプライベート クラウドの名前。
CMEK を使用してプライベート クラウドを作成するには、privateClouds.create メソッドを使用し、
encryptionConfig パラメータを指定します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://vmwareengine.googleapis.com/v1/projects//locations//privateClouds?private_cloud_id=" \
-d '{
"networkConfig": {
"vmwareEngineNetwork": "projects//locations/global/vmwareEngineNetworks/",
"managementCidr": ""
},
"managementCluster": {
"clusterId": "",
"nodeTypeConfigs": {
"": {
"nodeCount":
}
}
},
"encryptionConfig": {
"cryptoKeyName": "projects//locations//keyRings//cryptoKeys/"
}
}'
既存のプライベート クラウドの CMEK 鍵を更新するには、privateClouds.patch メソッドを使用します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://vmwareengine.googleapis.com/v1/projects//locations//privateClouds/?updateMask=encryptionConfig" \
-d '{
"encryptionConfig": {
"cryptoKeyName": "projects//locations//keyRings//cryptoKeys/"
}
}'
既存のプライベート クラウドを GMEK(Google-owned and Google-managed encryption keys)に戻すには、空の encryptionConfig オブジェクトを指定して privateClouds.patch メソッドを使用します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://vmwareengine.googleapis.com/v1/projects//locations//privateClouds/?updateMask=encryptionConfig" \
-d '\''{
"encryptionConfig": {}
}'\''
CMEK の制約と制限事項について
- リージョンの要件: プライベート クラウドと選択した Cloud KMS 鍵は、同じリージョンに存在する必要があります。Google Cloud KMS グローバル鍵は vSAN 暗号化ではサポートされていません。
- 鍵の可用性: 暗号鍵が無効または取り消されたためにアクセスできなくなると、依存するすべての vSAN オペレーションが失敗します。鍵へのアクセスが正常に再確立されるまで、ホストの再起動や浅い再鍵生成などの重要な手順を進めることはできません。
CMEK の KEK の自動ローテーションによる運用効率の向上
CMEK を選択する組織の場合、vSAN 保存データ暗号化の KEK の自動ローテーション機能により、手動のセキュリティ タスクが自動化されます。
- 自動同期: システムは Cloud KMS をモニタリングし、鍵のローテーションを自動的に検出します。
- シームレスなバックグラウンド KEK ローテーション: ローテーション時に、システムは浅い KEK ローテーションを開始し、vCenter で手動操作を行わずに継続的な保護を確保します。 このオペレーションでは、データ暗号鍵(DEK)の鍵暗号鍵が新しい鍵暗号鍵(KEK)で更新されます。DEK は vSAN データを直接暗号化するため、このプロセスでは vSAN データの完全な再暗号化は必要ありません。
- ダウンタイムなしの管理: システムはバックグラウンドで KEK を生成して適用し、ワークロードのパフォーマンスと可用性を維持します。このプロセスは、通常、Cloud KMS 鍵のローテーション後 48 時間以内に完了します。
暗号化された仮想マシンの要件
VM の暗号鍵は、デフォルト Google-owned and managed key プロバイダまたは Cloud Key Management Service を使用して管理できます。
プライベート クラウド内の VM で VM 暗号化 (または vTPM)を有効にし、KMS を使用して暗号鍵を管理する場合は、KMS 鍵をローテーションした後、各 VM を再暗号化(浅い再鍵生成)する必要があります。
浅い再鍵生成では、鍵暗号鍵(KEK)のみが置き換えられ、VM のデータ暗号鍵(DEK)は変更されません。通常、vSphere Client の [再暗号化] アクションを使用して、浅い再鍵生成をトリガーします。
このオペレーションでは、新しい KEK を使用して既存の DEK が再ラップ(再暗号化)されます。このプロセスは、ディスク上の実際のデータを書き換えるのではなく、暗号化された DEK を含む小さな鍵バンドルのみを更新するため、高速です。詳細については、次の VMware ドキュメントをご覧ください。
暗号化された VM の再鍵生成に失敗した場合のリスク
ローテーションされた(古い)KMS 鍵バージョンを削除する前に、暗号化された VM の再鍵生成に失敗すると、次の問題が発生する可能性があります。
- vMotion の失敗: KMS 鍵のローテーション後、VM の再鍵生成を行う前に、移行先ホストを再起動するか、クラスタに追加すると、ESXi ホストは vMotion 中に VM DEK を復号できません。
- 電源投入の失敗: ホストが再起動するか、ローカル鍵キャッシュをクリアすると、ホストは KMS から鍵を再取得できません。KMS から必要な鍵を削除すると、ホストは DEK を復号できず、暗号化された VM の電源を投入できません。
ワークロード VM で再鍵生成オペレーションを実行する手順
- vSphere Client で、VM を右クリックします。
- [VM ポリシー > 再暗号化] を選択します。
- 表示されるダイアログで、再暗号化リクエストを確認します。
- タスクが完了するまで待ちます。
- KMS 鍵のローテーション後に再起動したホストまたはクラスタに追加したホストに VM を移行して、再鍵生成を確認します。
外部 KMS
必要に応じて、KMIP 1.1 準拠で、vSAN 用に VMware によって認定されているサードパーティの KMS ソリューションを選択できます。以下のベンダーは、VMware Engine を使用して KMS ソリューションを検証し、デプロイガイドとサポート ステートメントを公開しています。
構成手順については、次のドキュメントをご覧ください。
- Fortanix KMS を使用した vSAN 暗号化の構成
- CipherTrust Manager を使用した vSAN 暗号化の構成
- HyTrust KeyControl を使用した vSAN 暗号化の構成
サポートされているベンダーを使用する
外部 KMS をデプロイする際には、毎回同じ基本手順を行う必要があります。
- プロジェクトを作成するか、既存のプロジェクトを使用します。 Google Cloud
- 新しい Virtual Private Cloud(VPC)ネットワークを作成するか、既存の VPC ネットワークを選択します。
- 選択した VPC ネットワークを VMware Engine ネットワークに接続します。
次に、KMS を Compute Engine VM インスタンスにデプロイします。
- Compute Engine VM インスタンスをデプロイするために必要な IAM 権限を設定します。
- Compute Engine に KMS をデプロイします。
- vCenter と Fortanix KMS 間の信頼を確立します。
- vSAN データの暗号化を有効にします。
以降のセクションでは、サポートされているベンダーの 1 つを使用するこのプロセスについて簡単に説明します。
IAM 権限を設定する
特定のプロジェクトと VPC ネットワークに Compute Engine VM インスタンス をデプロイし、VPC を VMware Engine に接続して、VPC ネットワークのファイアウォール ルールを構成するには、十分な権限が必要です。 Google Cloud
プロジェクト オーナーとネットワーク管理者 のロールを持つ IAM プリンシパルは、割り振られる IP 範囲を作成し、プライベート接続を管理できます。ロールの詳細については、Compute Engine IAM のロールをご覧ください。
Compute Engine に鍵管理システムをデプロイする
一部の KMS ソリューションは、Google Cloud Marketplace のアプライアンスのフォーム ファクタで使用できます。VPC ネットワークまたは Google Cloud プロジェクトに OVA を直接インポートすることで、このようなアプライアンスをデプロイできます。
ソフトウェアベースの KMS の場合は、KMS ベンダーが推奨する構成(vCPU 数、vMem、ディスク)を使用して Compute Engine VM インスタンスをデプロイします。 ゲスト オペレーティング システムに KMS ソフトウェアをインストールします。VMware Engine ネットワークに接続されている VPC ネットワークに Compute Engine VM インスタンスを作成します。
vCenter と KMS 間の信頼関係を確立する
Compute Engine に KMS をデプロイした後、VMware Engine vCenter を構成して、KMS から暗号鍵を取得します。
はじめに、vCenter に KMS の接続の詳細を追加します。次に、vCenter と KMS 間の信頼を確立します。vCenter と KMS 間の信頼を確立する手順は次のとおりです。
- vCenter で証明書を生成します。
- KMS で生成されたトークンか鍵を使用して署名します。
- その証明書を vCenter に提供するか、アップロードします。
- vCenter サーバーの構成ページで KMS の設定とステータスを確認して、接続ステータスを確かめます。
vSAN データの暗号化を有効にする
vCenter では、デフォルトの CloudOwner ユーザーに vSAN データ暗号化を有効にして管理するための十分な権限があります。
外部 KMS からデフォルトのGoogle-owned and managed key プロバイダに戻すには、VMware ドキュメントの標準鍵プロバイダの構成と管理で提供された鍵プロバイダを変更する手順に従います。
次のステップ
- vSAN KMS 接続のヘルスチェックについて学習する。
- vSAN 7.0 暗号化について学習する。