Profilanwendbarkeit: Stufe 2
Verwenden Sie GKE Sandbox, um nicht vertrauenswürdige Workloads als zusätzliche Schutzschicht
in einer mandantenfähigen Umgebung einzuschränken.
GKE Sandbox bietet eine zusätzliche Sicherheitsebene, um zu verhindern, dass nicht
vertrauenswürdiger Code den Host-Kernel auf Ihren Cluster-Knoten beeinflusst.
Wenn Sie GKE Sandbox in einem Node-Pool aktivieren, wird für jedes Pod, das auf einem
Node in diesem Node-Pool läuft, ein Sandbox erstellt. Darüber hinaus wird verhindert,
dass Nodes, die sandboxed Pods ausführen, auf andere GCP-Dienste oder Cluster-Metadaten
zugreifen. Jede Sandbox verwendet ihren eigenen Userspace-Kernel.
Multi-Tenant-Cluster und Cluster, deren Container nicht vertrauenswürdige Workloads
ausführen, sind stärker Sicherheits-Schwachstellen ausgesetzt als andere Cluster.
Beispiele hierfür sind SaaS-Anbieter, Webhosting-Anbieter oder andere Organisationen,
die ihren Nutzern erlauben, Code hochzuladen und auszuführen. Ein Fehler in der Container-Laufzeitumgebung
oder im Host-Kernel könnte es einem Prozess, der innerhalb eines Containers läuft,
ermöglichen, aus dem Container 'auszubrechen' und den Kernel des Knotens zu beeinflussen,
was möglicherweise den Knoten zum Absturz bringen könnte.
Es besteht auch die Möglichkeit, dass ein bösartiger Mieter durch Ausnutzung eines
solchen Defekts Zugriff auf die Daten eines anderen Mieters im Speicher oder auf der
Festplatte erhält und diese exfiltriert.
![]() |
HinweisStandardmäßig ist die GKE Sandbox deaktiviert.
|
Auswirkung
Die Verwendung von GKE Sandbox erfordert, dass das Node-Image auf Container-Optimized
OS mit containerd (cos_containerd) eingestellt ist.
Derzeit ist es nicht möglich, GKE Sandbox zusammen mit den folgenden Kubernetes-Funktionen
zu verwenden:
- Beschleuniger wie GPUs oder TPUs
- Istio
- Überwachungsstatistiken auf Ebene des Pods oder Containers
- Hostpath-Speicher
- PID-Namespace pro Container
- CPU- und Speicherkontingente werden nur für garantierte Pods und Pods mit variabler Leistung angewendet, und nur, wenn CPU- und Speicherkontingente für alle Container im Pod festgelegt sind
- Pods, die PodSecurityPolicies verwenden, die Host-Namensräume wie hostNetwork, hostPID oder hostIPC spezifizieren
- Pods, die PodSecurityPolicy-Einstellungen wie den privilegierten Modus verwenden
- VolumeDevices
- Portweiterleitung
- Linux-Kernel-Sicherheitsmodule wie Seccomp, Apparmor oder Selinux Sysctl, NoNewPrivileges, bidirektionale MountPropagation, FSGroup oder ProcMount
Prüfung
Verwendung der Google Cloud Console:
- Gehen Sie zur Kubernetes Engine-Website.
- Klicken Sie auf jeden Cluster und dann auf alle Node-Pools, die nicht standardmäßig bereitgestellt werden.
- Auf der Seite mit den Knotengruppendetails, unter der Überschrift Sicherheit auf der
Seite mit den Knotengruppendetails, überprüfen Sie, dass
Sandbox with gVisor
auf Aktiviert gesetzt ist.
Der Standardknotenpool kann GKE Sandbox nicht verwenden.
Verwendung der Befehlszeile:
Führen Sie diesen Befehl aus:
gcloud container node-pools describe $NODE_POOL --cluster $CLUSTER_NAME --zone $COMPUTE_ZONE --format json | jq '.config.sandboxConfig'
Die Ausgabe des obigen Befehls gibt Folgendes zurück, wenn der Node-Pool in einer
Sandbox läuft:
{ "sandboxType":"gvisor" }
Wenn keine Sandbox vorhanden ist, wird die obige Befehlsausgabe null sein (
{ }
). Der Standard-Node-Pool kann GKE Sandbox nicht verwenden.Wiederherstellung
Sobald ein Knotenpool erstellt ist, kann GKE Sandbox nicht aktiviert werden, stattdessen
ist ein neuer Knotenpool erforderlich. Der Standardknotenpool (der erste Knotenpool
in Ihrem Cluster, der bei der Erstellung des Clusters erstellt wird) kann GKE Sandbox
nicht verwenden.
Verwendung der Google Cloud Console:
- Gehen Sie zur Kubernetes Engine-Website.
- Wählen Sie einen Cluster aus und klicken Sie auf ADD NODE POOL.
- Konfigurieren Sie den Node-Pool mit den folgenden Einstellungen:
- Für die Node-Version wählen Sie v1.12.6-gke.8 oder höher.
- Für das Knotenbild wählen Sie
Container-Optimized OS with Containerd (cos_containerd) (default)
. - Unter Sicherheit wählen Sie Enable sandbox with gVisor.
- Konfigurieren Sie die gewünschten Einstellungen für andere Node-Pools.
- Klicken Sie auf Speichern.
Verwendung der Befehlszeile:
Um GKE Sandbox in einem bestehenden Cluster zu aktivieren, muss ein neuer Node-Pool
erstellt werden, was mit folgendem Befehl erfolgen kann:
gcloud container node-pools create <node_pool_name> --zone <compute-zone> --cluster <cluster_name> --image-type=cos_containerd --sandbox="type=gvisor"
Zusätzliche Informationen:
Der Standardknotenpool (der erste Knotenpool in Ihrem Cluster, der bei der Erstellung
des Clusters erstellt wird) kann GKE Sandbox nicht verwenden.
Bei der Verwendung von GKE Sandbox muss Ihr Cluster mindestens zwei Node-Pools haben.
Sie müssen immer mindestens einen Node-Pool haben, in dem GKE Sandbox deaktiviert
ist. Dieser Node-Pool muss mindestens einen Knoten enthalten, auch wenn alle Ihre
Workloads sandboxed sind.
Es ist optional, aber empfohlen, dass Sie Stackdriver Logging und Stackdriver Monitoring
aktivieren, indem Sie das Flag
--enable-stackdriver-kubernetes
hinzufügen. gVisor-Nachrichten werden protokolliert.