Confidential VM インスタンスを作成する

このページでは、新しい Confidential VMs インスタンスの設定方法について説明します。

Confidential VMs の詳細については、Confidential VMs と Compute Engine をご覧ください。

制限事項

Confidential VMs は、ライブ マイグレーションをサポートしていません。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  6. Compute Engine API を有効にします。
  7. Compute Engine API を有効にする
  8. このガイドのコマンドラインの例を使用する場合は、次のことを行ってください。
  9. このガイドの API の例を使用する場合は API アクセスを設定します。

新しい Confidential VM インスタンスを作成する

Cloud Console

Google Cloud Console を使用して AMD Secure Encrypted Virtualization(SEV)CPU プラットフォームに新しい Confidential VMs を作成するには:

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [インスタンスを作成] をクリックします。

  3. [CPU プラットフォームと GPU] をクリックしてセクションを展開します。

  4. [CPU プラットフォーム] は [自動] のままにします。

  5. [機密 VM サービス] チェックボックスをオンにします。

  6. サービスを有効にすると変更される設定を通知するメッセージが表示されます。[有効にする] をクリックします。

デフォルトの OS ブートディスクが Shielded Container Optimized OS(COS)に変更されます。ブートディスクを別の OS に変更するには、[変更] をクリックして、Confidential VMs のサポート対象の OS を選択します。

残りのオプションはデフォルト値のままにすることも、必要に応じて変更することもできます。使用可能なオプションについては、Compute Engine ドキュメントのカスタム マシンタイプを持つ VM インスタンスの作成をご覧ください。完了したら、[作成] をクリックします。

完了したら、[作成] をクリックします。

gcloud

新しい Confidential VM インスタンスを作成するには、Confidential VM でサポートされている Compute Engine イメージを使用します。

サポートされているイメージの一覧表示

既存の Confidential VM でサポートされているイメージを一覧表示するには、次のいずれかのコマンドを使用します。

Shielded Container Optimized OS(COS):

gcloud compute images list --filter="guestOsFeatures[].type:(SEV_CAPABLE)" --project cos-cloud;

Ubuntu Linux:

gcloud compute images list --filter="guestOsFeatures[].type:(SEV_CAPABLE)" --project ubuntu-os-cloud;

イメージの詳細を表示する

特定のイメージの詳細を表示するには、次のように zones describe サブコマンドを使用します。IMAGE_NAME プレースホルダはイメージの名前で置き換え、IMAGE_PROJECT_NAME はイメージのプロジェクト名で置き換えます。

gcloud compute images describe IMAGE_NAME --project IMAGE_PROJECT_NAME;

ゾーンごとの使用可能な CPU プラットフォームを一覧表示する

特定のゾーンで使用可能な CPU プラットフォームの一覧を取得するには、zones describe サブコマンドを使用します。ZONE_NAME プレースホルダはゾーン名で置き換えます。

gcloud compute zones describe ZONE_NAME --format="value(availableCpuPlatforms)"

たとえば、次のコマンドは、ゾーン us-central1-f で使用可能な CPU プラットフォームを返します。

gcloud compute zones describe us-central1-f --format="value(availableCpuPlatforms)"

新しいインスタンスを作成する

AMD Secure Encrypted Virtualization(SEV)CPU プラットフォームに新しい Confidential VMs インスタンスを作成するには、gcloud コマンドライン ツールを使用します。

新しいインスタンスを作成するには、instances create サブコマンドを使用します。このコマンドで --confidential-compute フラグを使用し、Confidential VMs のオプトインを指定します。Confidential VMs はライブ マイグレーションをサポートしていないため、--maintenance-policy=TERMINATE を使用する必要があります。

