ディスクの暗号化について


Compute Engine のデフォルトではお客様の保存コンテンツが暗号化されます。Compute Engine は、暗号化を自動的に処理するため、ユーザー側での作業は必要ありません。このオプションは、Google のデフォルトの暗号化と呼ばれます。

ただし、鍵暗号鍵(KEK)を提供することで、Compute Engine がリソースに使用する暗号化をカスタマイズできます。鍵暗号鍵はデータを直接暗号化しませんが、Compute Engine がデータの暗号化に使用する Google 生成の鍵を暗号化します。

鍵暗号鍵を指定するには、次の 2 つの方法があります。

  • (推奨)Compute Engine で Cloud KMS の顧客管理の暗号鍵(CMEK)を使用します。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。Cloud KMS を使用すると、鍵の使用状況を追跡すること、監査ログを表示すること、鍵のライフサイクルを管理することが可能です。データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵を制御および管理します。

    CMEK は手動で作成することも、Cloud KMS Autokey を使用して自動的に作成することもできます。

    ほとんどの場合、CMEK で暗号化されたディスクを作成した後は、ディスクを操作するときに鍵を指定する必要はありません。

  • Compute Engine の外部で独自の鍵暗号鍵を管理し、ディスクを作成または管理するたびに鍵を指定できます。このオプションは、顧客指定の暗号鍵(CSEK)と呼ばれます。CSEK で暗号化されたリソースを管理する場合は、リソースを暗号化する際に使用した鍵を常に指定する必要があります。

詳細については、顧客管理の暗号鍵顧客指定の暗号鍵をご覧ください。

サポートされているディスクタイプ

このセクションでは、Compute Engine が提供するディスクとその他のストレージ オプションでサポートされている暗号化タイプについて説明します。

Cloud KMS Autokey による CMEK

Cloud KMS 鍵を使用して Compute Engine リソースを保護する場合は、CMEK を手動で作成するか、Cloud KMS Autokey を使用して鍵を作成します。Autokey を使用すると、Compute Engine のリソース作成の一環として、キーリングと鍵がオンデマンドで生成されます。暗号化と復号のオペレーションに鍵を使用するサービス エージェントがまだ存在しない場合、そのエージェントが作成され、必要な Identity and Access Management(IAM)ロールが付与されます。詳細については、Autokey の概要をご覧ください。

Cloud KMS Autokey によって作成された CMEK を使用して Compute Engine リソースを保護する方法については、Compute Engine リソースでの Autokey の使用をご覧ください。

スナップショット

Autokey を使用して Compute Engine リソースを保護する鍵を作成する場合、Autokey はスナップショットの新しい鍵を作成しません。スナップショットは、ソースディスクの暗号化に使用したものと同じ鍵で暗号化する必要があります。Google Cloud コンソールを使用してスナップショットを作成する場合、ディスクで使用される暗号鍵がスナップショットに自動的に適用されます。gcloud CLI、Terraform、または Compute Engine API を使用してスナップショットを作成する場合は、ディスクの暗号化に使用される鍵のリソース ID を取得し、その鍵を使用してスナップショットを暗号化する必要があります。

顧客管理の暗号鍵でディスクを暗号化する

手動で作成された顧客管理の暗号鍵(CMEK)を使用してディスクやその他の Compute Engine リソースを暗号化する方法については、Cloud KMS 鍵を使用してリソースを保護するをご覧ください。

顧客指定の暗号鍵でディスクを暗号化する

顧客指定の暗号鍵(CSEK)を使用してディスクやその他の Compute Engine リソースを暗号化する方法については、顧客指定の暗号鍵でディスクを暗号化するをご覧ください。

ディスクの暗号化に関する情報を表示する

Compute Engine のディスクは、Google 管理、顧客管理、顧客指定の暗号鍵のいずれかで暗号化されます。デフォルトは Google 管理の暗号化です。

ディスクの暗号化タイプを表示するには、gcloud CLI、Google Cloud コンソール、または Compute Engine API を使用します。

コンソール

  1. Google Cloud コンソールで、[ディスク] ページに移動します。

    [ディスク] に移動

  2. [名前] 列で、ディスクの名前をクリックします。

  3. [プロパティ] テーブルで、[暗号化] ラベルの付いた行は、Google 管理顧客管理、または顧客指定という暗号化のタイプを示します。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud compute disks describe コマンドを使用します。

        gcloud compute disks describe DISK_NAME \
          --zone=ZONE \
          --format="json(diskEncryptionKey)"
      

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • ZONE: ディスクが配置されているゾーン。
    • DISK_NAME: ディスクの名前。

      コマンド出力

      出力が null の場合、ディスクでは Google 管理の暗号化(デフォルト)が使用されます。

      それ以外の場合、出力は JSON オブジェクトです。

      JSON オブジェクトに diskEncryptionKey という名前のフィールドが含まれている場合、ディスクは暗号化されます。diskEncryptionKey オブジェクトには、ディスクが CMEK または CSEK で暗号化されているかどうかに関する情報が含まれます。

      • diskEncryptionKey.kmsKeyName プロパティが存在する場合、ディスクは CMEK で暗号化されます。 kmsKeyName プロパティは、ディスクの暗号化に使用された特定の鍵の名前を示します。
        {
          "diskEncryptionKey": {
            "kmsKeyName": "projects/my-proj/.."
          }
        }
        
      • diskEncryptionKey.sha256 プロパティが存在する場合、ディスクは CSEK で暗号化されます。sha256 プロパティは、ディスクを保護する顧客指定の暗号鍵の SHA-256 ハッシュです。
          {
            "diskEncryptionKey": {
              "sha256": "abcdefghijk134560459345dssfd"
            }
          }
            

API

compute.disks.get メソッドPOST リクエストを送信します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • ZONE: ディスクが配置されているゾーン。
  • DISK_NAME: ディスクの名前

リクエスト / レスポンス

レスポンスが null の場合、ディスクは Google 管理の暗号化(デフォルト)を使用します。

それ以外の場合、レスポンスは JSON オブジェクトです。

JSON オブジェクトに diskEncryptionKey という名前のフィールドが含まれている場合、ディスクは暗号化されます。diskEncryptionKey オブジェクトには、ディスクが CMEK または CSEK で暗号化されているかどうかに関する情報が含まれます。

  • diskEncryptionKey.kmsKeyName プロパティが存在する場合、ディスクは CMEK で暗号化されます。 kmsKeyName プロパティは、ディスクの暗号化に使用された特定の鍵の名前を示します。
    {
      "diskEncryptionKey": {
        "kmsKeyName": "projects/my-proj/.."
      }
    }
    
  • diskEncryptionKey.sha256 プロパティが存在する場合、ディスクは CSEK で暗号化されます。sha256 プロパティは、ディスクを保護する顧客指定の暗号鍵の SHA-256 ハッシュです。
      {
        "diskEncryptionKey": {
          "sha256": "abcdefghijk134560459345dssfd"
        }
      }
        

ディスクが CMEK 暗号化を使用する場合、プロジェクトごとに鍵を表示するの手順に沿って鍵、キーリング、ロケーションに関する詳細情報を確認できます。

ディスクで CSEK 暗号化が使用されている場合は、鍵の詳細について組織の管理者にお問い合わせください。CMEK を使用すると、鍵の使用状況を追跡することで、鍵が保護するリソースを確認することもできます。詳細については、鍵の使用状況を表示するをご覧ください。

次のステップ