Anthos-Sicherheits-Blueprint: Richtlinien durchsetzen

In diesem Dokument wird beschrieben, wie Sie Sicherheitsrichtlinien für Anthos-Cluster durchsetzen. Es enthält eine Übersicht darüber, wie und warum Sie Richtlinien durchsetzen müssen, und beschreibt die Google Cloud-Kontrollen, die Sie für diese Aufgabe verwenden.

Das Dokument ist Teil einer Reihe von Sicherheits-Blueprints, die eine präskriptive Anleitung für die Arbeit mit Anthos bieten.

Einführung

Sie wenden Richtlinien auf Ihre Cluster an, um sicherzustellen, dass Ihre Sicherheitsmaßnahmen und Compliance-Anforderungen erfüllt werden. Nachdem Sie Richtlinien angewendet haben, müssen Sie sicherstellen, dass sie durchgesetzt werden und dass die Einstellungen in Ihren Anthos-Clustern den von Ihnen angegebenen Richtlinienkonfigurationen entsprechen.

Das Durchsetzen der Richtlinien ergänzt die Clusterprüfung. Auditing verschafft Ihnen zwar Informationen zum bisherigen und aktuellen Status Ihres Clusters, verhindert jedoch keine Maßnahmen, die Ihre Richtlinien umgehen würden. Im Gegensatz dazu ist die Durchsetzung von Richtlinien eine vorbeugende Maßnahme. Sie sollten Richtlinien auf Cluster- und Namespace-Ebene anwenden, um Ihre Anforderungen zu erfüllen.

Überlegen Sie sich, wie Sie die folgenden Anforderungen durchsetzen können:

  • Ressourcenverbrauch begrenzen
  • Netzwerk-Traffic innerhalb des Clusters einschränken
  • Funktionen, mit denen ein Pod ausgeführt werden kann, einschränken
  • Benutzerdefinierte Richtlinien definieren, z. B. erforderliche Labels durchsetzen

Informationen zu den nötigen Sicherheitseinstellungen

In diesem Abschnitt werden die Steuerelemente erläutert, die erforderlich sind, damit Sie die Richtlinien durchsetzen können, mit denen Sie Ihre Sicherheits- und Compliance-Anforderungen erfüllen.

Namespaces

Ressourcen, die denselben Richtlinien folgen sollen, mit Labels versehen

Mit Namespaces können Sie einen Bereich für zusammengehörige Ressourcen innerhalb eines Clusters angeben, z. B. Pods, Dienste und Replikations-Controller. Durch die Verwendung von Namespaces können Sie die Verwaltungsverantwortung für die zugehörigen Ressourcen als Einheit delegieren. Daher sind Namespaces ein wichtiger Bestandteil der meisten Sicherheitsmuster.

Namespaces sind ein wichtiges Feature zur Isolierung von Steuerungsebenen. Sie bieten jedoch keine Isolation von Knoten, Datenebenen oder Netzwerken.

Ein gängiger Ansatz besteht darin, Namespaces für einzelne Anwendungen zu erstellen. Sie können beispielsweise den Namespace myapp-frontend für die UI-Komponente einer Anwendung erstellen.

Ressourcenkontingente

Ressourcenverbrauch steuern

GKE unterstützt mehrere Anwendungen, die im selben Cluster ausgeführt werden und von mehreren Teams verwaltet werden. Wenn kein einzelnes Team für die Verwaltung der Ressourcennutzung in einem Cluster zuständig ist, verbrauchen Anwendungen, die im Cluster ausgeführt werden, möglicherweise zu viele Ressourcen. Um dies zu verhindern, muss ein Administrator Ressourcenkontingente konfigurieren, um den aggregierten Ressourcenverbrauch für die in einem Namespace definierten Ressourcen zu begrenzen.

Anthos Config Management

Konfigurationen auf Anthos-Cluster anwenden

