Confidential VM-Instanz erstellen

Sie können eine Confidential VM-Instanz im Rahmen der Erstellung einer neuen Compute Engine-VM erstellen.

Hinweis

Bevor Sie eine Confidential VM-Instanz erstellen, müssen Sie Ihre Umgebung so einrichten:

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  8. Optional: So verwenden Sie die gcloud CLI-Beispiele in dieser Anleitung:
  9. Optional: Wenn Sie die API-Beispiele in dieser Anleitung verwenden möchten, müssen Sie die Authentifizierung für Ihre Anfragen einrichten. Weitere Informationen zu OAuth 2.0.

Instanz erstellen

Console

Führen Sie die folgenden Schritte aus, um eine Confidential VM-Instanz mit der Google Cloud Console zu erstellen:

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:

    Zur Seite „VM-Instanzen“

  2. Klicken Sie auf Instanz erstellen.

  3. Führen Sie im Bereich Maschinenkonfiguration die folgenden Schritte aus:

    1. Wählen Sie eine unterstützte Region und Zone aus.

    2. Wählen Sie eine der folgenden Maschinenfamilien aus:

      • Für allgemeine Zwecke

      • Computing-optimiert

      • GPUs

    3. Wenn Sie die Familie GPUs ausgewählt haben, wählen Sie den entsprechenden GPU-Typ und die Anzahl der GPUs basierend auf dem unterstützten Maschinentyp aus.

    4. Wählen Sie einen unterstützten Maschinentyp für die Confidential Computing-Technologie aus, die Sie verwenden möchten.

  4. Klicken Sie im Navigationsmenü auf Sicherheit.

  5. Klicken Sie im Abschnitt Confidential VM-Dienst auf Aktivieren.

  6. Wählen Sie im Feld Typ auswählen einen der folgenden Confidential Computing-Technologietypen aus:

    • AMD SEV

    • AMD SEV-SNP

    • Intel TDX

  7. Prüfen Sie im Dialogfeld Confidential Computing aktivieren die Liste der Einstellungen, die beim Aktivieren des Dienstes aktualisiert werden. Wenn die Werte inkompatibel sind, können sie die folgenden Felder enthalten.

  8. Klicken Sie auf Bestätigen und dann auf Erstellen.

Nachdem Sie auf Erstellen geklickt haben, wird die Seite VM-Instanzen geöffnet. Auf dieser Seite können Sie den Status und die Details der neuen Instanz ansehen. Wenn in der Spalte Status für Ihre Confidential VM-Instanz das Symbol Symbol für grünes Häkchen Verfügbar angezeigt wird, ist sie einsatzbereit.

gcloud

Verwenden Sie zum Erstellen einer Confidential VM-Instanz mit der gcloud CLI den Unterbefehl instances create mit dem 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

Geben Sie folgende Werte an:

  • INSTANCE_NAME: Der Name der neuen VM-Instanz.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Der zu verwendende Typ der Confidential Computing-Technologie. Wählen Sie einen der folgenden Werte aus:

    • SEV

    • SEV_SNP

    • TDX

  • MACHINE_TYPE_NAME: Der VM-Maschinentyp, z. B. n2d-standard-2. Die gültigen Maschinentypen für Confidential VM-Instanzen werden durch die von Ihnen ausgewählte Confidential Computing-Technologie bestimmt. Siehe Maschinentypen.

  • CPU_PLATFORM: Wählen Sie einen der folgenden Werte aus:

    • Für AMD SEV: Entweder AMD Milan (C2D- oder N2D-Maschinentypen), AMD Genoa (C3D-Maschinentypen) oder AMD Turin (C4D-Maschinentypen).

    • Für AMD SEV-SNP: AMD Milan (N2D-Maschinentypen).

    • Für Intel TDX: Entfernen Sie dieses Flag.

  • MAINTENANCE_POLICY: Legen Sie für N2D- und C3D-Maschinentypen, die SEV verwenden, diesen Wert auf MIGRATE fest, um die Live-Migration zu unterstützen. Legen Sie diesen Wert für alle anderen Maschinentypen auf TERMINATE fest, da sie keine Live-Migration unterstützen.

  • ZONE_NAME: Die von Confidential VM unterstützte Zone, in der die Instanz erstellt werden soll.

  • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält.

  • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VM unterstützte Betriebssystem-Image. Wenn Sie --image nicht zusätzlich angeben, wird die neueste Image-Version ausgewählt.

  • PROJECT_ID: Optional. Die ID des Projekts, in dem die VM erstellt werden soll.

