Sicherheitskontrollen und forensische Analysen für GKE-Anwendungen

Last reviewed 2019-08-22 UTC

In diesem Artikel werden die Instrumentierung und Tools für die forensische Analyse für Anwendungen beschrieben, die in Google Kubernetes Engine (GKE) bereitgestellt werden.

Das Erstellen und die Pflege einer sicheren Umgebung für den Code, die Anwendungen sowie die Infrastruktur hat für jede Organisation hohe Priorität. Wenn ein Sicherheitsvorfall auftritt, müssen Sie auch wissen, wie Sie auf ihn reagieren und ihn untersuchen sollten.

Google Cloud vereinfacht den Schutz von GKE-Anwendungen durch erweiterte Sicherheitsfeatures zum Schutz Ihres Clusters und Ihrer Google Cloud-Umgebung. Cloud-Audit-Logs bieten ein detailliertes Logging für die forensische Analyse. Zusammen ermöglichen die erweiterten sicherheitsrelevanten Features und das Logging eine robuste Plattform zum Schutz der GKE-Anwendungen Ihrer Organisation.

Das Ziel dieses Artikels ist, Sie beim Schutz Ihrer Google Cloud-Infrastruktur sowie Ihres containerbasierten Codes in GKE zu unterstützen und Sie auf einen Sicherheitsvorfall vorzubereiten.

Der Schutz Ihrer Umgebung und die Vorbereitung auf forensische Analysen mit Google Cloud erfordern mehrere wichtige Schritte:

  • Google Cloud-Umgebung schützen. Konfigurieren Sie Google Cloud und stellen Sie Arbeitslasten mit den entsprechenden sicherheitsrelevanten Kontrollen und Konfigurationen bereit.
  • Reaktionsplan für Vorfälle vorbereiten. Planen Sie die Reaktion auf einen Sicherheitsvorfall.
  • Alle relevanten Logs und Datenquellen erfassen. Erfassen Sie vorab Logs sowie entsprechende Daten zu Ihrer Google Cloud-Umgebung und lernen Sie, wie Sie darauf zugreifen können.
  • Automatische Ereigniserkennung verwenden. Konfigurieren Sie das proaktive Scannen, damit Sie auf potenzielle Sicherheitsereignisse, Konfigurationsfehler und Sicherheitslücken aufmerksam gemacht werden.
  • Analysetools für forensische Analysen verwenden. Mit Analysetools können Sie einen Sicherheitsvorfall aufdecken und dokumentieren.

Google Cloud-Umgebung schützen

Google Cloud bietet einige Konfigurationen und Tools, mit denen Sie Ihre Google Cloud-Organisation und -Projekte schützen können.

Modell der geteilten Verantwortung

Für die Sicherheit in der Cloud sind der Cloudanbieter und der Kunde gemeinsam verantwortlich. Google Cloud hilft beim Schutz der zugrunde liegenden Infrastruktur durch die standardmäßige Verschlüsselung inaktiver Daten und Funktionen zum Schutz Ihrer Arbeitslasten beispielsweise durch Zugriffssteuerungen in IAM und Cloud-Audit-Logging. In GKE unterstützt Google Cloud den Schutz der Steuerungsebene und die Kunden sind für den Schutz ihrer Arbeitslasten verantwortlich. Eine ausführliche Beschreibung des gemeinsamen Sicherheitsmodells finden Sie im Blogpost Exploring container security: the shared responsibility model in GKE.

GKE-Sicherheit

Kubernetes und GKE bieten mehrere Mechanismen, um Ihren Cluster und dessen Arbeitslasten zu schützen. Wenn Sie eine Umgebung mit den geringstmöglichen Berechtigungen und entsprechenden sicherheitsrelevanten Kontrollen erstellen, wird die Angriffsfläche verkleinert. Mehrere Leitfäden enthalten ausführliche Informationen zum Schutz Ihres Clusters und dessen Arbeitslasten:

Reaktionsplan für Vorfälle vorbereiten

Eine effektive Reaktion auf Vorfälle ist entscheidend für die Verwaltung und Behebung von Vorfällen sowie für die Vermeidung künftiger Vorfälle. Ideen zum Erstellen oder Verbessern Ihres Reaktionsplans für Vorfälle finden Sie unter Google Cloud-Reaktionsplan für Vorfälle.