Eine Best Practice bei der Verwaltung von Anthos-Clustern ist die Verwendung von Anthos Config Management. Dadurch werden Ihre angemeldeten Cluster mit Konfigurationen synchron gehalten. Eine Konfiguration ist eine YAML- oder JSON-Datei, die in Ihrem Repository gespeichert ist und dieselben Konfigurationsdetails enthält, die Sie manuell mit dem Befehl kubectl apply auf einen Cluster anwenden können. Mit Anthos Config Management können Sie Ihre Richtlinien und Infrastrukturbereitstellungen wie Ihre Anwendungen verwalten, nämlich indem Sie Richtlinien als Code verfügbar machen.

Sie verwenden Anthos Config Management in Verbindung mit einem Git-Repository, das als Single Source of Truth für Ihre deklarierten Richtlinien dient. Anthos Config Management kann Richtlinien für die Zugriffssteuerung wie RBAC, Ressourcenkontingente, Namespaces und Infrastrukturbereitstellungen auf Plattformebene verwalten. Anthos Config Management ist deklarativ. Es prüft kontinuierlich den Clusterstatus und verleiht den in der Konfiguration angegebenen Status, um Richtlinien durchzusetzen.

Netzwerkrichtlinien

Netzwerk-Trafficfluss in Clustern durchsetzen

Netzwerkrichtlinien können Layer 4-Netzwerk-Traffic mit Firewallregeln auf Pod-Ebene durchsetzen. Netzwerkrichtlinien sind auf einen Namespace beschränkt.

Selbst wenn eine Netzwerkrichtlinie für diesen Namespace aktiviert ist, ist der Zugriff auf Pods in einem Cluster standardmäßig uneingeschränkt. Wenn mindestens ein NetworkPolicy-Objekt einen Pod auswählt, wird die Durchsetzung angewendet.

Als Best Practice wird ein Ansatz mit der geringsten Berechtigung empfohlen. Wenn Sie Netzwerkrichtlinien implementieren, wird empfohlen, eine standardmäßige Deny-All-Regel im Namespace zu erstellen, die mit allen Pods übereinstimmt. Dadurch blockiert der Namespace den Zugriff und fungiert somit als nicht ordnungsgemäß geschlossen-System. Um Netzwerk-Trafficflüsse zuzulassen, müssen Sie dann für jeden Namespace explizit Netzwerkrichtlinien einrichten.

Das folgende Diagramm zeigt, wie Sie durch das Konfigurieren von Netzwerkrichtlinien für jeden Namespace Richtlinien implementieren können, die den Trafficfluss zwischen den Namespaces verwalten.

Trafficfluss zwischen den Namespaces mithilfe von Netzwerkrichtlinien verwalten

In diesem Beispiel darf der Traffic bidirektional zwischen den Namespace-Transaktionen und der Namespace-Shopfront fließen. Der Traffic darf jedoch nur von der Namespace-Shopfront zur Logging-Anwendung fließen.

Eine Beispielkonfiguration für NetworkPolicy, die mit Anthos Config Management angewendet werden kann, finden Sie im Abschnitt "NetworkPolicy-Konfiguration" unter Kubernetes-Objekte konfigurieren.

Anthos Policy Controller

Einhaltung von Richtlinien durchsetzen

Anthos Policy Controller ist eine dynamische Zugangssteuerung für Kubernetes, der CustomResourceDefinition-basierte (CRD-basierte) Richtlinien durchsetzt, die von Open Policy Agent (OPA) ausgeführt werden.

Zugangssteuerungen sind Kubernetes-Plug-ins, die Anfragen an den Kubernetes API-Server abfangen, bevor ein Objekt beibehalten wird, aber nachdem die Anfrage authentifiziert und autorisiert wurde. Sie können die Verwendung von Clustern mithilfe von Zugangssteuerungen einschränken.