Beispiel

Führen Sie den folgenden Befehl aus, um eine n2d-standard-2-Instanz mit dem Namen my-instance in der Zone us-central1-a mit AMD SEV-SNP zu erstellen:

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

Antwort

Eine Antwort auf eine Erstellungsanfrage sieht in etwa so aus:

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

Wenn Sie eine Confidential VM-Instanz erstellen möchten, müssen Sie eine POST-Anfrage mit dem entsprechenden Textinhalt senden.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

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

Geben Sie folgende Werte an:

  • PROJECT_ID: Die ID des Projekts, in dem die VM erstellt werden soll.

  • ZONE_NAME: Die von Confidential VM unterstützte Zone, in der die Instanz erstellt werden soll.

  • INSTANCE_NAME: Der Name der neuen VM-Instanz.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Der zu verwendende Typ der Confidential Computing-Technologie. Wählen Sie einen der folgenden Werte aus:

    • SEV

    • SEV_SNP

    • TDX

  • MACHINE_TYPE_NAME: Der VM-Maschinentyp, z. B. n2d-standard-2. Die gültigen Maschinentypen für Confidential VM-Instanzen werden durch die von Ihnen ausgewählte Confidential Computing-Technologie bestimmt. Siehe Maschinentypen.

  • CPU_PLATFORM: Wählen Sie einen der folgenden Werte aus:

    • Für AMD SEV: Entweder AMD Milan (C2D- oder N2D-Maschinentypen), AMD Genoa (C3D-Maschinentypen) oder AMD Turin (C4D-Maschinentypen).

    • Für AMD SEV-SNP: AMD Milan (N2D-Maschinentypen).

    • Für Intel TDX: Entfernen Sie dieses Schlüssel/Wert-Paar.

  • MAINTENANCE_POLICY: Legen Sie für N2D-Maschinentypen, die SEV verwenden, diesen Wert auf MIGRATE fest, um die Live-Migration zu unterstützen. Legen Sie diesen Wert für alle anderen Maschinentypen auf TERMINATE fest, da sie keine Live-Migration unterstützen.

  • IMAGE_PROJECT: Das Projekt, das das unterstützte Betriebssystem-Image enthält.

  • IMAGE_FAMILY_NAME: Die Familie für das von Confidential VM unterstützte Betriebssystem-Image. Wenn Sie --image nicht zusätzlich angeben, wird die neueste Image-Version ausgewählt.

Beispiel

Führen Sie einen der folgenden Befehle aus, um eine n2d-standard-2-Instanz mit dem Namen my-instance in der Zone us-central1-a im Projekt my-project mit AMD SEV-SNP zu erstellen:

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

Antwort

Eine Antwort auf eine Erstellungsanfrage sieht in etwa so aus:

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

Sie können den Fortschritt der VM-Erstellung prüfen, indem Sie eine GET-Anfrage an die selfLink senden:

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

Höhere Netzwerkbandbreite für bestimmte Maschinentypen aktivieren

Größere Maschinentypen unterstützen Netzwerke mit hoher Bandbreite. Wenn Sie eine Tier_1-Netzwerkbandbreitenkonfiguration auswählen, erhöht sich die Bandbreite für die Datenübertragung von den standardmäßigen 32 Gbit/s auf 50 bis 200 Gbit/s, je nach Maschinentyp. Um die höheren Bandbreitengeschwindigkeiten der Stufe 1 zu erreichen, muss die Instanz den virtuellen gVNIC-Netzwerktreiber ausführen. VM mit höherer Bandbreite konfigurieren

Nächste Schritte

Weitere Informationen zur Verwendung von Cloud Monitoring zur Validierung Ihrer Confidential VM-Instanzen.