Aktive Arbeitslastdaten mit Confidential Google Kubernetes Engine-Knoten verschlüsseln


Auf dieser Seite erfahren Sie, wie Sie die Verschlüsselung von aktiven Daten in Ihren Knoten und Arbeitslasten mithilfe von Confidential Google Kubernetes Engine-Knoten erzwingen.

Übersicht

Confidential GKE Nodes basiert auf Compute Engine Confidential VM mit AMD Secure Encryption Virtualization (SEV), das den Speicherinhalt der verwendeten VMs verschlüsselt. Die Verschlüsselung während der Verwendung ist einer der drei Zustände der Ende-zu-Ende-Verschlüsselung.

Wenn Sie Confidential GKE Nodes in einem Cluster oder Knotenpool aktivieren, werden Daten in Arbeitslasten, die auf den vertraulichen Knoten ausgeführt werden, während der Nutzung verschlüsselt. Verwenden Sie Access Transparency, um Einblick in die Steuerungsebene zu erhalten.

Sie können Confidential GKE Nodes aktivieren, wenn Sie einen der folgenden Schritte ausführen:

  • Neuen Cluster erstellen
  • Neuen Knotenpool erstellen
  • Vorhandenen Knotenpool aktualisieren

Sie können einen vorhandenen Cluster nicht aktualisieren, um die Einstellung für Confidential GKE Nodes auf Clusterebene zu ändern.

Die folgende Tabelle zeigt das GKE-Verhalten, das gilt, wenn Sie Confidential GKE Nodes auf Cluster- oder Knotenpoolebene aktivieren:

Einstellung „Confidential GKE Nodes“ Konfiguration Verhalten
Clusterebene Neuen Cluster erstellen Alle Knoten im Cluster in einem beliebigen Knotenpool verwenden Confidential GKE Nodes. Folgendes ist nicht möglich:
  • Confidential GKE Nodes für einen neuen oder vorhandenen Knotenpool im Cluster deaktivieren
  • Confidential GKE Nodes im Cluster deaktivieren
  • Confidential GKE Nodes in vorhandenen Clustern aktivieren
Knotenpoolebene
  • Neuen Knotenpool erstellen
  • Vorhandenen Knotenpool aktualisieren
Sie können Confidential GKE Nodes nur für Knotenpools konfigurieren, wenn dieses Feature auf Clusterebene deaktiviert ist.

Preise

Für die Bereitstellung von Confidential GKE Nodes entstehen keine zusätzlichen Kosten, außer den Kosten für Confidential VM von Compute Engine. Confidential GKE Nodes können jedoch beim Start etwas mehr Logdaten generieren als Standardknoten. Informationen zu Logpreisen finden Sie unter Preise für Google Cloud-Beobachtbarkeit.

Verfügbarkeit

Confidential GKE Nodes ist in folgenden Fällen verfügbar:

Hinweise

Führen Sie die folgenden Schritte durch, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

Confidential GKE Nodes in Clustern aktivieren

Sie können einen neuen Cluster erstellen, bei dem Confidential GKE Nodes aktiviert ist. Verwenden Sie dazu die gcloud CLI oder die Google Cloud Console. Wenn Sie Confidential GKE Nodes auf Clusterebene aktivieren, sind alle Knoten im Cluster Confidential VM.

gcloud

Geben Sie beim Erstellen eines neuen Clusters die Option --enable-confidential-nodes in der gcloud CLI an:

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Ersetzen Sie Folgendes:

  • CLUSTER_NAME: Der Name des neuen Clusters.
  • MACHINE_TYPE: der Maschinentyp für den Standardknotenpool des Clusters, der ein N2D-Maschinentyp oder C2D-Maschinentyp sein muss

Console

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie auf Erstellen.

  3. Klicken Sie unter Standard auf Konfigurieren.

  4. Klicken Sie im Navigationsbereich unter Cluster auf Sicherheit.

  5. Klicken Sie auf das Kästchen Confidential GKE Nodes aktivieren.

  6. Konfigurieren Sie den Cluster nach Bedarf.

  7. Klicken Sie auf Erstellen.

