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
鍵管理の責任 Google 顧客 顧客
鍵の保存 Cloud Key Management Service(Google プロジェクト) Cloud Key Management Service(顧客プロジェクト) 外部 KMS
分離レベル リージョン サービス 個々のプライベート クラウド 個々のプライベート クラウド
ローテーションの自動化 Google による自動化 KMS のローテーション時に Google によって自動化 顧客が管理
追加のライセンス費用 なし Google Cloud KMS の料金が適用される サードパーティの KMS ライセンス

このページでは、vSAN の暗号化の動作について説明し、VMware Engine で仮想マシンの保存データを暗号化するために使用できる鍵管理オプション(GMEK、CMEK、外部 KMS)をまとめています。

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 Server(vSphere 7.0 Update 2 以降)の vSphere ネイティブ鍵プロバイダ(NKP)を補完するため、本番環境ではこの方法をおすすめします。NKP は、VMware Engine の vSphere クラスタで実行される vCenter Server 内のプロセスとして実行されます。VMware では、vCenter Server をホストするクラスタの暗号化に NKP を使用することはおすすめしません。代わりに、GMEK、CMEK、または外部 KMS を使用してください。

GMEK 鍵の自動ローテーション

Google Cloud VMware Engine は、すべてのクラスタに対して GMEK の鍵の自動ローテーションを定期的にトリガーします。これはバックグラウンドのメンテナンス タスクであり、ユーザーの操作は不要で、クラスタの可用性に影響しません。

顧客管理の暗号鍵(CMEK)

Google Cloud VMware Engine は、Cloud Key Management Service を使用して、個々のプライベート クラウドの顧客管理の暗号鍵(CMEK)をサポートしています。プロジェクト全体で 1 つの鍵を共有するのではなく、プライベート クラウドごとに異なる CMEK 鍵を構成できます。この方法には、次のような利点があります。

  • 分離の強化: 1 つのプライベート クラウドの鍵が侵害されても、他のプライベート クラウドには影響しません。
  • きめ細かい制御: コンプライアンス要件を満たすために、環境ごとに異なる鍵を割り当てます。

CMEK 暗号化の管理

プライベート クラウドの顧客管理の暗号鍵(CMEK)は、 コンソール、Google Cloud CLI、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 を有効にする前に、必要な権限を割り当てる必要があります。

  1. KMS リソースを特定する: コンソールのGoogle Cloud [Key Management] ページに移動し、データ保護に使用する特定の Cloud KMS 鍵を見つけます。

    Key Management に移動

  2. IAM ロールを設定する: Cloud KMS 鍵のダッシュボードで、VMware Engine サービス アカウント (service-<var>PROJECT_NUMBER</var>@gcp-sa-vmwareengine.iam.gserviceaccount.com) に roles/cloudkms.cryptoKeyEncrypterDecrypter ロールを直接付与します。

Google Cloud CMEK を管理するためのコンソール、Google Cloud CLI、VMware Engine API の手順は次のとおりです。

コンソール

Google Cloud コンソール を使用して顧客管理の暗号鍵(CMEK)を構成する手順は次のとおりです。

CMEK を使用してプライベート クラウドを作成する

コンソール Google Cloud を使用して CMEK でプライベート クラウドを作成する手順は次のとおりです。

  1. コンソール Google Cloud で、[プライベート クラウド] ページに移動します。

    [プライベート クラウド] に移動

  2. [作成] をクリックします。

  3. [暗号化] セクションで、[顧客管理の暗号鍵(CMEK)] を選択します。

  4. Cloud KMS 鍵の完全なリソース名を入力します。

  5. [作成] または [保存] をクリックします。

既存のプライベート クラウドの CMEK 鍵を更新する

Google Cloud コンソールを使用して既存のプライベート クラウドの CMEK 鍵を更新する手順は次のとおりです。

  1. コンソール Google Cloud で、[プライベート クラウド] ページに移動します。

    [プライベート クラウド] に移動

  2. 更新する既存のプライベート クラウドを選択します。

  3. [暗号化] セクションで、[顧客管理の暗号鍵(CMEK)] を選択します。

  4. Cloud KMS 鍵の完全なリソース名を入力します。

  5. [作成] または [保存] をクリックします。

既存のプライベート クラウドの暗号化を GMEK に更新する

コンソール Google Cloud を使用して既存のプライベート クラウドの暗号化タイプを GMEK に更新する手順は次のとおりです。

  1. コンソール Google Cloud で、[プライベート クラウド] ページに移動します。

    [プライベート クラウド] に移動

  2. 更新する既存のプライベート クラウドを選択します。

  3. [**暗号化**] セクションで、[Google-owned and Google-managed encryption keys (GMEK)] を選択します。

  4. [作成] または [保存] をクリックします。

gcloud

CMEK を使用してプライベート クラウドを作成するには、 gcloud vmware private-clouds create コマンドを使用します。

gcloud vmware private-clouds create PC_ID \
  --location=ZONE \
  --cluster=CLUSTER_ID \
  --node-type-config=type=NODE_TYPE,count=COUNT,custom-core-count=CUSTOM_CORE_COUNT \
  --management-range=CIDR_RANGE \
  --vmware-engine-network=projects/PROJECT_ID/locations/global/vmwareEngineNetworks/NETWORK_ID \
  --kms-key=projects/PROJECT_ID/locations/REGION/keyRings/RING/cryptoKeys/KEY

既存のプライベート クラウドの CMEK 鍵を更新するには、 gcloud vmware private-clouds update コマンドを使用します。

