Criar uma instância de VM confidencial

É possível criar uma instância de VM confidencial como parte da criação de uma nova máquina virtual do Compute Engine.

Antes de começar

Antes de criar uma instância de VM confidencial, você precisa configurar o ambiente da seguinte maneira:

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

  8. Opcional: para usar os exemplos da CLI gcloud neste guia, siga estas etapas:
  9. Opcional: para usar os exemplos da API deste guia, configure a autenticação para suas solicitações. Saiba mais sobre o OAuth 2.0 (em inglês).

Criar uma instância

Console

Para criar uma VM confidencial AMD SEV com o console do Google Cloud, siga estas etapas.

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Clique em Criar instância.

  3. Na seção Serviço de VM confidencial, clique em Ativar.

  4. Na caixa de diálogo Ativar Computação confidencial, revise a lista de configurações que são atualizadas quando você ativa o serviço. Ela pode incluir os seguintes campos, se tiverem sido definidos como valores incompatíveis.

  5. Clique em Ativar.

  6. Na seção Configuração da máquina, expanda Configurações avançadas.

  7. Para a plataforma de CPU, escolha AMD Milan ou mais recente.

  8. Verifique se essas configurações estão corretas e clique em Criar.

Depois de clicar em Criar, a página Instâncias de VM será aberta. Nessa página, é possível conferir o status e os detalhes da nova instância. Quando um ícone Marca de seleção verde Disponível aparecer na coluna Status da instância de VM confidencial, ela estará pronta para uso.

gcloud

Para criar uma instância de VM confidencial com a CLI gcloud, use o subcomando instances create com a flag --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

Forneça os valores a seguir:

  • INSTANCE_NAME: o nome da nova instância de VM.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: o tipo de tecnologia de computação confidencial a ser usado. Escolha um dos seguintes valores:

    • SEV

    • SEV_SNP

    • TDX

  • MACHINE_TYPE_NAME: o tipo de máquina da VM, por exemplo, n2d-standard-2. Os tipos de máquina válidos para instâncias de VM confidencial são determinados pela tecnologia de computação confidencial escolhida. Consulte Tipos de máquina, CPUs e zonas.

  • CPU_PLATFORM: escolha um dos seguintes valores:

    • Para AMD SEV: AMD Milan (tipos de máquina C2D ou N2D) ou AMD Genoa (tipos de máquina C3D).

    • Para AMD SEV-SNP: AMD Milan (tipos de máquina N2D).

    • Para Intel TDX: remova esta flag.

  • MAINTENANCE_POLICY: para tipos de máquina N2D que usam SEV, defina como MIGRATE para oferecer suporte à migração em tempo real. Para todos os outros tipos de máquina, defina esse valor como TERMINATE, já que eles não oferecem suporte à migração em tempo real.

  • ZONE_NAME: a zona compatível com VM confidencial em que a instância será criada.

  • IMAGE_FAMILY_NAME: a família da imagem do sistema operacional compatível com a VM confidencial. Quando você não especifica --image, a versão mais recente da imagem é selecionada.

  • IMAGE_PROJECT: o projeto que contém a imagem do sistema operacional compatível.

  • PROJECT_ID: opcional. O ID do projeto em que a VM será criada.

Exemplo

Execute o comando abaixo para criar uma instância n2d-standard-2 chamada my-instance na zona us-central1-a, usando o 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

Resposta

Uma resposta a uma solicitação de criação é semelhante a este exemplo:

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

Para criar uma instância de VM confidencial, envie uma solicitação POST com o conteúdo do corpo adequado.

O método HTTP e o URL:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances

Solicitar corpo 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
  }
}

Forneça os valores a seguir:

  • PROJECT_ID: o ID do projeto em que a VM será criada.

  • ZONE_NAME: a zona compatível com VM confidencial em que a instância será criada.

  • INSTANCE_NAME: o nome da nova instância de VM.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: o tipo de tecnologia de computação confidencial a ser usado. Escolha um dos seguintes valores:

    • SEV

    • SEV_SNP

    • TDX

  • MACHINE_TYPE_NAME: o tipo de máquina da VM, por exemplo, n2d-standard-2. Os tipos de máquina válidos para instâncias de VM confidencial são determinados pela tecnologia de computação confidencial escolhida. Consulte Tipos de máquina, CPUs e zonas.

  • CPU_PLATFORM: escolha um dos seguintes valores:

    • Para AMD SEV: AMD Milan (tipos de máquina C2D ou N2D) ou AMD Genoa (tipos de máquina C3D).

    • Para AMD SEV-SNP: AMD Milan (tipos de máquina N2D).

    • Para Intel TDX: remova este par de chave-valor.

  • IMAGE_PROJECT: o projeto que contém a imagem do sistema operacional compatível.

  • IMAGE_FAMILY_NAME: a família da imagem do sistema operacional compatível com a VM confidencial. Quando você não especifica --image, a versão mais recente da imagem é selecionada.

  • MAINTENANCE_POLICY: para tipos de máquina N2D que usam SEV, defina como MIGRATE para oferecer suporte à migração em tempo real. Para todos os outros tipos de máquina, defina esse valor como TERMINATE, porque eles não oferecem suporte à migração em tempo real.

Exemplo

Execute um dos comandos abaixo para criar uma instância n2d-standard-2 chamada my-instance na zona us-central1-a, no projeto my-project, usando o AMD SEV-SNP:

curl (Linux, macOS ou 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

Resposta

Uma resposta a uma solicitação de criação é semelhante a este exemplo:

{
  "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"
}

Para verificar o progresso da criação da VM, faça uma solicitação GET para o selfLink:

GET https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/operations/OPERATION_ID

Ativar uma largura de banda de rede maior para tipos de máquina C2D

Os três maiores formatos de VM do Compute Engine C2D (32, 56 e 112) são compatíveis com redes de alta largura de banda. Quando você seleciona uma configuração de largura de banda de rede Nível 1, a largura de banda de transferência de dados aumenta do padrão 32 Gbps para 50 ou 100 Gbps. Para alcançar as maiores velocidades de largura de banda do Nível 1, a instância precisa executar o driver de rede virtual gVNIC. Saiba mais sobre como configurar uma VM com maior largura de banda.

A seguir

Saiba como usar o Cloud Monitoring para validar suas instâncias de VM confidenciais.