Weitere Informationen zum Erstellen regionaler Cluster finden Sie unter Cluster erstellen.

Nachdem Sie einen Cluster mit Confidential GKE Nodes erstellt haben, können alle in diesem Cluster erstellten Knotenpools nur Confidential Nodes verwenden. Sie können keine regulären Knotenpools in Clustern erstellen, für die Confidential GKE Nodes aktiviert ist. Sie können Confidential GKE Nodes auch nicht für einzelne Knotenpools deaktivieren, wenn Sie Confidential GKE Nodes auf Clusterebene aktivieren.

Confidential GKE Nodes in Knotenpools aktivieren

Sie können Confidential GKE Nodes in bestimmten Knotenpools aktivieren, wenn Confidential GKE Nodes auf Clusterebene deaktiviert ist.

Neuen Knotenpool erstellen

Führen Sie den folgenden Befehl aus, um einen neuen Knotenpool zu erstellen, in dem Confidential GKE Nodes aktiviert ist:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Ersetzen Sie Folgendes:

  • NODE_POOL_NAME ist der Name des neuen Knotenpools.
  • CLUSTER_NAME: Der Name Ihres Clusters.
  • MACHINE_TYPE: der Maschinentyp für Ihren Knotenpool, der ein N2D-Maschinentyp oder der C2D-Maschinentyp sein muss

Vorhandenen Knotenpool aktualisieren

Sie können Confidential GKE Nodes in vorhandenen Knotenpools aktivieren, die den N2D-Maschinentyp oder den C2D-Maschinentyp verwenden. Führen Sie dazu diesen Befehl aus:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-confidential-nodes

Ersetzen Sie Folgendes:

  • NODE_POOL_NAME: Der Name des Knotenpools.
  • CLUSTER_NAME: Der Name Ihres Clusters.

Aktivierung von Confidential GKE Nodes prüfen

In Clustern

Sie können prüfen, ob Ihr Cluster Confidential GKE Nodes mit der gcloud CLI oder der Google Cloud Console verwendet.

gcloud

Cluster beschreiben:

gcloud container clusters describe CLUSTER_NAME

Wenn Confidential GKE Nodes aktiviert ist, enthält die Ausgabe des Befehls die folgenden Zeilen:

confidentialNodes:
  enabled: true

Console

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie auf den Namen des Clusters, den Sie prüfen möchten.

  3. Überprüfen Sie unter Sicherheit, ob im Feld Confidential GKE Nodes die Option Confidential GKE Nodes aktiviert ist.

In Knotenpools

Führen Sie den folgenden Befehl aus, um zu prüfen, ob Confidential GKE Nodes vom Knotenpool verwendet wird:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

Wenn Confidential GKE Nodes aktiviert ist, sieht die Ausgabe in etwa so aus:

confidentialNodes:
  enabled: true

Auf Knoten

So können Sie die Vertraulichkeit bestimmter Knoten prüfen:

  1. Prüfen, ob AMD SEV aktiviert ist oder
  2. Confidential VM mit Cloud Monitoring validieren

Anwendungen auf Confidential GKE Nodes ausführen

Der Ansatz von Google in Bezug auf Confidential Computing besteht darin, einen problemlosen Lift-and-Shift für vorhandene Anwendungen zu ermöglichen. GKE-Arbeitslasten, die Sie heute ausführen, können auf Confidential GKE Nodes ohne Codeänderungen ausgeführt werden.

Wenn Sie deklarieren möchten, dass Ihre Arbeitslasten nur auf Clustern mit Confidential GKE Nodes ausgeführt werden sollen, können Sie auch den Knotenselektor cloud.google.com/gke-confidential-nodes verwenden. Im folgenden Beispiel einer Pod-Spezifikation wird dieser Selektor verwendet:

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: my-confidential-app
    image: us-docker.pkg.dev/myproject/myrepo/my-confidential-app
  nodeSelector:
    cloud.google.com/gke-confidential-nodes: "true"

Einschränkungen für Organisationsrichtlinien festlegen

