建立新的 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
- 選用:如要使用本指南中的 gcloud CLI 範例:
- 安裝或更新至最新版 gcloud CLI。
- 為用戶端設定預設地區和區域, 該區域支援機密 VM。
- 選用:如要使用本指南中的 API 範例,請為要求設定驗證。進一步瞭解 OAuth 2.0。
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
在「機器設定」窗格中,執行下列操作:
按一下導覽選單中的「Security」(安全性)。
在「Confidential VM service」(機密 VM 服務) 區段中,按一下「Enable」(啟用)。
前往「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_FAMILY_NAME
:支援機密 VM 的作業系統映像檔系列。如未另外指定--image
,系統會選取最新版本的映像檔。IMAGE_PROJECT
:包含支援的作業系統映像檔的專案。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,請移除這個鍵/值組合。
IMAGE_PROJECT
:包含支援作業系統映像檔的專案。IMAGE_FAMILY_NAME
:支援機密 VM 的作業系統映像檔系列。如未另外指定--image
,系統會選取最新版本的映像檔。MAINTENANCE_POLICY
:對於使用 SEV 的 N2D 機器類型,請將此值設為MIGRATE
,以支援即時遷移。如為其他機型,請將這個值設為TERMINATE
,因為這些機型不支援即時遷移。
建立執行個體
控制台
如要使用 Google Cloud 控制台建立 AMD SEV Confidential 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-family=IMAGE_FAMILY_NAME \
--image-project=IMAGE_PROJECT \
--project=PROJECT_ID
提供以下這些值:
範例
執行下列指令,在 us-central1-a
可用區中建立名為 n2d-standard-2
的 my-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
}
}
提供以下這些值:
範例
執行下列任一指令,在 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 '{ "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 執行個體。