Informationen zum Scannen des Kubernetes-Sicherheitsstatus


Auf dieser Seite wird das Scannen des Kubernetes-Sicherheitsstatus beschrieben. Dies ist eine Funktion des Sicherheitsstatus-Dashboards, das häufige Probleme der Sicherheitskonfiguration, ausführbare Sicherheitsbulletins erkennt, und in Ihren Kubernetes-Arbeitslasten und aktiven Bedrohungen in Ihren GKE Enterprise-Clustern.

Informationen zum Aktivieren und Verwenden der Funktionen zum Scannen des Kubernetes-Sicherheitsstatus finden Sie in den folgenden Ressourcen:

Das Scannen des Sicherheitsstatus von Kubernetes bietet die folgenden Funktionen:

Preise

  • Standardstufe: Wird in GKE ohne zusätzliche Kosten angeboten.
  • Erweiterte Stufe: In GKE Enterprise enthalten.

Für Cloud Logging hinzugefügte Einträge unterliegen den Cloud Logging-Preisen.

Überprüfung der Arbeitslastkonfiguration

Die in GKE bereitgestellten Arbeitslasten sollten eine gehärtete Konfiguration haben, die die Angriffsfläche begrenzt. Das clusterübergreifende Prüfen von Arbeitslasten auf Konfigurationsprobleme ist manuell im großen Maßstab schwierig durchzuführen. Mit dem Sicherheitsstatus-Dashboard können Sie die Konfiguration all Ihrer laufenden Arbeitslasten in mehreren Clustern automatisch prüfen und umsetzbare, bewertete Ergebnisse und Empfehlungen zur Verbesserung Ihrer Sicherheitslage zurückgeben.

Bei der Überprüfung der Arbeitslastkonfiguration wird jede bereitgestellte Arbeitslast anhand einer Teilmenge von Richtlinien in den Pod-Sicherheitsstandards geprüft. Die Überprüfung der Arbeitslastkonfiguration erfolgt in der Infrastruktur von Google und verwendet keine Rechenressourcen auf Ihren Knoten.

Vorteile der Überprüfung der Arbeitslastkonfiguration

  • Automatisieren der Erkennung von bekannten Konfigurationsproblemen bei allen Arbeitslasten.
  • Erhalt umsetzbarer Empfehlungen zur Verbesserung des Sicherheitsstatus.
  • Verwendung der Google Cloud Console, um eine allgemeine Ansicht der Konfigurationsprobleme zu erhalten.
  • Verwenden Sie Logging, um eine überprüfbare Datenspur für eine bessere Berichterstattung und Beobachtbarkeit zu erhalten.

Funktionsweise der Überprüfung der Arbeitslastkonfiguration

Für jede geeignete bereitgestellte Arbeitslast scannt GKE kontinuierlich die Spezifikation der Arbeitslast und vergleicht die Felder und Werte mit den in den Sicherheitsrichtlinien definierten Einstellungen. Beispiel: Ein Pod mit spec.containers.securityContext.privileged=true verstößt gegen den Baseline-Pod-Sicherheitsstandard und ein Pod mit dem Feld spec.securityContext.runAsNonRoot, das auf false gesetzt ist, verstößt gegen den eingeschränkten Standard. Eine Liste der Sicherheitsrichtlinien, die GKE prüft, finden Sie unter Was wird bei der Überprüfung der Arbeitslastkonfiguration geprüft?.

Nach dem Scannen und Erkennen von Problemen stuft GKE den Schweregrad der erkannten Konfigurationsprobleme auf der Grundlage der integrierten Sicherheitsmaßnahmen ein. GKE weist eine Schweregradbewertung zu, die die Geschwindigkeit angibt, mit der Sie auf das Problem reagieren. Die Google Cloud Console zeigt die Ergebnisse und empfohlenen Maßnahmen an, um die Probleme zu beheben. GKE fügt auch Einträge für Tracing und Audits zu Cloud Logging hinzu.

Was wird bei der Überprüfung der Arbeitslastkonfiguration geprüft?

Bedenken Felder Zulässige Werte Schweregrad

Host-Namespaces

Pods, die Host-Namespaces nutzen, ermöglichen die Kommunikation von Pod-Prozessen mit Hostprozessen und erfassen Hostinformationen, die zu einem Container-Escape führen können.

  • spec.hostNetwork
  • spec.hostIPC
  • spec.hostPID
  • Nicht definiert oder null
  • false
Hoch

Privilegierte Container

Privilegierte Container lassen nahezu uneingeschränkten Hostzugriff zu. Sie teilen Namespaces mit dem Host und haben keine Kontrollgruppe, kein seccomp, kein AppArmor und keine Funktionseinschränkungen.

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged
  • Nicht definiert oder null
  • false
Hoch

Hostport-Zugriff

Wenn ein Hostport für einen Container zugänglich gemacht wird, kann der Container Netzwerk-Traffic an einen Hostdienst, der diesen Port verwendet, abfangen oder die Regeln zur Netzwerkzugriffssteuerung wie die einer NetworkPolicy umgehen.

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • Nicht definiert oder null
  • 0
