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:
|
Knotenpoolebene |
|
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:
Confidential GKE Nodes ist in Zonen und Regionen verfügbar, in denen N2D-Instanzen oder C2D-Instanzen verfügbar sind.
Confidential GKE Nodes können mit Container-Optimized OS und Container-Optimized OS mit containerd (
cos_containerd
) verwendet werden.
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
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf add_box Erstellen.
Klicken Sie unter Standard auf Konfigurieren.
Klicken Sie im Navigationsbereich unter Cluster auf Sicherheit.
Klicken Sie auf das Kästchen Confidential GKE Nodes aktivieren.
Konfigurieren Sie den Cluster nach Bedarf.
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
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf den Namen des Clusters, den Sie prüfen möchten.
Ü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:
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
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örtREGION
: die Region, in der sich das Laufwerk befindetKEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthältHSM_KEY_NAME
: der Name des HSM-Schlüssels, mit dem das Laufwerk verschlüsselt wird
StorageClass erstellen:
kubectl create -f hdb-example-class.yaml
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:
- Für Confidential GKE Nodes gelten alle Einschränkungen von Confidential VM-Instanzen von Compute Engine.
- Confidential GKE Nodes mit dem C2D-Maschinentyp können die automatische Knotenbereitstellung nur in GKE-Version 1.24 oder höher verwenden.
- Confidential GKE Nodes unterstützt nur PersistentVolumes, die von nichtflüchtigen Speichern unterstützt werden, wenn Ihre Steuerungsebene GKE-Version 1.22 oder höher ausführt. Eine Anleitung finden Sie unter CSI-Treiber für Compute Engine Persistent Disk verwenden .
- Confidential GKE Nodes ist nicht mit GPUs kompatibel.
- Confidential GKE Nodes ist nicht mit Knoten für einzelne Mandanten kompatibel.
- Confidential GKE Nodes unterstützt nur die Verwendung von flüchtigem Speicher auf lokalen SSDs, jedoch nicht die Verwendung lokaler SSDs im Allgemeinen.
- Nur Container-Optimized OS-Knoten werden unterstützt. Ubuntu- und Windows-Knoten werden nicht unterstützt.
- Autopilot-Cluster unterstützen Confidential GKE Nodes nicht.
- Weitere Informationen zum vertraulichen Modus für Hyperdisk Balanced finden Sie im Abschnitt 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
- Weitere Informationen zu Confidential VM
- Mehr über Knoten-Images erfahren
- Mehr über die Verschlüsselung inaktiver Daten in Google Cloud erfahren
- Mehr über die Google Cloud-Verschlüsselung bei der Übertragung erfahren
- Mehr über vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) erfahren
- Mehr über die Verschlüsselung von Secrets auf Anwendungsebene erfahren