Sicherheit

Auf dieser Seite werden die Sicherheitsfunktionen von GKE on AWS beschrieben, einschließlich der einzelnen Ebenen der Infrastruktur. Außerdem erfahren Sie, wie Sie die Sicherheitsfunktionen entsprechend Ihren Anforderungen konfigurieren können.

Übersicht

GKE on AWS bietet verschiedene Features zum Schutz Ihrer Arbeitslasten, einschließlich des Inhalts Ihres Container-Images, der Containerlaufzeit, des Clusternetzwerks und des Zugriffs auf den Cluster-API-Server.

Schützen Sie Ihre Cluster und Arbeitslasten nach Möglichkeit mit einem mehrschichtigen Ansatz. Sie können den Grundsatz der geringsten Berechtigung auf die Zugriffsebene anwenden, die Sie für Ihre Nutzer und Arbeitslasten bereitstellen. Möglicherweise müssen Sie Kompromisse eingehen, um das richtige Maß an Flexibilität und Sicherheit zu erreichen.

Gemeinsame Verantwortlichkeiten

Wenn Sie GKE on AWS verwenden, sind Sie damit einverstanden, bestimmte Aufgaben für Ihre Cluster zu übernehmen. Weitere Informationen finden Sie unter Gemeinsame Verantwortlichkeiten von GKE-Clustern.

Authentifizierung und Autorisierung

Die Authentifizierung bei einem GKE on AWS-Nutzercluster erfolgt über eine der folgenden Methoden:

Zum Konfigurieren detaillierterer Zugriffsrechte für Kubernetes-Ressourcen auf der Clusterebene oder innerhalb von Kubernetes-Namespaces verwenden Sie die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) von Kubernetes. Mit RBAC lassen sich detaillierte Richtlinien erstellen, um zu definieren, für welche Vorgänge und Ressourcen Sie Nutzern und Dienstkonten Zugriff gewähren möchten. Mit RBAC können Sie den Zugriff für jede bereitgestellte validierte Identität steuern.

Zur weiteren Vereinfachung und Optimierung Ihrer Authentifizierungs- und Autorisierungsstrategie für Kubernetes Engine deaktiviert GKE on AWS die attributbasierte Legacy-Zugriffssteuerung (Attribute Based Access Control, ABAC).

Verschlüsselung

Inaktive Daten in etcd, EBS-Volumes, Kubernetes-Secrets und Komponenten der Steuerungsebene werden von GKE on AWS standardmäßig mit dem AWS Key Management Service (KMS) verschlüsselt.

Zum Verschlüsseln sensibler Daten in Ihren Nutzerclustern können Sie eine der folgenden Möglichkeiten verwenden:

Kubernetes-Secrets

In Secret-Ressourcen von Kubernetes werden vertrauliche Daten wie Passwörter, OAuth-Tokens und SSH-Schlüssel in Ihren Clustern gespeichert. Das Speichern vertraulicher Daten in Secrets ist sicherer als das Speichern in Klartext-ConfigMaps oder in Pod-Spezifikationen. Mithilfe von Secrets können Sie steuern, wie vertrauliche Daten verwendet werden, und das Risiko verringern, dass die Daten nicht autorisierten Nutzern zugänglich gemacht werden.

HashiCorp Vault

GKE on AWS kann Hashicorp Vault verwenden, um Secrets auf Ihren Nutzerclustern zu sichern. Weitere Informationen finden Sie unter HashiCorp Vault mit GKE on AWS verwenden.

Sicherheit der Steuerungsebene

Die Komponenten der Steuerungsebene umfassen den Verwaltungsdienst sowie den Kubernetes API-Server, den Planer, die Controller und die etcd-Datenbank des Nutzerclusters. In GKE on AWS verwalten lokale Administratoren die Komponenten der Steuerungsebene.

In GKE on AWS werden die Komponenten der Steuerungsebene in AWS ausgeführt. Sie können den API-Server von GKE on AWS mithilfe von AWS-Sicherheitsgruppen und Netzwerk-ACLs schützen.