Diese Phasen bieten einen groben Überblick über den Prozess:

  1. Identifizierung. Die frühzeitige und genaue Erkennung von Vorfällen ist für ein starkes und effektives Vorfallmanagement maßgebend. In dieser Phase liegt der Fokus auf dem Monitoring von Sicherheitsereignissen, um potenzielle Datenvorfälle zu erkennen und zu melden.
  2. Koordination. Wenn ein Vorfall gemeldet wird, prüft und bewertet der Bereitschaftsdienst die Art des Vorfalls, um festzustellen, ob dieser einen potenziellen Datenvorfall darstellt, und leitet den Prozess für die Reaktion auf Vorfälle ein.
  3. Lösung. In dieser Phase liegt der Fokus darauf, die Hauptursache zu untersuchen, die Auswirkungen des Vorfalls zu begrenzen, jegliche unmittelbare Sicherheitsrisiken, falls vorhanden, zu beseitigen, im Rahmen der Behebung notwendige Korrekturen durchzuführen und betroffene Systeme, Daten und Dienste wiederherzustellen.
  4. Kontinuierliche Verbesserungen. Mit jedem neuen Vorfall gewinnen Sie neue Erkenntnisse, mit denen Sie Ihre Tools, Schulungen und Prozesse optimieren können.

Halten Sie sich an den Plan und erkennen Sie, wann Sie die Experten hinzuziehen sollten

Bevor Sie Code für einen Produktionscluster starten, ist es wichtig, das Sicherheitsmodell für Ihre Anwendung und Infrastruktur (einschließlich Google Cloud) zu verstehen sowie einen Plan für die Reaktion auf Vorfälle zu erstellen. Geben Sie in Ihrem Plan einen Eskalationspfad an, der beschreibt, welche Teams in welcher Phase der Antwort eingebunden werden.

Eine Reaktion auf Vorfälle könnte beispielsweise damit beginnen, dass das operative Team einen potenziellen Vorfall einreicht, der später als Sicherheitsvorfall eingestuft wird. Der Vorfall wird dann den entsprechenden Mitgliedern des Sicherheitsteams zugewiesen. Im Plan für die Reaktion auf Vorfälle wird definiert, wann externe Sicherheitsexperten hinzugezogen werden müssen und wie sie einbezogen werden. Die Entwicklung eines solchen Prozesses ist entscheidend für die Vorbereitung einer effektiven Reaktion auf Vorfälle.

Alle relevanten Logs und Datenquellen erfassen

Nachdem Sie die erforderlichen Schutzmechanismen für die Sicherheit Ihrer Kubernetes-Umgebung implementiert und einen Plan für die Reaktion auf Vorfälle erstellt haben, sollten Sie dafür sorgen, dass Sie auf alle für forensische Analysen erforderlichen Informationen zugreifen können. Sie sollten mit der Erfassung von Logs beginnen, sobald Sie eine Anwendung bereitstellen oder ein Google Cloud-Projekt einrichten. Durch das Aufzeichnen der Logs wird gewährleistet, dass sie verfügbar sind, wenn Sie sie zur Analyse benötigen. Grundsätzlich sind einige Datenquellen nur in Google Cloud-Umgebungen verfügbar, andere sind bei Containern generell üblich. Beide Quellen müssen unbedingt aufbewahrt und für die Analyse verfügbar gemacht werden.

Logs bieten ein umfassendes Dataset zur Identifizierung bestimmter Sicherheitsereignisse. Jede der folgenden Logquellen kann Details enthalten, die Sie in Ihrer Analyse verwenden können.

Cloud-Audit-Logs

Google Cloud-Dienste schreiben Audit-Logs, die auch Cloud-Audit-Logs genannt werden. Diese Logs helfen Ihnen bei der Beantwortung der Fragen "Wer hat was, wo und wann getan?" Für jedes Projekt, jeden Ordner und jede Organisation gibt es drei Arten von Audit-Logs: Administratoraktivität, Datenzugriff und Systemereignisse. Diese Logs geben Ihnen gemeinsam Aufschluss darüber, welche administrativen API-Aufrufe vorgenommen wurden, auf welche Daten zugegriffen wurde und welche Systemereignisse aufgetreten sind. Diese Informationen sind für jede Analyse wichtig. Eine Liste der Google Cloud-Dienste, die Audit-Logs bereitstellen, finden Sie unter Google-Dienste mit Audit-Logs.

Cloud-Audit-Logs für GKE macht auch Kubernetes-Audit-Logging verfügbar. Es stellt eine chronologische Aufzeichnung der Aufrufe bereit, die an den Kubernetes API-Server gesendet wurden. Diese Logs werden auch in Cloud-Audit-Logs erfasst.

Anwendungslogs

Cloud Logging erfasst die Standardausgabe und Fehlerlogs des Containers. Mit dem Sidecar-Ansatz können Sie weitere Logs hinzufügen. Bei Clustern mit aktiviertem Istio und Cloud Logging erfasst der Istio stackdriver-Adapter die Istio-spezifischen Logs, erstellt Berichte über sie und sendet sie an Cloud Logging.

