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, configure seu 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:
  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).
  10. Criar uma instância

    Console

    Para criar uma VM confidencial do AMD SEV com o console Google Cloud , conclua as etapas a seguir.

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

      Acessar instâncias de VM

    2. Clique em Criar instância.

    3. No painel Configuração da máquina, faça o seguinte:

      1. Selecione uma região e zona compatíveis.

      2. Selecione uma das seguintes famílias de máquinas:

        • Uso geral

        • Otimizado para computação

      3. Selecione um tipo de máquina compatível para a tecnologia de computação confidencial que você quer usar.

    4. No menu de navegação, clique em Segurança.

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

    6. 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 podem incluir os seguintes campos, se tiverem sido definidos como valores incompatíveis.

    7. Clique em Ativar e em Criar.

    Depois de clicar em Criar, a página Instâncias de VM será aberta. Nessa página, é possível visualizar o status e os detalhes da nova instância. Quando um ícone ícone de marca de seleção verde disponível 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 usada. 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áquinas, CPUs e zonas.

    • CPU_PLATFORM: escolha um dos seguintes valores:

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

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

      • Para Intel TDX: remova essa flag.

    • MAINTENANCE_POLICY: para tipos de máquina N2D que usam SEV, defina como MIGRATE para oferecer suporte à migração dinâmica. Para todos os outros tipos de máquina, defina esse valor como TERMINATE, já que eles não são compatíveis com a 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 VMs confidenciais. 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 a seguir para criar uma instância n2d-standard-2 chamada my-instance na zona us-central1-a usando o SEV-SNP da AMD:

    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 ao exemplo a seguir:

    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 apropriado.

    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: 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 usada. 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áquinas, CPUs e zonas.

    • CPU_PLATFORM: escolha um dos seguintes valores:

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

      • 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 VMs confidenciais. 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 dinâmica. Para todos os outros tipos de máquina, defina esse valor como TERMINATE, já que eles não são compatíveis com a migração em tempo real.

    Exemplo

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

    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 ao exemplo a seguir:

    {
      "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": "[email protected]",
      "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áquinas específicos

    Tipos de máquinas maiores são compatíveis com redes de alta largura de banda. Quando você seleciona uma configuração de largura de banda de rede Tier_1, a largura de banda de saída de dados aumenta do padrão de 32 Gbps para 50 a 200 Gbps, dependendo do tipo de máquina. Para alcançar as maiores velocidades de largura de banda Tier_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 VMs confidenciais.