gcloud vmware private-clouds update PC_NAME \
  --location=ZONE \
  --encryption-type=CMEK \
  --kms-key=projects/PROJECT_ID/locations/REGION/keyRings/RING/cryptoKeys/KEY

既存のプライベート クラウドの暗号化タイプを GMEK(Google-owned and Google-managed encryption keys)に更新するには、 gcloud vmware private-clouds update コマンドを使用し、--kms-key パラメータを省略します。

gcloud vmware private-clouds update PC_NAME \
  --location=ZONE \
  --encryption-type=GMEK

コマンドを実行する前に、次の値を置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • ZONE: VMware Engine ゾーン(us-east4-a など)。
  • PC_ID: 新しいプライベート クラウドの ID。
  • CLUSTER_ID: 管理クラスタの ID。
  • NODE_TYPE: ノードタイプ(standard-72 など)。
  • COUNT: クラスタ内のノード数。
  • CUSTOM_CORE_COUNT: クラスタ内の各ノードで使用可能なコア数。省略可。
  • CIDR_RANGE: プライベート クラウドの管理 CIDR 範囲。
  • NETWORK_ID: VPC ネットワークの ID。
  • REGION: Cloud KMS リージョン(us-east4 など)。
  • RING: Cloud KMS キーリングの名前。
  • KEY: Cloud KMS 暗号鍵の名前。
  • PC_NAME: 既存のプライベート クラウドの名前。

API

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/PROJECT_ID/locations/ZONE/privateClouds?private_cloud_id=PC_ID" \
  -d '{
  "networkConfig": {
    "vmwareEngineNetwork": "projects/PROJECT_ID/locations/global/vmwareEngineNetworks/NETWORK_ID",
    "managementCidr": "CIDR_RANGE"
  },
  "managementCluster": {
    "clusterId": "CLUSTER_ID",
    "nodeTypeConfigs": {
      "NODE_TYPE": {
        "nodeCount": COUNT
      }
    }
  },
  "encryptionConfig": {
    "cryptoKeyName": "projects/PROJECT_ID/locations/REGION/keyRings/RING/cryptoKeys/KEY"
  }
}'

既存のプライベート クラウドの 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/PROJECT_ID/locations/ZONE/privateClouds/PC_NAME?updateMask=encryptionConfig" \
  -d '{
  "encryptionConfig": {
    "cryptoKeyName": "projects/PROJECT_ID/locations/REGION/keyRings/RING/cryptoKeys/KEY"
  }
}'

既存のプライベート クラウドを 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/PROJECT_ID/locations/ZONE/privateClouds/PC_NAME?updateMask=encryptionConfig" \
  -d '{
  "encryptionConfig": {}
}'

コマンドを実行する前に、次の値を置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • ZONE: VMware Engine ゾーン(us-east4-a など)。
  • REGION: Cloud KMS リージョン(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 の制約と制限事項について

  • リージョンの要件: プライベート クラウドと選択した 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 で鍵交換オペレーションを実行する手順

  1. vSphere Client で、VM を右クリックします。
  2. [VM ポリシー > 再暗号化] を選択します。
  3. 表示されるダイアログで、再暗号化リクエストを確認します。
  4. タスクが完了するまで待ちます。
  5. KMS 鍵のローテーション後に再起動したホストまたはクラスタに追加したホストに VM を移行して、鍵交換を確認します。

外部 KMS

必要に応じて、KMIP 1.1 準拠で、vSAN 用に VMware によって認定されているサードパーティの KMS ソリューションを選択できます。以下のベンダーは、VMware Engine を使用して KMS ソリューションを検証し、デプロイガイドとサポート ステートメントを公開しています。

構成手順については、次のドキュメントをご覧ください。

サポートされているベンダーを使用する

外部 KMS をデプロイする際には、毎回同じ基本手順を行う必要があります。

  • プロジェクト Google Cloud を作成するか、既存のプロジェクトを使用します。
  • 新しい Virtual Private Cloud(VPC)ネットワークを作成するか、既存の VPC ネットワークを選択します。
  • 選択した VPC ネットワークを VMware Engine ネットワークに接続します。

次に、KMS を Compute Engine VM インスタンスにデプロイします。

  1. Compute Engine VM インスタンスをデプロイするために必要な IAM 権限を設定します。
  2. Compute Engine に KMS をデプロイします。
  3. vCenter と Fortanix KMS 間の信頼を確立します。
  4. vSAN データの暗号化を有効にします。

以降のセクションでは、サポートされているベンダーの 1 つを使用するこのプロセスについて簡単に説明します。

IAM 権限を設定する

特定の Google Cloud プロジェクトと VPC ネットワークに Compute Engine VM インスタンスをデプロイし、VPC を VMware Engine に接続して、VPC ネットワークのファイアウォール ルールを構成するには、十分な権限が必要です。

プロジェクト オーナーとネットワーク管理者 のロールを持つ 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 間の信頼を確立する手順は次のとおりです。

  1. vCenter で証明書を生成します。
  2. KMS で生成されたトークンか鍵を使用して署名します。
  3. その証明書を vCenter に提供するか、アップロードします。
  4. vCenter サーバーの構成ページで KMS の設定とステータスを確認して、接続ステータスを確かめます。

vSAN データの暗号化を有効にする

vCenter では、デフォルトの CloudOwner ユーザーに vSAN データ暗号化を有効にして管理するための十分な権限があります。

外部 KMS からデフォルトのGoogle-owned and managed key プロバイダに戻すには、VMware ドキュメントの標準鍵プロバイダの構成と管理で提供された鍵プロバイダを変更する手順に従います。

次のステップ