Interview mit Michael Hausenblas

Kubernetes Security: Best Practices für die sichere Nutzung von Containern

Dominik Mohilo

Michael Hausenblas

Da sich die Nutzung von Containern nach wie vor einer wachsenden Beliebtheit erfreuen, sollte man das Thema Sicherheit nicht aus den Augen verlieren. Besonders die sichere Nutzung der Orchestrierungsplattform Kubernetes ist in dem Zusammenhang ein wichtiger Faktor. Michael Hausenblas, Developer Advocate für Go, Kubernetes und OpenShift bei Red Hat, erklärt im Interview mit welchen Tools und Best Practices es gibt, um Container-Anwendungen sicher zu betreiben.

Wer Michael Hausenblas einmal live erleben möchte, der hat auf der diesjährigen DevOps Conference 2018 in Berlin Gelegenheit dazu: In seinem Talk „Kubernetes Security: from Image Hygiene to Network Policies“ spricht er über das richtige und sichere Erstellen von Container Images und darüber, wie man sensible Daten richtig verwaltet. Außerdem führt er die Zuschauer in die Nutzung rollenbasierter Zugriffskontrolle (RBAC) in Kubernetes ein.

JAXenter: Was sind für dich in Bezug auf Kubernetes die Kernaspekte in Sachen Sicherheit?

Michael Hausenblas: Das Thema Security oder Sicherheit in Kubernetes wird glücklicherweise nicht stiefmütterlich behandelt. Tatsächlich spielt die Sicherheit eine zentrale Rolle, von der Konnektivität über Zugriffskontrolle bis hin zu Sicherheitsrichtlinien. Laut einer Studie von The New Stack sieht es so aus, als würde das Thema Security bei den Nutzern den ersten Platz einnehmen, wenn es um produktionsrelevante Bedenken geht.

In manchen Bereichen gibt es durchaus noch Handlungsspielraum für die Nutzer, etwa bei der Frage, unter welcher UID man eine Anwendung startet, aber viele Sicherheitsaspekte werden von Kubernetes zwangsläufig durchgesetzt. Auf High-Level-Niveau ist die folgende Liste ein guter Leitfaden zu den Punkten, die man im Auge behalten sollte.

  • Erstelle sichere und performante Container Images.
  • Container sollte man sicher ausführen, dazu gehört auch eine entsprechende Container Runtime.
  • Auch bei der Verwendung der Kubernetes-Kontrollebene (API Server, etcd, Controller Manager) sollte man die Sicherheit im Auge behalten.
  • Mach dir Gedanken darüber, welche Authentifizierungsoptionen du nutzen möchtest.
  • Durch die Verwendung von RBAC, erstellt man eine angemessene Zugriffskontrolle.
  • Der richtige Einsatz von Secrets, Netzwerkrichtlinien und anderen Sicherheitsrichtlinien ist in deinem Interesse.
  • Sei dir über die in deinem Cluster möglicherweise enthaltenen Angriffsvektoren im Klaren.
  • Vergiss nicht das Monitoring, Alerting und Auditing.

JAXenter: Was sollten Entwickler immer bedenken, wenn sie Container Images erstellen?

Michael Hausenblas: Es gibt natürlich etliche Dinge zu bedenken, aber ich glaube die beiden wichtigsten sind einerseits, nicht den Root User im Container Image zu nutzen, es sei denn es ist unbedingt notwendig. Andererseits gilt es die Angriffsfläche zu minimieren. Anstatt ein richtig fettes Image zu erstellen, dass das gesamte Entwicklungstooling und die entsprechenden Bibliotheken enthält, sollte man nur das Notwendigste zum Ausführen des Containers hineinpacken. Man sollte immer darauf achten, alles möglichst simpel und klein zu halten, allerdings auch nichts Essenzielles wegzulassen. Hat man beispielsweise kein Tool für das Debugging im Image (wie etwa curl), kann man später in der Produktion auf Probleme stoßen. Das gilt es zu vermeiden.

DevOpsCon Dossier 2018

Free: 40+ pages DevOps knowledge by experts

Learn about Docker, Kubernetes, Continuous Delivery, DevOps Culture, Cloud Platforms & Security with articles by experts like Kai Tödter (Siemens), Nicki Watt (OpenCredo), Tobias Gesellchen (Europace AG) and many more.

JAXenter: Welche Best Practices gibt es für den Einsatz von Containern mit Kubernetes in Produktion? Was sollte man tunlichst vermeiden?