次のプレースホルダを対応する値に置き換えます。

  • INSTANCE_NAME: 新しいインスタンスに設定する名前。
  • MACHINE_TYPE: 使用する N2D マシンタイプ。
  • ZONE_NAME: インスタンスを作成するゾーンの名前。特定のゾーンで使用可能な CPU プラットフォームを確認する方法については、このトピックの前半で説明したゾーンごとの使用可能な CPU プラットフォームを一覧表示するをご覧ください。
  • IMAGE_NAME: 使用する Confidential VM サポートでサポートされるイメージの名前。
  • IMAGE_PROJECT: イメージを含むプロジェクト。
gcloud compute instances create INSTANCE_NAME \
  --machine-type "MACHINE_TYPE" --zone "ZONE_NAME" \
  --confidential-compute --maintenance-policy=TERMINATE \
  --image=IMAGE_NAME \
  --image-project=IMAGE_PROJECT

次のコマンドの例では、us-central1-f ゾーンの AMD SEV CPU プラットフォームに example-instance という n2d-standard-16-type インスタンスを作成します。

gcloud compute instances create example-instance \
  --machine-type "n2d-standard-16" --zone "us-central1-f" \
  --confidential-compute --maintenance-policy=TERMINATE \
  --image="example-cvm-image" \
  --image-project="public-image-project"

API

Compute Engine API を使用して、AMD Secure Encrypted Virtualization(SEV)CPU プラットフォームに新しい Confidential VMs を作成するには、通常どおりインスタンス作成リクエストを送信します。ただし、enableConfidentialCompute を true に設定することが重要な相違点です。Confidential VMs はライブ マイグレーションをサポートしていないため、onHostMaintenance=TERMINATE を使用する必要があります。

必要に応じて、値を minCpuPlatform プロパティに設定し、最小 CPU プラットフォームを指定できます。

以下は、Compute Engine API の Instances REST リソースに送信された JSON オブジェクトの例です。このリクエストを使用して VM でサポートされる新しい Confidential VM インスタンスを作成するには、対応するプレースホルダを置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • ZONE_NAME: インスタンスを作成するゾーン。
  • MACHINE_TYPE: 使用する N2D マシンタイプ。
  • INSTANCE_NAME: 新しいインスタンスに設定する名前。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances

{
  "machineType": "zones/ZONE_NAME/machineTypes/MACHINE_TYPE",
  "name": "INSTANCE_NAME",
  "confidentialInstanceConfig": {
    "enableConfidentialCompute": true
  },
    "scheduling": {
    "automaticRestart": true,
    "nodeAffinities": [],
    "onHostMaintenance": "TERMINATE",
    "preemptible": false
  }
  ...
}

インスタンスへの接続

新しく作成したインスタンスに接続するには、次の操作を行います。

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 仮想マシン インスタンスのリストで、接続するインスタンスの行にある [SSH] をクリックします。

これで、Confidential VM インスタンスを操作するためのターミナル ウィンドウが表示されます。

AMD SEV が有効になっていることを確認する

新しく作成された Confidential VM インスタンスが AMD SEV を使用していることを確認するには、インスタンスに接続した後に次のコマンドを実行します。

dmesg | grep SEV | head

AMD SEV が有効になっている場合は、次のようなレスポンスが返されます。

[    0.290272] AMD Secure Encrypted Virtualization (SEV) active

Cloud Monitoring の整合性検証イベントを調べて Confidential VMs インスタンスの状態に関する詳しい情報を取得する方法については、Cloud Monitoring を使用して Confidential VMs インスタンスを検証するをご覧ください。

Confidential VMs の ID トークンを確認する

機密情報を VM インスタンスに送信する前に、アプリケーションはメタデータ サーバーに VM の一意の ID トークンをリクエストできます。この ID トークンには、インスタンスの詳細情報(インスタンス ID、作成時間、インスタンスのイメージのライセンス コードなど)が含まれます。このトークンには、VM が機密かどうかを確認するためのクレームも含まれています。Confidential VMs の場合、instance_confidentiality クレームの値は 1 です。

VM の ID トークンを取得してデコードする方法については、インスタンスの ID の確認をご覧ください。

次のステップ