Infrastrukturlogs

Infrastrukturlogs bieten Einblicke in die Aktivitäten und Ereignisse auf Betriebssystem-, Cluster- und Netzwerkebene.

GKE-Audit-Logs

GKE sendet zwei Arten von Audit-Logs: GKE-Audit-Logs und Kubernetes-Audit-Logging. Kubernetes schreibt Audit-Logs in Cloud-Audit-Logs über Aufrufe, die an den Kubernetes API-Server gerichtet werden. Kubernetes-Audit-Logeinträge sind nützlich, um verdächtige API-Anfragen zu untersuchen, Statistiken zu erfassen und Monitoring-Benachrichtigungen für unerwünschte API-Aufrufe zu erstellen. Darüber hinaus schreibt GKE eigene Audit-Logs, die identifizieren, was in einem GKE-Cluster geschieht.

Cloud-Audit-Logs von Compute Engine für GKE-Knoten

GKE wird auf Compute Engine-Knoten ausgeführt, die eigene Audit-Logs generieren. Darüber hinaus können Sie Auditd konfigurieren, um Linux-Systemlogs zu erfassen. AuditD bietet wertvolle Informationen wie Fehlermeldungen, Anmeldeversuche und binäre Ausführungen für Ihre Clusterknoten. Sowohl die Audit-Logs von Compute Engine als auch die von Auditd bieten Einblick in Aktivitäten, die auf der zugrunde liegenden Infrastrukturebene von Clustern stattfinden.

Containerlogs

Für Container- und Systemlogs bietet GKE einen knotenspezifischen Logging-Agent, der Containerlogs liest, nützliche Metadaten hinzufügt und die Logs anschließend speichert. Der Logging-Agent sucht in diesen Quellen nach Containerlogs:

  • Standardausgabe- und Standardfehlerlogs aus containerisierten Prozessen
  • Kubelet- und Containerlaufzeitlogs
  • Logs für Systemkomponenten wie VM-Startskripts

Für Ereignisse nutzt GKE ein Deployment im Namespace kube-system, das Ereignisse automatisch erfasst und an Cloud Logging sendet. Logs werden für Cluster, Knoten, Pods und Container erfasst.

Istio in Google Kubernetes Engine

Bei Clustern mit Istio wird der Istio stackdriver-Adapter während der Clustererstellung installiert, der Messwerte, Logging und Trace-Daten von Ihrem Mesh an die Operations-Suite von Google Cloud sendet.

Auditd für Container-Optimized OS in GKE

Bei Linux-Systemen bietet der Auditd-Daemon Zugriff auf Befehle auf Betriebssystemebene und kann wertvolle Einblicke in die Ereignisse in Ihren Containern bieten. In GKE können Sie Audit-Logs erfassen und an Cloud Logging senden.

VPC-Flusslogs

VPC-Flusslogs erfassen eine Stichprobe von Netzwerkflüssen, die von VM-Instanzen gesendet und empfangen werden. Diese Informationen sind nützlich für die Analyse der Netzwerkkommunikation. VPC-Flusslogs enthalten den gesamten Pod-zu-Pod-Traffic über das Intranode Visibility-Feature in Ihrem Kubernetes-Cluster.

Andere Google Cloud-Dienste

Google Cloud-Dienste generieren Cloud-Audit-Logs und einige Dienste wie Cloud Load Balancing erstellen zusätzliche Logs. Nachdem ein Dienst aktiviert wurde, beginnt Cloud Logging mit der Erstellung von Logs. Für Cloud-Audit-Logs sind standardmäßig nur Logs zu Administratoraktivitäten aktiviert. Sie können Audit-Logs für die anderen Dienste aktivieren, wenn diese Dienste aktiviert sind.

Snapshots

Snapshots können nützlich sein, um den Speicherinhalt zu einem bestimmten Zeitpunkt zu analysieren. Sie können Snapshots des Speichers erstellen, der mit einem Google Kubernetes Engine-Clusterknoten verknüpft ist, und diese in regelmäßigen Abständen planen. Da Snapshots auf Clusterknotenebene arbeiten und sich die Clusterknoten im Laufe der Zeit ändern können, sollten Sie den Prozess so automatisieren, dass immer ein Snapshot erzeugt wird, wenn ein Knoten mit neuem Speicher erstellt wird. Mit einem regelmäßigen Snapshot des Knotenspeichers können Sie dafür sorgen, dass Speicherdaten für die Analyse verfügbar sind.

Automatische Ereigniserkennung verwenden