Zur Verwendung von Policy Controller legen Sie eine Reihe von Einschränkungen in einer Einschränkungsvorlage fest. Wenn die Einschränkungsvorlage im Cluster bereitgestellt wurde, können Sie einzelne Einschränkungs-CRDs erstellen, die durch die Einschränkungsvorlage definiert werden.

Das folgende Diagramm zeigt, wie Policy Controller das OPA Constraint Framework zum Definieren und Durchsetzen von Richtlinien verwendet.

Das OPA Constraint Framework empfängt Anfragen und setzt Richtlinien für den Zugriff auf andere Ressourcen durch.

Das Diagramm zeigt Folgendes:

  1. Einschränkungen werden anhand von Einschränkungsvorlagen erstellt.
  2. Richtlinien werden im Cluster durch das Anwenden von Einschränkungen aktiviert.
  3. Eine Anfrage geht ein und eine Zugangsprüfung wird ausgelöst, die darüber entscheidet, ob der Zugriff zugelassen oder abgelehnt wird.
  4. Eine kontinuierliche Prüfung bewertet alle aktiven Objekte im Cluster anhand von Richtlinien.

Mit Policy Controller können Sie benutzerdefinierte Richtlinien durchsetzen, z. B. für Labels. Policy Controller ermöglicht die Anwendung der meisten Einschränkungen, die Sie mit PodSecurityPolicies anwenden können. Allerdings wird damit der operative Aufwand aus folgenden Gründen reduziert:

  • Policy Controller bietet eine Bibliothek mit Standardvorlagen, die Einschränkungsvorlagen enthält. Das bedeutet, dass Sie für gängige Fälle keine eigenen Richtlinien schreiben müssen wie bei PodSecurityPolicies.
  • Sie müssen keine RoleBindings verwalten wie bei Verwendung von PodSecurityPolicies.
  • Policy Controller unterstützt den Probelaufmodus, sodass Sie die Auswirkungen einer Einschränkung prüfen können, bevor Sie sie anwenden.
  • Sie können Richtlinien auf Namespaces beschränken und haben so die Möglichkeit, restriktivere Richtlinien langsamer einzuführen. Dies ist mit einer Canary-Release-Strategie vergleichbar, bei der Sie die Gefährdung durch die Einführung von Richtlinien, die unvorhergesehene Auswirkungen haben könnten, verwalten. Bei der Einführung könnte beispielsweise festgestellt werden, dass von einem Pod aus eingeschränkten Zugriff auf ein Volume haben, obwohl der Pod Zugriff auf das Volume haben sollte.
  • Policy Controller bietet eine einzelne Methode zum Anwenden von Richtlinien, unabhängig davon, ob es sich um benutzerdefinierte Einschränkungen oder PodSecurityPolicies-Einschränkungen handelt, die im Gatekeeper-Repository definiert sind.

Weitere Informationen zum Durchsetzen von definierten Richtlinien mithilfe von Policy Controller finden Sie unter Policy Controller von Anthos Config Management.

Anthos Service Mesh

Sichere Kommunikation zwischen Diensten verwalten

Mit Anthos Service Mesh können Sie ein Istio-basiertes Service Mesh überwachen und verwalten. Ein Service Mesh ist eine Infrastrukturebene, die eine verwaltete, sichtbare und sichere Kommunikation zwischen Ihren Diensten ermöglicht.