Hoch

Nicht standardmäßige Funktionen

Einem Container sind Funktionen zugewiesen, die ein Container-Escape zulassen könnten.

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add
  • Nicht definiert oder null
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
Mittel

Hostpfad-Volumes bereitstellen

hostPath-Volumes stellen Dateien oder Verzeichnisse vom Host bereit. Diese Volumes stellen Sicherheitsrisiken dar, die zu einem Container-Escape führen könnten.

spec.volumes[*].hostPath Nicht definiert oder null Mittel

Nicht standardmäßige /proc-Maske

Der Standardbereitstellungstyp /proc maskiert bestimmte Pfade in /proc, um zu verhindern, dass Pfade zugänglich gemacht werden, die zu einem Informationsleck oder Container-Escape führen könnten. Die Verwendung eines nicht standardmäßigen Typs erhöht diese Risiken.

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount
  • Nicht definiert oder null
  • Standard
Mittel

Unsichere sysctls-Maske

Ein Pod kann so konfiguriert werden, dass die Änderung unsicherer Kernelparameter über das virtuelle Dateisystem /proc/sys zugelassen wird. Unsichere Parameter unterstützen das Vergeben von Namespaces nicht, isolieren ihre Wirkung nicht richtig zwischen Pods, könnten den Zustand des Knotens beeinträchtigen oder lassen möglicherweise zu, dass der Pod seine Ressourcenlimits überschreitet.

spec.securityContext.sysctls[*].name
  • Nicht definiert oder null
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range
Mittel

Als Nicht-Root ausführen

Sie können einem Container explizit die Ausführung als Root-Nutzer erlauben, wenn die Anweisung runAsUser oder USER im Image den Root-Nutzer angibt. Das Fehlen präventiver Sicherheitseinstellungen bei der Ausführung als Root-Nutzer erhöht das Risiko eines Container-Escapes.

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot
true Mittel

Rechteausweitung

Ein Container kann explizit konfiguriert werden, um die Rechteausweitung bei der Ausführung zu ermöglichen. Dadurch kann ein Prozess, der im Container mit einer ausführbaren Datei vom Typ „set-user-id“, „set-group-id“ oder „file capability“ erstellt wurde, die von der ausführbaren Datei angegebenen Berechtigungen erlangen. Das Fehlen präventiver Sicherheitseinstellungen erhöht das Risiko eines Container-Escapes.

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
false Mittel

Uneingeschränktes AppArmor-Profil

Ein Container kann explizit so konfiguriert werden, dass er von AppArmor nicht eingeschränkt wird. Dies sorgt dafür, dass kein AppArmor-Profil auf den Container angewendet und dieser somit nicht durch ein solches eingeschränkt wird. Die deaktivierten präventiven Sicherheitseinstellungen erhöhen das Risiko eines Container-Escapes.

metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"] false Niedrig

Einblenden von Sicherheitsbulletins

Wenn in GKE eine Sicherheitslücke entdeckt wird, patchen wir diese und veröffentlichen ein Sicherheitsbulletin für diese Sicherheitslücke. Informationen zu Identifikation, Patching und Zeitachsen finden Sie unter GKE-Sicherheitspatches.

Im Sicherheitsstatus-Dashboard werden Sicherheitsbulletins angezeigt, die sich auf Ihre Cluster, Arbeitslasten und Knotenpools im Standardmodus auswirken. Dieses Feature ist Teil der Funktion Kubernetes-Sicherheitsstatus des Sicherheitsstatus-Dashboards und wird automatisch aktiviert, wenn Sie einen Autopilot- oder Standardcluster erstellen. Folgen Sie der Anleitung in Arbeitslasten automatisch auf Konfigurationsprobleme überprüfen, um die Überprüfung des Kubernetes-Sicherheitsstatus zu aktivieren.

Die Google Cloud Console zeigt Details wie betroffene Cluster, Versionen und empfohlene Patchversionen für Upgrades an, um das Problem zu beheben. Sie sehen nur Bulletins, für die in der Google Cloud-Region oder -Zone Ihres Clusters Möglichkeiten zur Behebung des Problems bestehen.

Rufen Sie das Sicherheitsstatus-Dashboard auf, um Bulletins für Cluster anzuzeigen, die Sie für das Scannen des Kubernetes-Sicherheitsstatus registriert haben:

Zum Sicherheitsstatus

Alle verfügbaren Bulletins, die sich auf Ihre Umgebung auswirken, werden im Abschnitt Sicherheitsbulletins angezeigt.

Informationen zur GKE-Bedrohungserkennung

Die GKE Bedrohungserkennung scannt die Audit-Logs Ihrer registrierten Cluster auf aktive Bedrohungen und bietet empfohlene Maßnahmen zur Risikominderung. Die GKE-Bedrohungserkennung wird vom Security Command Center Event Threat Detection-Dienst unterstützt. Weitere Informationen finden Sie in der GKE Enterprise-Dokumentation unter Informationen zur GKE-Bedrohungserkennung.

Nächste Schritte