建立新的 Compute Engine 虛擬機器時,您可以一併建立機密 VM 執行個體。
事前準備
建立機密 VM 執行個體前,請先依下列步驟設定環境:
- 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.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Compute Engine API. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Compute Engine API. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 選用:如要使用本指南中的 gcloud CLI 範例:
    - 安裝或更新至最新版 gcloud CLI。
- 為用戶端設定預設地區和區域, 該區域支援機密 VM。
 
- 選用:如要使用本指南中的 API 範例,請為要求設定驗證。進一步瞭解 OAuth 2.0。
- 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。 
- 點選「建立執行個體」。 
- 在「機器設定」窗格中,執行下列操作: 
- 按一下導覽選單中的「Security」(安全性)。 
- 在「Confidential VM service」(機密 VM 服務) 區段中,按一下「Enable」(啟用)。 
- 在「選取類型」方塊中,選取下列其中一種 機密運算技術類型: - AMD SEV 
- AMD SEV-SNP 
- Intel TDX 
 
- 前往「Enable Confidential Computing」(啟用機密運算) 對話方塊,並查看服務啟用時更新的設定清單。如果這些欄位設為不相容的值,可能會包含下列欄位。 - 「系列」和「機器類型」。詳情請參閱機器類型、CPU 和區域。 
- 區域和可用區。詳情請參閱機器類型、CPU 和區域。 
- 開機磁碟映像檔。詳情請參閱「作業系統」一文。 
- 在主機維護期間。詳情請參閱設定 VM 的主機維護政策。 
- 網路介面卡。詳情請參閱「使用 Google Virtual NIC」。 
 
- 按一下「確認」,然後按一下「建立」。 
- 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_PROJECT:包含支援作業系統映像檔的專案。
- IMAGE_FAMILY_NAME:支援機密 VM 的作業系統映像檔系列。如未另外指定- --image,系統會選取最新版本的映像檔。
- PROJECT_ID:選用。要在其中建立 VM 的專案 ID。
- 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:請移除這個鍵/值組合。 
 
- MAINTENANCE_POLICY:如要支援即時遷移,請將使用 SEV 的 N2D 機型設為- MIGRATE。如為其他機型,請將這個值設為- TERMINATE,因為這些機型不支援即時遷移。
- IMAGE_PROJECT:包含支援作業系統映像檔的專案。
- IMAGE_FAMILY_NAME:支援機密 VM 的作業系統映像檔系列。如未另外指定- --image,系統會選取最新版本的映像檔。
建立執行個體
控制台
如要使用 Google Cloud 控制台建立機密 VM 執行個體,請完成下列步驟:
點選「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-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY_NAME \
    --project=PROJECT_ID
提供以下這些值:
範例
執行下列指令,在 us-central1-a 可用區中,使用 AMD SEV-SNP 建立名為 n2d-standard-2 的 my-instance 執行個體:
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-project=ubuntu-os-cloud \
    --image-family=ubuntu-2404-lts-amd64
回應
建立要求的回應類似下列範例:
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",
  "scheduling": {
    "automaticRestart": true,
    "nodeAffinities": [],
    "onHostMaintenance": "MAINTENANCE_POLICY",
    "preemptible": false
  },
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME"
      }
    }
  ],
  "networkInterfaces": [
    {
      "nicType": "gVNIC"
    }
  ]
}
提供以下這些值:
範例
執行下列任一指令,在 my-project 專案的 us-central1-a 可用區中,使用 AMD SEV-SNP 建立名為 my-instance 的 n2d-standard-2 執行個體:
curl (Linux、macOS 或 Cloud Shell)
curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
            "name": "my-instance",
            "confidentialInstanceConfig": {
              "confidentialInstanceType": "SEV_SNP"
            },
            "machineType": "zones/us-central1-a/machineTypes/n2d-standard-2",
            "minCpuPlatform": "AMD Milan",
            "scheduling": {
              "automaticRestart": true,
              "nodeAffinities": [],
              "onHostMaintenance": "TERMINATE",
              "preemptible": false
            },
            "disks": [
              {
                "boot": true,
                "initializeParams": {
                  "sourceImage": "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts-amd64"
                }
              }
            ],
            "networkInterfaces": [
              {
                "nicType": "gVNIC"
              }
            ]
          }' \
      https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instancesPowerShell (Windows)
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
$body = @"
{
  "name": "my-instance",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "SEV_SNP"
  },
  "machineType": "zones/us-central1-a/machineTypes/n2d-standard-2",
  "minCpuPlatform": "AMD Milan",
  "scheduling": {
    "automaticRestart": true,
    "nodeAffinities": [],
    "onHostMaintenance": "TERMINATE",
    "preemptible": false
  }
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts-amd64"
      }
    }
  ],
  "networkInterfaces": [
    {
      "nicType": "gVNIC"
    }
  ]
}
"@
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 執行個體。