Automatisierung ist zusammen mit Benachrichtigungen,der Schlüssel zum Monitoring jeder Umgebung in großem Maßstab. Sie können sowohl mit Google Cloud- als auch Kubernetes-Tools potenzielle Bedrohungen und Fehlkonfigurationen erkennen.

Security Command Center

Security Command Center ist eine Sicherheits- und Risikoplattform für Google Cloud. Security Command Center erleichtert es Ihnen, Bedrohungen zu verhindern, zu erkennen und auf sie zu reagieren. Dazu werden Daten erfasst, Bedrohungen identifiziert und Maßnahmen empfohlen. Viele in Google Cloud verfügbare Sicherheits-Scantools melden Ergebnisse an das Security Command Center,. Dadurch ist diese Plattform nützlich für die automatische Erkennung. Security Command Center ist ein wichtiges Tool für Ihre SecOps- oder DevSecOps-Teams.

Event Threat Detection (Event Threat Detection)

Event Threat Detection wurde entwickelt, um die schwerwiegendsten Bedrohungen von Organisationen automatisch zu erkennen und die Ergebnisse in Security Command Center zu veröffentlichen. Beispiele solcher Bedrohungen sind das Hinzufügen potenziell schädlicher Nutzer und Dienstkonten, manipulierte Compute Engine-Instanzen und schädlicher Netzwerkverkehr. Event Threat Detection basiert auf den Open-Source- und Closed-Source-Bedrohungsinformationen von Google und erkennt Bedrohungen in Logs, die in Cloud Logging verfügbar sind.

Security Health Analytics

Security Health Analytics ist ein Google Cloud-Dienst, der automatisch nach allgemeinen Sicherheitslücken und Fehlkonfigurationen in allen Google Cloud-Angeboten sucht. Security Health Analytics kann Sicherheitslücken für Container erkennen. Zu den Sicherheitslücken gehören die Deaktivierung von Logging oder Monitoring sowie die Aktivierung des Web-UI-Dashboards der Kubernetes-Verwaltung. Die Ergebnisse werden in Security Command Center geschrieben.

Forseti Security

Forseti ist ein Open-Source-Projekt, das ein Inventar Ihrer Google Cloud-Ressourcen erstellen, die Umgebung scannen und zu erzwingende Richtlinien festlegen kann. Forseti ist in das Security Command Center eingebunden und kann Ergebnisse darin melden. Mit Forseti können Sie beliebige Konfigurationswerte in Ihren GKE-Clustern prüfen, damit sie tatsächlich Ihren Spezifikationen entsprechen. Wenn Sie Anthos verwenden, können Sie mit Anthos Config Management gängige Konfigurationen definieren, diese Konfigurationen erzwingen und Konfigurationsabweichungen überwachen.

Kube-hunter

Kube-hunter sucht mithilfe von Remote-, Netzwerk- und internen Scans nach Sicherheitslücken in Kubernetes-Clustern. Kube-hunter kann entweder im interaktiven Modus oder als automatischer Remote-Penetrationstest für Ihren Cluster verwendet werden.

Analysetools für die forensische Analyse von Containern verwenden

Viele Tools innerhalb der Google Cloud- und Kubernetes-Umgebungen sind nützlich für forensische Analysen. Dieser Abschnitt umfasst drei davon als Referenz.

Google Cloud-Loganalyse mit BigQuery

Cloud-Audit-Logs können zur weiteren Analyse in Cloud Storage, Pub/Sub oder BigQuery exportiert werden. Sie können sich beispielsweise alle Änderungen an den Firewallregeln in Ihren Google Cloud-Projekten in einem bestimmten Zeitraum ansehen. Dazu können Sie Cloud-Audit-Logs nach BigQuery exportieren. Anschließend können Sie mit BigQuery eine SQL-Abfrage erstellen, um diese Informationen zurückzugeben.

Docker-explorer

Docker-explorer ist ein Projekt, das einem Forensik-Analysten dabei hilft, Offline-Docker-Dateisysteme zu untersuchen. Dieser Ansatz kann nützlich sein, wenn ein Docker-Container manipuliert wurde.

Kubectl Sysdig Capture und Sysdig Inspect

Kubectl Sysdig Capture ist ein Open-Source-kubectl-Plug-in, das die Erfassung von Systemaktivitäten in einem Pod auslöst. Sysdig stellt Pod-Informationen für Sysdig Inspect zur Verfügung. Das ist ein Open-Source-Tool für die Fehlerbehebung von Containern und Sicherheitsanalysen. Sysdig Inspect organisiert die detaillierten System-, Netzwerk- und Anwendungsaktivitäten eines Linux-Systems visuell und setzt die Aktivitäten innerhalb eines Pods dazu in Beziehung.

Nächste Schritte