So vereinfacht Anthos Service Mesh die Verwaltung sicherer Kommunikation zwischen Diensten:

  • Verwalten der Authentifizierung und Verschlüsselung des Traffics (unterstützte Protokolle im Cluster mithilfe von gegenseitiger Transportschichtkommunikation (mTLS)). Anthos Service Mesh verwaltet die Bereitstellung und Rotation von mTLS-Schlüsseln und Zertifikaten für Anthos-Arbeitslasten, ohne die Kommunikation zu unterbrechen. Die regelmäßige Rotation von mTLS-Schlüsseln ist eine bewährte Sicherheitsmethode zum Reduzieren des Risikos bei einem Angriff.
  • Hiermit können Sie Netzwerksicherheitsrichtlinien konfigurieren, die auf der Dienstidentität basieren und nicht auf der IP-Adresse des Peers. Anthos Service Mesh wird verwendet, um Richtlinien für die identitätsbewusste Zugriffssteuerung (Firewall) zu konfigurieren, mit denen Sie Richtlinien erstellen können, die vom Netzwerkstandort der Arbeitslast unabhängig sind. Dies vereinfacht die Einrichtung der Dienst-zu-Dienst-Kommunikation.
  • Hiermit können Sie Richtlinien konfigurieren, die den Zugriff von bestimmten Clients gewähren.
  • Nutzerauthentifizierung mithilfe von Identity-Aware Proxy oder einer benutzerdefinierten Richtlinien-Engine verwalten So können Sie den Zugriff auf die Anwendungen steuern, die Sie in Anthos GKE-Clustern bereitgestellt haben, indem Sie die Nutzeridentität und den Kontext der Anfrage prüfen und festlegen können, ob ein Nutzer Zugriff erhalten soll.

Anthos Service Mesh verwaltet nicht nur die sichere Kommunikation zwischen Diensten, sondern protokolliert nur erfolgreiche Zugriffe für jedes konfigurierbare Zeitfenster und reduziert so falsch positive Zugriffsprotokolle. Anfragen, die von einer Sicherheitsrichtlinie abgelehnt werden oder zu einem Fehler führen, werden immer protokolliert. Zugriffsprotokolle und -messwerte sind in der Operations Suite von Google Cloud verfügbar.

Weitere Informationen zu den Sicherheitsfunktionen von Anthos Service Mesh finden Sie unter Anthos Service Mesh Sicherheit – Übersicht.

Zusammenfassung

Die zuvor beschriebenen Steuerelemente gelten sowohl für Anthos GKE als auch für Anthos GKE On-Prem.

Um die Steuerelemente zu integrieren, legen Sie den Bereich der in diesem Leitfaden beschriebenen Steuerelemente und die Phase, in der sie konfiguriert werden müssen, so fest:

  1. Erstellen Sie Ihre Cluster anhand der Anleitung im entsprechenden Leitfaden zum Härten von Clustern (GKE oder Anthos GKE On-Prem). Folgen Sie beim Erstellen des Clusters dem Härtungsleitfaden und verwenden Sie das Flag --enable-network-policy. Netzwerkrichtlinien sind erforderlich. Mit diesem Schritt können Sie später Firewallregeln einbinden, die den Traffic zwischen Pods in einem Cluster einschränken.
  2. Legen Sie die Namespaces und Labels fest, die für die Pods erforderlich sind. Dadurch erhalten Sie einen Namensbereich, der Ihnen die Arbeit mit Richtlinien und Kubernetes-Dienstkonten ermöglicht.
  3. Mit Anthos Config Management Policy Controller installieren.
  4. Wenden Sie Ihre Netzwerkrichtlinie mit Anthos Config Management an.
  5. Erfassen Sie die vordefinierten Einschränkungsvorlagen von Policy Controller, die Sie verwenden möchten, und ordnen Sie sie Ihren Ressourcen zu, indem Sie Einschränkungen festlegen.
  6. Die Einschränkungsvorlage und die Einschränkungen mit Anthos Config Management anwenden.

So können Sie mit Anthos Service Mesh zusätzliche Steuerelemente auf der Anwendungsebene (Ebene 7) anwenden und Richtlinien weiter durchsetzen:

  • Wenn Sie beim Erstellen des Clusters die Durchsetzung der Istio-Richtlinie nicht aktiviert haben, aktivieren Sie sie jetzt.
  • Legen Sie die Richtlinien fest, die Sie auf der Anwendungsebene durchsetzen möchten. Die Richtlinien werden als YAML angegeben.
  • Wenden Sie Ihre Richtlinien mit Anthos Config Management an.