Die gesamte Kommunikation in GKE on AWS erfolgt über TLS-Kanäle (Transport Layer Security), gesteuert von den folgenden Zertifizierungsstellen:

  • Die etcd-Zertifizierungsstelle sichert die Kommunikation vom API-Server zu den etcd-Replikaten sowie den Traffic zwischen etcd-Replikaten. Diese Zertifizierungsstelle ist selbstsigniert.
  • Die Zertifizierungsstelle des Nutzerclusters sichert die Kommunikation zwischen dem API-Server und allen internen Kubernetes API-Clients (Kubelets, Controller, Planer). Diese Zertifizierungsstelle ist mit KMS verschlüsselt.
  • Die Zertifizierungsstelle des Verwaltungsdienstes ist mit KMS verschlüsselt. Sie wird beim Ausführen von anthos-gke init erstellt und in Ihrem Terraform-Arbeitsbereich gespeichert. Wenn Sie terraform apply zum Erstellen des Verwaltungsdienstes verwenden, wird der Schlüssel der Zertifizierungsstelle als AWS EC2-Nutzerdaten übergeben und von AWS KMS beim Start des Clusters entschlüsselt.

Die Verwaltungsebenenschlüssel werden für den Verwaltungsdienst auf der Steuerungsebene [Knoten]{:.external} gespeichert. Für Nutzercluster werden die Schlüssel als Kubernetes-Secrets in der Steuerungsebene des Verwaltungsdienstes gespeichert.

Die Clusterauthentifizierung in GKE on AWS erfolgt über Zertifikate und Dienstkonto-Inhabertoken. Als Administrator authentifizieren Sie sich auf der Steuerungsebene mit dem Administratorzertifikat für den Verwaltungsdienst. Dieses Zertifikat verwenden Sie für die erstmalige Erstellung von Rollenbindungen oder für Notfallzwecke.

Die Zertifikatsrotation wird so durchgeführt:

Knotensicherheit

GKE on AWS stellt Ihre Arbeitslasten in Knotenpools von AWS EC2-Instanzen bereit. In den folgenden Abschnitten wird erläutert, wie Sie die Sicherheitsfunktionen auf Knotenebene in GKE in AWS verwenden.

Ubuntu

GKE on AWS verwendet eine optimierte Version von Ubuntu als Betriebssystem für die Ausführung der Kubernetes-Steuerungsebene und -Knoten. Ubuntu bietet eine Vielzahl moderner Sicherheitsfeatures und GKE on AWS implementiert mehrere sicherheitsfördernde Features für Cluster, darunter:

  • Einen optimierten Satz von Paketen
  • Google Cloud-optimierter Linux-Kernel.
  • Eingeschränkte Nutzerkonten und eine deaktivierte Root-Anmeldung

Für Ubuntu sind zusätzliche Sicherheitsleitfäden verfügbar, z. B.:

Knotenupgrades

Sie sollten regelmäßig Upgrades Ihrer Knoten ausführen. Bei Sicherheitsproblemen in der Containerlaufzeit, in Kubernetes selbst oder im Betriebssystem des Knotens kann ein vorzeitiges Upgrade der Knoten erforderlich sein. Durch ein Upgrade des Nutzerclusters wird die Software der einzelnen Knoten auf die neueste Version aktualisiert. Außerdem werden durch das Upgrade von Knoten Verschlüsselungsdaten rotiert.

Arbeitslasten sichern

Kubernetes bietet Nutzern die Möglichkeit, containerbasierte Arbeitslasten schnell bereitzustellen, zu skalieren und zu aktualisieren. In diesem Abschnitt werden Taktiken beschrieben, mit denen Sie die Nebenwirkungen der Ausführung von Containern in Clustern und den Google Cloud Diensten begrenzen können.

Verarbeitungsrechte für Podcontainer einschränken

Für die Sicherheit des Clusters ist es wichtig, die Berechtigungen von containerisierten Prozessen einzuschränken. Sie können sicherheitsrelevante Optionen mit dem Sicherheitskontext von Pods und Containern festlegen. Mit diesen Einstellungen können Sie die Sicherheitseinstellungen Ihrer Prozesse ändern, z. B.:

  • Nutzer und Gruppe für die Ausführung des Prozesses
  • Verfügbare Linux-Funktionen
  • Rechteausweitung

Das standardmäßige GKE on AWS-Knotenbetriebssystem Ubuntu wendet die standardmäßigen Docker AppArmor-Sicherheitsrichtlinien auf alle von Kubernetes gestarteten Container an. Sie können die Profilvorlage auf GitHub ansehen. Das Profil verweigert Containern unter anderem die folgenden Aktionen:

  • Direktes Schreiben in Dateien in einem Prozess-ID-Verzeichnis (/proc/)
  • Schreiben in Dateien, die sich nicht in /proc/ befinden
  • Schreiben in Dateien in /proc/sys außer /proc/sys/kernel/shm*
  • Bereitstellen von Dateisystemen

Nächste Schritte