In this article
Alles, was Sie über Container Runtime Security wissen müssen
Container-Orchestrierung-Systeme wie Kubernetes bieten eine einfachere Möglichkeit, Container in großem Maßstab einzurichten und zu verwalten. Mit der zunehmenden Verbreitung von Containern ist auch die Nutzung dieser Orchestrierungssysteme sprunghaft angestiegen. Kubernetes orchestriert heute beispielsweise mehr als drei Viertel aller containerisierten Anwendungen. Natürlich sind diese Plattformen aufgrund ihrer Beliebtheit häufige Ziele von Cyberkriminellen. Kubernetes begegnet diesem Risiko mit Pod-Sicherheitsrichtlinien und Drift-Management, um Container während der Entwicklung abzusichern. Doch was passiert, wenn Container zur Laufzeit ausgeführt werden?
Docker und Kubernetes bieten zahlreiche Tools, um Sicherheit in Container zu integrieren. Die Laufzeitumgebung selbst sichern sie jedoch nicht ab. Deshalb ist ein umfangreicher Laufzeit-Stack aus Tools, Prozessen und Richtlinien entstanden, der Container in der Produktion schützt.
Wir erläutern die Risiken rund um die Container-Laufzeit und die Prozesse, mit denen Sie Ihre Container in der Produktion absichern können.
Die Herausforderung, laufende Container abzusichern
Praktiken wie die Integration von Sicherheit in Container-Builds und das Erstellen kleinerer Container-Images können zwar dazu beitragen, Sicherheitsprobleme bereits im Container-Image zu vermeiden, doch sobald ein Container läuft, können verschiedene Bedrohungen auftreten. Dazu gehören:
Neu entdeckte Sicherheitslücken in Anwendungen in älteren Images
Konfigurationsabweichungen, etwa die nicht autorisierte Änderung von Benutzerberechtigungen
Angriffe zur Rechteausweitung, durch die Angreifer Zugriff auf Geheimnisse, Speichervolumes oder andere Ressourcen erhalten
Bereitstellung von Containern unter Ausnutzung von Fehlern in der Zugriffskontrolle
Aktivierung von Schadcode, der in einem Container gespeichert ist
Tools zur Container-Überwachung wie Prometheus und Grafana werden häufig eingesetzt, um Leistung und Effizienz laufender Container zu verbessern. Sie sind jedoch nicht für Sicherheitszwecke konzipiert.
So erkennen und beheben Sie Risiken in der Container-Laufzeit
Um laufende Container abzusichern, müssen wichtige Ereignisse wie Anmeldungen überwacht werden. Container Runtime Security geht jedoch über die einfache Ereignisüberwachung hinaus. Sie beginnt damit, Sicherheit mithilfe von Richtliniendurchsetzungs-Tools in die Architektur zu integrieren, die Richtlinien auf Kubernetes- oder Kernel-Ebene festlegen und durchsetzen. Anschließend können Scan-Tools Audit-Logs, Infrastructure as Code (IaC), Konfigurationseinstellungen und den Anwendungscode selbst analysieren, um neue Sicherheitslücken und Fehlkonfigurationen in der Produktion aufzudecken.
Wer ist für die Container Runtime Security verantwortlich?
Traditionell waren spezialisierte Sicherheitsteams für die Absicherung der Anwendungs-Laufzeit verantwortlich. Doch aufgrund der Geschwindigkeit und Komplexität agiler und Cloud-nativer Entwicklung sind Entwicklerinnen und Entwickler zunehmend daran beteiligt, Sicherheitsrisiken in ihrem Code zu beheben. Sie verlagern Sicherheit nach links und integrieren sie bereits in die frühesten Phasen der Planung und Programmierung.
Auch die Sicherheitsverantwortung von Entwicklerinnen und Entwicklern erstreckt sich zunehmend über den gesamten Container-Lebenszyklus: von der Planung und Programmierung über das Scannen und die Bereitstellung bis hin zur Laufzeitumgebung. Sie müssen den Entwicklungszyklus nun auch weiterdenken und berücksichtigen, was passiert, wenn ihre Container zur Laufzeit ausgeführt werden.
Sichere Laufzeiteinstellungen für Container-Engines auswählen
Die Laufzeiteinstellungen von Container-Engines lassen sich so konfigurieren, dass Angreifer ihre Reichweite nach einem Netzwerkangriff möglichst wenig ausweiten können. Mit den folgenden Einstellungen können Sie den Schutz Ihrer Organisation verbessern:
Nicht als Root ausführen
Container sollten als Benutzer und nicht als Root ausgeführt werden. Definieren Sie dazu zunächst die Benutzer-ID in der Dockerfile und führen Sie den Container anschließend als dieser Benutzer aus. So lässt sich der Zugriff mithilfe rollenbasierter Zugriffskontrollen einfach beschränken.
Das schreibgeschützte Root-Dateisystem als Standardeinstellung festlegen
So verhindern Sie, dass Angreifer die Kontrolle über einen Computer erlangen oder Schadcode auf den Host schreiben.
Zugriff auf Container-Hosts einschränken
Verbieten Sie SSH-Zugriffe auf Server. So erschweren Sie Angreifern und Malware, aus Containern auszubrechen und das Host-System anzugreifen.
Linux-Capabilities entfernen
Capabilities ermöglichen eine präzise Anpassung von Kernel-Berechtigungen, etwa der Berechtigung, Audit-Logs zu lesen oder Berechtigungsprüfungen zu umgehen. Wenn Sie Linux-Capabilities für einen Container entfernen, schränken Sie die Möglichkeiten von Angreifern ein, den Kernel zu manipulieren.
Nicht im privilegierten Modus ausführen
Container-Laufzeitumgebungen bieten robuste Schutzmaßnahmen, um Container vom Host-System abzuschirmen. Der privilegierte Modus sollte vermieden werden, da er die meisten dieser Prüfungen umgeht.
Laufzeitumgebung mit IaC-Scans auf Fehlkonfigurationen prüfen
Bei der Einrichtung ihrer Cloud-Infrastruktur und des Container-Orchestrators können Entwicklerinnen und Entwicklern leicht Fehlkonfigurationen unterlaufen. Mit IaC-Scans durch Snyk IaC lassen sich Fehlkonfigurationen in Kubernetes und anderen Systemen automatisch erkennen. Die Erkenntnisse werden direkt in die Tools im Entwickler-Workflow übermittelt.
Weitere Informationen zu Sicherheitseinstellungen für die Laufzeitumgebung finden Sie in unserem Beitrag: 10 Kubernetes Security Context settings you should understand | Snyk.
Die Partnerschaft von Sysdig und Snyk für Container Runtime Security
Es gibt weder eine Einzellösung noch einen magischen Knopf, um laufende Container abzusichern. Deshalb ist es wichtig, Sicherheitsprotokolle überall dort zu integrieren, wo es möglich ist. Vorrangig gilt es, Sicherheitslücken und Fehlkonfigurationen aufzuspüren und die wichtigsten Probleme zu beheben. Sicherheit ist eine Form des Risikomanagements. Daher müssen sowohl Sicherheitslücken als auch ihre möglichen Folgen erkannt werden. Darüber hinaus sollten Sie die Tools und Einstellungen von Kubernetes nutzen, um den Sicherheitsstatus Ihrer Container zu verbessern.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.
Eine vollständig automatisierte Lösung für Container Runtime Security kann zwar die meisten Probleme erkennen, doch für deren Behebung ist weiterhin das geschulte Auge der Entwicklerinnen und Entwickler gefragt. Scan-Tools können Sicherheitslücken und Fehlkonfigurationen in der Laufzeitumgebung aufdecken. Entwicklerinnen und Entwickler müssen dann jedoch den zugehörigen Code überprüfen und die erforderlichen Korrekturen vornehmen. Das kostet Zeit und Ressourcen und kann dazu führen, dass Probleme übersehen werden. Hier kommt Snyk ins Spiel: Snyk erkennt Probleme und empfiehlt Korrekturen direkt im Entwickler-Workflow. Mit Tools wie Snyk Container und Kubernetes Configuration Security können Sie Docker-Container und Kubernetes-Konfigurationen scannen und erhalten Feedback direkt in CI/CD-Tools.
Außerdem arbeitet Snyk mit Sysdig zusammen, um diesen sicherheitsorientierten Ansatz für Entwicklerinnen und Entwickler auch in die Laufzeitumgebung einzubringen. Sysdig nutzt für die Laufzeitsicherheit das Open-Source-Tool Falco, um Eindringversuche, Bedrohungen und Sicherheitslücken in Containern und Kubernetes in Echtzeit zu erkennen. Durch die Integration von Snyk und Sysdig werden diese Erkenntnisse direkt an Entwicklerteams weitergegeben, damit sie Korrekturen priorisieren und umsetzen können.
Häufig gestellte Fragen
Was bedeutet Container-Runtime-Sicherheit?
Container-Runtime-Sicherheit umfasst die Tools und Prozesse, mit denen Container nach ihrem Produktivstart vor Bedrohungen und Schwachstellen geschützt werden. Strategien für die Container-Runtime-Sicherheit setzen in der Regel stark auf Automatisierung. Entwickler und Sicherheitsteams verwalten dabei Container-Konfigurationen und scannen Live-Umgebungen auf Schwachstellen und Konfigurationsabweichungen.
Was ist Container-Runtime-Scanning?
Beim Container-Runtime-Scanning werden Container in der Produktionsumgebung mithilfe von Tools und Prozessen überprüft. Scanning-Tools helfen dabei, Sicherheitslücken oder Konfigurationsprobleme aufzudecken und diese anschließend automatisch zu beheben oder Entwicklerinnen und Entwicklern Korrekturen vorzuschlagen. Der Einsatz von Policy-Engines kann den Prozess mithilfe von Erkennungsregeln automatisieren. Der Scanner kann damit unerwartetes Verhalten oder ungewöhnliche Aktivitäten erkennen.
Was ist Kubernetes-Runtime-Sicherheit?
Kubernetes-Runtime-Sicherheit umfasst den Einsatz von Tools und Prozessen, um alle Komponenten der Kubernetes-Runtime-Umgebung abzusichern. Entwickler können die integrierten Tools und Einstellungen von Kubernetes nutzen, um die Sicherheit zu erhöhen, etwa indem sie den eingehenden und ausgehenden Netzwerkverkehr zu und von Pods kontrollieren. Policy-Engines, die über APIs in Kubernetes integriert sind, ermöglichen eine strengere Kontrolle des Nutzerverhaltens und des Netzwerkverkehrs. Mithilfe eines Runtime-Scanners können DevSecOps-Fachkräfte schließlich neue Schwachstellen und Konfigurationsabweichungen in der Live-Umgebung aufdecken.
Sind Container sicher?
Container sind nicht standardmäßig sicher. Deshalb ist es wichtig, dass Entwickler und Sicherheitsteams von Anfang an Container-Sicherheit berücksichtigen. Container und Anwendungen werden immer komplexer. Daher können Entwickler nicht unbedingt jedes Tool und jeden Prozess kennen, mit denen sich Container absichern lassen. Tools wie Snyk und Sysdig helfen Entwicklern, Bedrohungen direkt im Container-Code und in der Laufzeitumgebung aufzudecken. Erkenntnisse zu Sicherheitslücken und Fehlkonfigurationen werden den Entwicklern anschließend in ihren gewohnten Workflows bereitgestellt.