Sie können eine Einschränkung für die Organisationsrichtlinie definieren, um sicherzustellen, dass alle in Ihrer Organisation erstellten VM-Ressourcen vertrauliche VM-Instanzen sind. Für GKE können Sie die Einschränkung Non-Confidential Computing einschränken anpassen, um zu verlangen, dass alle neuen Cluster mit aktivierten Confidential GKE Nodes erstellt werden. Fügen Sie den API-Dienstnamen container.googleapis.com der Ablehnungsliste hinzu, wenn Sie Einschränkungen für Organisationsrichtlinien erzwingen. Beispiel:

gcloud resource-manager org-policies deny \
    constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
    --project=PROJECT_ID

Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

PersistentVolume für den Modus „Confidential“ für Hyperdisk Balanced erstellen

Informationen zu zulässigen Werten für den Durchsatz oder IOPS finden Sie unter Leistungsniveau für Ihr Hyperdisk-Volume planen.

Die folgenden Beispiele zeigen, wie Sie für jeden Hyperdisk-Typ einen Confidential Modus für die Hyperdisk Balanced StorageClass erstellen:

Hyperdisk Balanced

  1. Speichern Sie folgendes Manifest in einer Datei mit dem Namen confidential-hdb-example-class.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: balanced-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
      provisioned-throughput-on-create: "250Mi"
      provisioned-iops-on-create: "7000"
      enable-confidential-storage: true
      disk-encryption-kms-key: "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/HSM_KEY_NAME"
    

    Ersetzen Sie Folgendes:

    • KMS_PROJECT_ID: das Projekt, dem der Cloud KMS-Schlüssel gehört
    • REGION: die Region, in der sich das Laufwerk befindet
    • KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält
    • HSM_KEY_NAME: der Name des HSM-Schlüssels, mit dem das Laufwerk verschlüsselt wird
  2. StorageClass erstellen:

    kubectl create -f hdb-example-class.yaml
    
  3. Erstellen Sie eine Hyperdisk-Anforderung für ein nichtflüchtiges Volume für GKE, die den Modus „Vertraulich“ für das Hyperdisk Balanced-Volume verwendet.

Führen Sie den folgenden Befehl aus, um den Namen der in Ihrem Cluster verfügbaren StorageClasses zu ermitteln:

kubectl get sc

Beschränkungen

Confidential GKE Nodes unterliegt den folgenden Einschränkungen:

Einschränkungen der Live-Migration

Bestimmte Compute Engine Confidential VM-Maschinentypen unterstützen Live-Migration, durch die die potenzielle Unterbrechung der Arbeitslast durch ein Hostwartungsereignis minimiert wird. Die Live-Migration erfolgt in den folgenden GKE-Versionen:

  • 1.27.10-gke.1218000 und höher
  • 1.28.6-gke.1393000 und höher
  • 1.29.1-gke.1621000 und höher

Wenn Ihre Knotenpools beim Hinzufügen der Live-Migration bereits eine unterstützte Version ausgeführt haben, aktualisieren Sie die Knotenpools manuell auf dieselbe oder eine andere unterstützte Version. Durch das Upgrade der Knoten werden die Knoten neu erstellt und die Live-Migration wird für die neuen Knoten aktiviert.

Weitere Informationen dazu, welche Compute Engine-Maschinentypen die Live-Migration unterstützen, finden Sie unter Unterstützte Konfigurationen.

Wenn auf einem Knoten, der die Live-Migration nicht unterstützt, ein Hostwartungsereignis auftritt, wechselt der Knoten in den Status NotReady. Wenn Sie Pods ausführen, kommt es zu Unterbrechungen, bis der Knoten wieder bereit ist. Wenn die Wartung mehr als fünf Minuten dauert, versucht GKE möglicherweise, die Pods auf anderen Knoten neu zu erstellen.

Confidential GKE Nodes deaktivieren

Das Deaktivieren von Confidential GKE Nodes funktioniert nur für Knotenpools, für die Confidential GKE Nodes aktiviert ist. Wenn der Cluster mit Confidential GKE Nodes erstellt wird, können Sie das Feature nicht deaktivieren. Führen Sie den folgenden Befehl aus, um Confidential GKE Nodes in einem Knotenpool zu deaktivieren:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-confidential-nodes

Nächste Schritte