您可以在创建新的 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:要使用的机密计算技术的类型。请选择以下某个值:- SEV
- SEV_SNP
- TDX
 
- 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:要使用的机密计算技术的类型。请选择以下某个值:- SEV
- SEV_SNP
- TDX
 
- 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 验证您的机密虚拟机实例。