您可以在创建新的 Compute Engine 虚拟机时创建机密虚拟机实例。
准备工作
在创建机密虚拟机实例之前,您需要按如下方式设置环境:
- 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。
 - 为客户端设置默认区域和可用区以支持机密虚拟机。
 
 - 可选:如需使用本指南中的 API 示例,请为请求设置身份验证。详细了解 OAuth 2.0。
 在 Google Cloud 控制台中,转到虚拟机实例页面。
点击创建实例。
在机器配置窗格中,执行以下操作:
在导航菜单中,点击安全。
在机密虚拟机服务部分中,点击启用。
在选择类型框中,选择以下任一机密计算技术类型:
AMD SEV
AMD SEV-SNP
Intel TDX
然后,在启用机密计算对话框中,查看启用该服务时更新的设置列表。如果以下字段设置为不兼容的值,则列表可能包括这些字段。
系列和机器类型。如需了解详情,请参阅机器类型、CPU 和可用区。
区域和可用区。如需了解详情,请参阅机器类型、CPU 和可用区。
启动磁盘映像。如需了解详情,请参阅操作系统。
主机维护时。如需了解详情,请参阅设置虚拟机的主机维护政策。
网络接口卡。如需了解详情,请参阅使用 Google 虚拟 NIC。
点击确认,然后点击创建。
INSTANCE_NAME:新虚拟机实例的名称。CONFIDENTIAL_COMPUTING_TECHNOLOGY:要使用的机密计算技术的类型。请选择以下某个值:SEVSEV_SNPTDX
MACHINE_TYPE_NAME:虚拟机的机器类型,例如n2d-standard-2。机密虚拟机实例的有效机器类型取决于您选择的机密计算技术。请参阅机器类型、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:要在其中创建实例的机密虚拟机支持的可用区。IMAGE_PROJECT:包含受支持的操作系统映像的项目。IMAGE_FAMILY_NAME:支持机密虚拟机的操作系统映像的系列。 如果您未另外指定--image,系统会选择最新的映像版本。PROJECT_ID:可选。要在其中创建虚拟机的项目的 ID。PROJECT_ID:要在其中创建虚拟机的项目的 ID。ZONE_NAME:要在其中创建实例的机密虚拟机支持的可用区。INSTANCE_NAME:新虚拟机实例的名称。CONFIDENTIAL_COMPUTING_TECHNOLOGY:要使用的机密计算技术的类型。请选择以下某个值:SEVSEV_SNPTDX
MACHINE_TYPE_NAME:虚拟机的机器类型,例如n2d-standard-2。机密虚拟机实例的有效机器类型取决于您选择的机密计算技术。请参阅机器类型、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:支持机密虚拟机的操作系统映像的系列。 如果您未另外指定--image,系统会选择最新的映像版本。
创建实例
控制台
如需使用 Google Cloud 控制台创建机密虚拟机实例,请完成以下步骤:
点击创建后,系统会打开虚拟机实例页面。在此页面上,您可以查看新实例的状态和详细信息。当机密虚拟机实例的状态列中显示 
可用图标时,即表示该实例已准备就绪,可以使用。
gcloud
如需使用 gcloud CLI 创建机密虚拟机实例,请使用带有 --confidential-compute-type 标志的 instances create 子命令。
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 可用区中创建一个名为 my-instance 的 n2d-standard-2 实例,并使用 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-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
如需创建机密虚拟机实例,您需要发送包含相应正文内容的 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 可用区中创建一个名为 my-instance 的 n2d-standard-2 实例,并使用 AMD SEV-SNP:
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 请求,以检查虚拟机创建进度:
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 虚拟网络驱动程序。详细了解如何配置具有较高带宽的虚拟机。
后续步骤
了解如何使用 Cloud Monitoring 验证您的机密虚拟机实例。