Crie uma instância de Confidential VM

Pode criar uma instância de Confidential VM 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, tem de configurar o seu ambiente da seguinte forma:

  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.

    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 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 (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. Opcional: para usar os exemplos da CLI gcloud neste guia:
  9. Opcional: para usar os exemplos de API neste guia, configure a autenticação para os seus pedidos. Saiba mais acerca do OAuth 2.0.
  10. Crie uma instância

    Consola

    Para criar uma instância de VM confidencial com a Google Cloud consola, conclua os seguintes passos:

    1. Na Google Cloud consola, aceda à página Instâncias de VM.

      Aceder às 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 uma zona suportadas.

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

        • Utilização geral

        • Otimizado para computação

        • GPUs

      3. Se selecionou a família GPUs, selecione o tipo de GPU adequado e o número de GPUs com base no tipo de máquina suportado.

      4. Selecione um tipo de máquina suportado para a tecnologia de computação confidencial que quer usar.

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

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

    6. Na caixa Selecione um tipo, selecione um dos seguintes tipos de tecnologia de computação confidencial:

      • AMD SEV

      • AMD SEV-SNP

      • Intel TDX

    7. Na caixa de diálogo Ativar computação confidencial, reveja a lista de definições que são atualizadas quando ativa o serviço. Podem incluir os seguintes campos, se tiverem sido definidos com valores incompatíveis.

    8. Clique em Confirmar e, de seguida, em Criar.

    Depois de clicar em Criar, é aberta a página Instâncias de VMs. Nesta página, pode ver o estado e os detalhes da sua nova instância. Quando é apresentado um ícone Ícone de marca de verificação verde disponível Disponível na coluna Estado da sua instância de VM confidencial, significa que está pronta a ser usada.

    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-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY_NAME \
        --project=PROJECT_ID
    

    Indique os seguintes valores:

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

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

      • SEV

      • SEV_SNP

      • TDX

    • MACHINE_TYPE_NAME: o tipo de máquina virtual, por exemplo, n2d-standard-2. Os tipos de máquinas válidos para instâncias de VMs confidenciais são determinados pela tecnologia de computação confidencial que escolheu. Consulte o artigo Tipos de máquinas, CPUs e zonas.

    • CPU_PLATFORM: escolha um dos seguintes valores:

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

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

      • Para o Intel TDX: remova esta flag.

    • MAINTENANCE_POLICY: para tipos de máquinas N2D que usam SEV, defina esta opção como MIGRATE para suporte de migração em direto. Para todos os outros tipos de máquinas, defina este valor como TERMINATE, uma vez que não suportam a migração em direto.

    • ZONE_NAME: a zona suportada por Confidential VMs na qual criar a instância.

    • IMAGE_PROJECT: O projeto que contém a imagem do sistema operativo suportado.

    • IMAGE_FAMILY_NAME: a família para a imagem do sistema operativo suportada pela VM confidencial. Quando não especifica adicionalmente --image, é selecionada a versão mais recente da imagem.

    • PROJECT_ID: opcional. O ID do projeto no qual criar a VM.

    Exemplo

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

    Resposta

    Uma resposta a um pedido de criação tem um aspeto semelhante ao seguinte 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, tem de enviar um pedido 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
    

    Corpo JSON do pedido:

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

    Indique os seguintes valores:

    • PROJECT_ID: o ID do projeto no qual criar a VM.

    • ZONE_NAME: a zona suportada por Confidential VMs na qual criar a instância.

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

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

      • SEV

      • SEV_SNP

      • TDX

    • MACHINE_TYPE_NAME: o tipo de máquina virtual, por exemplo, n2d-standard-2. Os tipos de máquinas válidos para instâncias de VMs confidenciais são determinados pela tecnologia de computação confidencial que escolheu. Consulte o artigo Tipos de máquinas, CPUs e zonas.

    • CPU_PLATFORM: escolha um dos seguintes valores:

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

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

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

    • MAINTENANCE_POLICY: para tipos de máquinas N2D que usam SEV, defina esta opção como MIGRATE para suporte de migração em direto. Para todos os outros tipos de máquinas, defina este valor como TERMINATE, uma vez que não suportam a migração em direto.

    • IMAGE_PROJECT: O projeto que contém a imagem do sistema operativo suportado.

    • IMAGE_FAMILY_NAME: a família para a imagem do sistema operativo suportada pela VM confidencial. Quando não especifica adicionalmente --image, é selecionada a versão mais recente da imagem.

    Exemplo

    Execute um dos seguintes comandos para criar uma instância n2d-standard-2 denominada my-instance na zona us-central1-a, no projeto my-project, usando 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 '{
                "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

    Resposta

    Uma resposta a um pedido de criação tem um aspeto semelhante ao seguinte 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"
    }
    

    Pode verificar o progresso da criação da VM fazendo um pedido GET para o selfLink:

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

    Ative uma largura de banda de rede mais elevada para tipos de máquinas específicos

    Os tipos de máquinas maiores suportam redes de largura de banda elevada. Quando seleciona uma configuração de largura de banda de rede de nível 1, a largura de banda de transferência de dados aumenta dos 32 Gbps predefinidos para 50 a 200 Gbps, consoante o tipo de máquina. Para alcançar as velocidades de largura de banda de Nível 1 mais elevadas, a sua instância tem de estar a executar o controlador de rede virtual gVNIC. Saiba mais sobre como configurar uma VM com uma largura de banda mais elevada.

    O que se segue?

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