Mit K8s sichere Container betreiben Mehr Sicherheit in Kubernetes
Setzen Unternehmen auf Container spielt die Sicherheit eine besonders wichtige Rolle. Denn Container werden häufig für Web- oder Cloud-Apps verwendet, die auch von extern zugreifbar sind. Das Open-Source-System Kubernetes (K8) entwickelt sich immer mehr zum Standard bei der Automatisierung, Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen und erfordert deshalb besonderes Augenmerk bei der Sicherheit.
Anbieter zum Thema

Ein besonders wichtiger Bereich um die Sicherheit von Kubernetes-Clustern zu verbessern besteht darin möglichst die neuste Version zu verwenden. Mit jeder neuen Version wird die Sicherheit der Container-Orchestrierungslösung verbessert. Ab Version 1.7 werden Sicherheitsfunktionen verbessert, mit Version 1.8 wird die rollenbasierte Zugriffskontrolle (Roles Based Access Control, RBAC) verfügbar gemacht. Kubernetes ist sehr flexibel und lässt sich auch auf VMs installieren, zum Beispiel in Ubuntu. Dadurch erhalten Entwickler und Administratoren die Möglichkeiten Sicherheitseinstellungen umfassend zu testen und dann in der produktiven Umgebung zu verteilen. Der schnellste Weg dazu ist:
sudo snap install conjure-up --classic
conjure-up kubernetes
Einstieg in mehr Sicherheit von Kubernetes
Die jeweils aktuelle Version von Kubernetes steht auf GitHub zur Verfügung. Auf der Seite der Entwickler finden sich ausführliche Anleitungen um Kubernetes-Cluster sicher zu betreiben. Die Anleitung „Securing a Cluster“ hilft bei der Schrittweisen Absicherung des Clusters.
Auch die anderen Anwendungen in einem Kubernetes-Cluster wie Kafka, Zookeeper und viele andere spielen für die Sicherheit eine wichtige Rolle. Daher sollten auch diese optimal abgesichert und vor allem auch regelmäßig aktualisiert werden. Mit Kubernetes 1.7 und neuer können solche Anwendungen automatisiert aktualisiert werden (StatefulSets Updates). Das erhöht die Sicherheit deutlich. Die Vorgehensweise dazu zeigen die Entwickler in der Dokumentation von Kubernetes.
Kubernetes 1.7 bietet Richtlinien und Verschlüsselung
Mit der Aktualisierung zu Kubernetes 1.7 erhält die Umgebung eine Network Policy API. Mit den Richtlinien können Entwickler festlegen, welche Pods miteinander kommunizieren dürfen und wie aus dem externen Netzwerk mit dem Kubernetes-Cluster gearbeitet werden darf. Die Netzwerkrichtlinien sind ein wichtiger Faktor für die Verbesserung der Sicherheit. Mit den Richtlinien lassen sich umfassende Regeln erstellen, um Benutzer zu steuern, aber auch die Kommunikation zwischen Pods und Nodes. In den Richtlinien lassen sich auch einzelne Ports definieren, die durch Pods genutzt werden dürfen.
Zusätzlich werden weitere Plug-Ins in Kubernetes integriert. Mit diesen kann zum Beispiel gesteuert werden, wie Kubelets arbeiten. Hier lassen sich Dienste, Endpunkte, Knoten und Pods autorisieren und authentifizieren. Die Vorgehensweise zeigen die Kubernetes-Entwickler in der Reference Documentation. Im Fokus stehen hier der Zugriff von Kubelets auf Secrets, Pods oder auf andere Objekte im Kubernetes-Cluster. Der Node Authorizer und das Admission Control Plugin steuern differenziert diese Zugriffe, basierend auf Regeln.
TLS bootstrapping verbessert die Arbeit mit Zertifikaten in Kubernetes. Mit der API lassen sich Zertifikate von einer Cluster-CA abrufen und von Kubelets nutzen.
Auch die Verschlüsselung wird durch Kuberntes 1.7 in die Umgebung integriert. Die aktuelle Funktion zur Verschlüsselung befindet sich noch in einem frühen Entwicklungsstadium, werden aber ständig verbessert. Auch aus diesem Grund lohnt sich eine Aktualisierung zu neuen Versionen wie Kubernetes 1.8.
Zugriffskontrolle mit Kubernetes 1.8
Ab Kubernetes 1.8 ist Roles Based Access Control (RBAC) komplett verfügbar. Die Funktion verlässt den Beta-Status. Damit lassen sich Berechtigungen effizienter verteilen, weil Administratoren eigene Rollen für die Umgebung erstellen können.
Damit lässt sich auch der Zugriff auf API-Rollen definieren. Mit verschiedenen Namensräumen können so unterschiedliche Reche zugewiesen werden. Das ermöglicht auch die granulare Zuteilung von Rechten bis hinunter zu einzelnen Pods. Die Rechte lassen sich umfassend steuern, von Leserechten, bis hin zu Schreibrechten und sogar Rechten für die administrative Steuerung.
In Kubernetes 1.8 lassen sich auch Zertifikate automatisch zuteilen und regelmäßig wechseln. Mit Transport Layer Security (TLS) Zertificat Rotation können Kubernetes-Cluster mit zahlreichen Hosts wesentlich sicherer betrieben werden.
Kubernetes-Cluster in Microsoft Azure absichern
Kubernetes-Cluster lassen sich in Amazon Web Services (AWS) aber auch in Microsoft Azure erstellen. Bereits hier spielt die Sicherheit eine wichtige Rolle. Die Installation von Kubernetes in Microsoft Azure erfolgt über das CLI-Interface. Hier lassen sich wichtige Bereiche zur Installation, wie die Erstellung des SSH-Schlüssels automatisieren.
Um mit der Azure CLI einen sicheren Container-Cluster zu erstellen ist zunächst eine sichere Anmeldung des Computers notwendig, mit dem die Installation durchgeführt wird. Dazu wird in der Azure-Shell zunächst der Befehl „az login“ eingebeben. Danach wird die Geräteanmeldungs-Webseite von Microsoft Azure aufgerufen. Der notwendige Code zur Anmeldung wird in der Azure-Shell angezeigt.
Setzen Unternehmen mehrere Azure-Abonnements ein, kann eine Liste der Abonnements mit „az account list“ angezeigt werden. Die weitere Vorgehensweise ist in der Dokumentation von Azure zu finden.
Ressourcenverwendung steuern
Da in einem Kuberntes-Cluster haufenweise Container betrieben werden, spielt es für die Stabilität und Sicherheit im Cluster eine wichtige Rolle die Ressourcen richtig zu verteilen und vor allem für einzelne Bereiche zu begrenzen. Mit Grenzwerten können Administratoren gezielt steuern, wieviele Ressourcen einem Objekt zur Verfügung stehen. Hier lassen sich vor allem die Nutzung der CPU, des Arbeitsspeichers und des verwendeten Speicherplatzes steuern. Das verhindert, dass Container einen Host oder einen ganzen Cluster zum Absturz bringen können.
In diesem Bereich fällt auch die Steuerung der Knoten auf denen verschiedene Pods positioniert sein dürfen. Dadurch kann genau festgelegt werden, welche Knoten ein Pod verwenden darf. Durch die strikte Trennung der Ressourcen lässt sich auch eine Aufteilung bezüglich von Sicherheitsrichtlinien und Rollen definieren.
:quality(80)/images.vogel.de/vogelonline/bdb/1248600/1248634/original.jpg)
Anforderungen an Container Security
Container-Sicherheit braucht passende Tools
(ID:44937469)