Michael Hausenblas: Alles beginnt damit, strukturiert zu arbeiten: Man sollte die von Kubernetes selbst zur Verfügung gestellte Funktionalität nutzen, um klar zwischen Anwendung und/oder Besitzer zu unterscheiden. Dazu zählen unter anderem Namespaces, Service-Accounts, Quotas und Ressourcenlimits. Ganz wichtig ist es in meinen Augen auch, so oft es geht RBAC zu nutzen: Das hilft dabei, eine klare Strategie für die organisatorische Struktur (von Nutzern und Nutzergruppen, bspw. übernommen von einem LDAP-Server) auf den Cluster zu projizieren.

Man sollte sich eine Reihe von Fragen stellen: Welche Rollen möchte ich definieren (z. B. Endnutzer, App Operator, Namespace-Administrator, Cluster Operator)? Stelle ich ein sicheres Identifizierungsmanagement innerhalb des Clusters zur Verfügung – etwa über das Secure Production Identity Framework for Everyone (SPIFFE), ein Projekt, dass erst vor Kurzem Teil der Cloud Native Computing Foundation (CNCF) wurde?

Ganz wichtig ist es in meinen Augen auch, so oft es geht RBAC zu nutzen.

Auch die Frage, welche Richtlinien auf Anwendungslevel zum Einsatz kommen, muss man bedenken. Nutzt man beispielsweise lediglich die Low-Level-Primitiven von Kubernetes wie Network Policies und Security Policies oder geht man einen Schritt weiter und verwendet sogenannte Service Meshes wie Istio und Conduit? Nicht unwichtig ist zudem das Verständnis für die eigene Anwendung: Entwickler sollten wissen, woher die eigenen Artefakte (Container Images usw.) kommen, und vor allem kontrollieren können, wer welches Artefakt wohin Deployen darf. Provenance-aware Policy Frameworks, wie Grafeas helfen dabei. Es kann sich auch lohnen, ein Tool für das Durchsetzen von Richtlinien zu verwenden, etwa den Open Policy Agent (OPA), ebenfalls ein Projekt der CNCF.

Einige der oben genannten Projekte befinden noch in einer sehr frühen Phase und sind noch lange nicht „production ready“. Dennoch lohnt es sich auf jeden Fall, sie zu kennen und deren Entwicklung zu verfolgen. Es ist jedenfalls sinnvoller, den Einsatz von ihnen zu erwägen, bevor man das Rad neu erfindet.

JAXenter: Welche Tools kannst du Entwicklern und Admins empfehlen, die bei der Absicherung von Containern helfen?

Michael Hausenblas: Es gibt eine Menge Tools und ich denke nicht, dass eines für sich in Anspruch nehmen kann, für den jeweiligen Zweck das Beste zu sein. Dennoch möchte ich an dieser Stelle ein paar Helferlein nennen, die ich entweder selbst benutzt, zu denen ich etwas beigetragen oder die ich bei unseren Kunden im Einsatz gesehen habe:

JAXenter: Welche Tipps hast du noch für Entwickler?

Michael Hausenblas: Es ist durchaus möglich, Kubernetes und darauf basierende Anwendungen sicher zu nutzen. Das setzt allerdings voraus, dass Entwickler und Administratoren (Ops) zusammenarbeiten – und zwar genau nach dem DevOps-Mantra. Der erste Schritt ist es, sich der relevanten Abstraktionsmöglichkeiten von Kubernetes bewusst zu sein, von Namespaces bis hin zum Security Contexts. Der zweite Schritt besteht darin, diszipliniert beim Verschlüsseln von Secrets zu sein, das beginnt beim Erstellen von sicheren Images und dem entsprechend abgesicherten Einsatz der Container.

Die angebotenen Projekte und Produkte im Bereich Container Security sind im letzten Jahr rapide gewachsen und haben sich deutlich weiterentwickelt. Viele traditionelle und bekannte Anbieter sind auf den Zug aufgesprungen, genau wie eine Reihe von Startups. Das resultiert in einem stetig wachsenden Angebot an Tools, was einerseits natürlich vorteilhaft ist, andererseits muss man dafür auch ständig die entsprechenden Entwicklungen im Blick behalten. Eine gute Möglichkeit ist es, sich in den Communitys (bspw. der SIG Auth oder der Policy Working Group) zu engagieren. So fällt es auch leichter nachzuvollziehen, wohin sich das Container-Schiff bewegt.

JAXenter: Vielen Dank für das Interview!

Michael Hausenblas is a Developer Advocate for Go, Kubernetes, and OpenShift at Red Hat where he helps appops to build and operate distributed services. His background is in large-scale data processing and container orchestration and he’s experienced in advocacy and standardization at W3C and IETF. Before Red Hat, Michael worked at Mesosphere, MapR and in two research institutions in Ireland and Austria. He contributes to open source software (mainly using Go), blogs and hangs out on Twitter too much.
Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: