建立機密 VM 執行個體

建立新的 Compute Engine 虛擬機器時,您可以一併建立機密 VM 執行個體。

事前準備

建立機密 VM 執行個體前,請先依下列方式設定環境:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

  8. 選用:如要使用本指南中的 gcloud CLI 範例:
  9. 選用:如要使用本指南中的 API 範例,請為要求設定驗證。進一步瞭解 OAuth 2.0
  10. 建立執行個體

    控制台

    如要使用 Google Cloud 控制台建立 AMD SEV Confidential VM,請完成下列步驟。

    1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

      前往 VM 執行個體

    2. 點選「建立執行個體」

    3. 在「機器設定」窗格中,執行下列操作:

      1. 選取支援的區域和可用區

      2. 選取下列其中一個機器系列:

        • 一般用途

        • 運算最佳化

      3. 選取要使用的機密運算技術支援的機器類型

    4. 按一下導覽選單中的「Security」(安全性)

    5. 在「Confidential VM service」(機密 VM 服務) 區段中,按一下「Enable」(啟用)

    6. 前往「Enable Confidential Computing」(啟用機密運算) 對話方塊,並查看服務啟用時更新的設定清單。如果這些欄位設為不相容的值,可能會包含下列欄位。

    7. 按一下「啟用」,然後點選「建立」

    點選「Create」(建立) 之後,「VM instances」(VM 執行個體) 頁面就會開啟。您可以在這個頁面查看新執行個體的狀態和詳細資料。當機密 VM 執行個體的「Status」(狀態) 欄顯示 綠色勾號「可用」圖示「Available」(可用) 圖示時,即表示該執行個體已準備就緒。

    gcloud

    如要使用 gcloud CLI 建立機密 VM 執行個體,請使用 instances create 子指令和 --confidential-compute-type 旗標。

    gcloud compute instances create INSTANCE_NAME \
        --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
        --machine-type=MACHINE_TYPE_NAME \
        --min-cpu-platform="CPU_PLATFORM" \
        --maintenance-policy="MAINTENANCE_POLICY" \
        --zone=ZONE_NAME \
        --image-family=IMAGE_FAMILY_NAME \
        --image-project=IMAGE_PROJECT \
        --project=PROJECT_ID
    

    提供以下這些值:

    • INSTANCE_NAME:新 VM 執行個體的名稱。

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY:要使用的機密運算技術類型。請選擇下列其中一個值:

      • SEV

      • SEV_SNP

      • TDX

    • MACHINE_TYPE_NAME:VM 機器類型,例如 n2d-standard-2。機密 VM 執行個體的有效機器類型取決於您選擇的機密運算技術。請參閱「機器類型、CPU 和區域」。

    • CPU_PLATFORM:請選擇下列其中一個值:

      • 適用於 AMD SEV:AMD Milan (C2D 或 N2D 機型)、AMD Genoa (C3D 機型) 或 AMD Turin (C4D 機型)。

      • AMD SEV-SNP:AMD Milan (N2D 機器類型)。

      • 如果是 Intel TDX:請移除這個標記。

    • MAINTENANCE_POLICY:對於使用 SEV 的 N2D 機器類型,請將此值設為 MIGRATE,以支援即時遷移。如為其他機型,請將這個值設為 TERMINATE,因為這些機型不支援即時遷移

    • ZONE_NAME:要建立執行個體的支援機密 VM 的可用區

    • IMAGE_FAMILY_NAME:支援機密 VM 的作業系統映像檔系列。如未另外指定 --image,系統會選取最新版本的映像檔。

    • IMAGE_PROJECT:包含支援的作業系統映像檔的專案。

    • PROJECT_ID:選用。要在其中建立 VM 的專案 ID。

    範例

    執行下列指令,在 us-central1-a 可用區中建立名為 n2d-standard-2my-instance 執行個體,並使用 AMD SEV-SNP:

    gcloud compute instances create my-instance \
        --machine-type=n2d-standard-2 \
        --min-cpu-platform="AMD Milan" \
        --zone=us-central1-a \
        --confidential-compute-type=SEV_SNP \
        --maintenance-policy=TERMINATE \
        --image-family=ubuntu-2404-lts-amd64 \
        --image-project=ubuntu-os-cloud
    

    回應

    建立要求的回應類似下列範例:

    Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance].
    NAME: my-instance
    ZONE: us-central1-a
    MACHINE_TYPE: n2d-standard-2
    PREEMPTIBLE:
    INTERNAL_IP: 0.0.0.0
    EXTERNAL_IP: 0.0.0.0
    STATUS: RUNNING
    

    REST

    如要建立機密 VM 執行個體,請傳送 POST 要求並提供適當的內文內容。

    HTTP 方法和網址:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances
    

    JSON 要求內文:

    {
      "name": "INSTANCE_NAME",
      "confidentialInstanceConfig": {
        "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
      },
      "machineType": "zones/ZONE_NAME/machineTypes/MACHINE_TYPE_NAME",
      "minCpuPlatform": "CPU_PLATFORM",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME"
          }
        }
      ],
      "networkInterfaces": [
        {
          "nicType": "gVNIC"
        }
      ],
      "scheduling": {
        "automaticRestart": true,
        "nodeAffinities": [],
        "preemptible": false,
        "onHostMaintenance": MAINTENANCE_POLICY
      }
    }
    

    提供以下這些值:

    • PROJECT_ID:要在其中建立 VM 的專案 ID。

    • ZONE_NAME:要建立執行個體的支援機密 VM 的可用區

    • INSTANCE_NAME:新 VM 執行個體的名稱。

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY:要使用的機密運算技術類型。請選擇下列其中一個值:

      • SEV

      • SEV_SNP

      • TDX

    • MACHINE_TYPE_NAME:VM 機器類型,例如 n2d-standard-2。機密 VM 執行個體的有效機器類型取決於您選擇的機密運算技術。請參閱「機器類型、CPU 和區域」。

    • CPU_PLATFORM:請選擇下列其中一個值:

      • 適用於 AMD SEV:AMD Milan (C2D 或 N2D 機型)、AMD Genoa (C3D 機型) 或 AMD Turin (C4D 機型)。

      • AMD SEV-SNP:AMD Milan (N2D 機器類型)。

      • 如果是 Intel TDX,請移除這個鍵/值組合。

    • IMAGE_PROJECT:包含支援作業系統映像檔的專案。

    • IMAGE_FAMILY_NAME:支援機密 VM 的作業系統映像檔系列。如未另外指定 --image,系統會選取最新版本的映像檔。

    • MAINTENANCE_POLICY:對於使用 SEV 的 N2D 機器類型,請將此值設為 MIGRATE,以支援即時遷移。如為其他機型,請將這個值設為 TERMINATE,因為這些機型不支援即時遷移

    範例

    執行下列任一指令,在 my-project 專案的 us-central1-a 可用區中,使用 AMD SEV-SNP 建立名為 my-instancen2d-standard-2 執行個體:

    curl (Linux、macOS 或 Cloud Shell)

    curl -X POST \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -H "Content-Type: application/json" \
          -d '{
                "machineType": "zones/us-central1-a/machineTypes/n2d-standard-2",
                "name": "my-instance",
                "minCpuPlatform": "AMD Milan",
                "confidentialInstanceConfig": {
                  "confidentialInstanceType": "SEV_SNP"
                },
                "disks": [
                  {
                    "boot": true,
                    "initializeParams": {
                      "sourceImage": "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts-amd64"
                    }
                  }
                ],
                "networkInterfaces": [
                  {
                    "nicType": "gVNIC"
                  }
                ],
                "scheduling": {
                  "automaticRestart": true,
                  "nodeAffinities": [],
                  "preemptible": false,
                  "onHostMaintenance": "TERMINATE"
                }
              }' \
          https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances

    PowerShell (Windows)

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }
    $body = @"
    {
      "machineType": "zones/us-central1-a/machineTypes/n2d-standard-2",
      "name": "my-instance",
      "minCpuPlatform": "AMD Milan",
      "confidentialInstanceConfig": {
        "confidentialInstanceType": "SEV_SNP"
      },
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts-amd64"
          }
        }
      ],
      "networkInterfaces": [
        {
          "nicType": "gVNIC"
        }
      ],
      "scheduling": {
        "automaticRestart": true,
        "nodeAffinities": [],
        "preemptible": false,
        "onHostMaintenance": "TERMINATE"
      }
    }
    "@
    Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $body `
      -Uri "https://compute.googleapis.com/compute/projects/my-project/zones/us-central1-a/instances" | Select-Object -Expand Content

    回應

    建立要求的回應類似下列範例:

    {
      "kind": "compute#operation",
      "id": "0000000000000000000",
      "name": "operation-0000000000000-0000000000000-00000000-00000000",
      "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
      "operationType": "insert",
      "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance",
      "targetId": "0000000000000000000",
      "status": "RUNNING",
      "user": "alex@example.com",
      "progress": 0,
      "insertTime": "2024-09-29T18:06:52.174-07:00",
      "startTime": "2024-09-29T18:06:52.175-07:00",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-0000000000000-0000000000000-00000000-00000000"
    }
    

    您可以對 selfLink 提出 GET 要求,查看 VM 建立進度:

    GET https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/operations/OPERATION_ID
    

    為特定機器類型啟用較高的網路頻寬

    較大的機器類型支援高頻寬網路。選取 Tier_1 網路頻寬設定後,資料轉出頻寬會從預設的 32 Gbps 增加至 50 到 200 Gbps,視機器類型而定。如要達到較高的 Tier_1 頻寬速度,執行個體必須執行 gVNIC 虛擬網路驅動程式。進一步瞭解如何設定頻寬較高的 VM

    後續步驟

    瞭解如何透過 Cloud Monitoring 驗證機密 VM 執行個體