创建机密虚拟机实例

您可以在创建新的 Compute Engine 虚拟机时创建机密虚拟机实例。

准备工作

在创建机密虚拟机实例之前,您需要按如下方式设置环境:

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手, 请创建一个账号来评估我们的产品在 实际场景中的表现。新客户还可以获得 300 美元的免费抵用金,用于 运行、测试和部署工作负载。
  2. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. 可选:如需使用本指南中的 gcloud CLI 示例,请执行以下操作:
  9. 可选:如需使用本指南中的 API 示例, 请为请求设置身份验证 。详细了解 OAuth 2.0

创建实例

控制台

如需使用 Google Cloud 控制台创建机密虚拟机实例,请完成 以下步骤:

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击创建实例

  3. 机器配置 窗格中,执行以下操作:

    1. 选择受支持的区域和可用区。

    2. 选择以下机器系列之一:

      • 通用

      • 计算优化

      • GPU 数量

    3. 如果您选择了 GPU 数量 系列,请根据 受支持的机器类型选择相应的 GPU 类型GPU 数量

    4. 为要使用的机密计算技术选择受支持的机器类型。

  4. 在导航菜单中,点击安全

  5. 机密虚拟机服务 部分中,点击启用

  6. 选择类型 框中,选择以下 机密计算技术 类型之一:

    • AMD SEV

    • AMD SEV-SNP

    • Intel TDX

  7. 然后,在启用机密计算 对话框中,查看启用该服务时更新的设置列表。如果这些字段被设置为不兼容的值,则可能会包含在列表中。

  8. 点击确认 ,然后点击创建

点击创建 后,系统会打开虚拟机实例 页面。在此页面上,您可以查看新实例的状态和详细信息。当机密虚拟机 实例的状态 列中显示 绿色对勾标记图标 可用 图标时,即表示该实例已准备就绪,可以使用。

gcloud

如需使用 gcloud CLI 创建机密虚拟机实例,请使用 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

请提供以下值:

  • 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 和 C3D 机器类型,请将其设置为 MIGRATE 以支持实时迁移。对于所有其他 机器类型,请将此值设置为 TERMINATE,因为它们 不支持实时迁移

  • ZONE_NAME:要在其中创建实例的 机密虚拟机支持的可用区

  • IMAGE_PROJECT:包含受支持的操作系统映像的项目。

  • IMAGE_FAMILY_NAME:机密虚拟机支持的操作系统映像的系列。如果您没有另外指定 --image,系统会选择最新的映像版本。

  • PROJECT_ID:可选。项目的 ID,您将在该项目中创建虚拟机。

示例

运行以下命令,以在 us-central1-a 可用区创建一个名为 my-instancen2d-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"
    }
  ]
}

请提供以下值:

  • 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,系统会选择最新的映像版本。

示例

运行以下命令之一,以在 my-project 项目的 us-central1-a 可用区创建一个名为 my-instancen2d-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/instances

PowerShell (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 验证您的机密虚拟机实例