0Pricing
Docker & DevOps Fundamentals · Lektion

Container-Sicherheit zur Laufzeit

Setzen Sie Best Practices zur Absicherung von Containern zur Laufzeit um, einschließlich Benutzerberechtigungen und Ressourcenlimits.

Container-Sicherheit zur Laufzeit ist eine kostenlose Docker & DevOps Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Docker & DevOps Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Docker & DevOps Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Grundlagen der Laufzeitsicherheit

Willkommen bei der Laufzeitsicherheit von Containern! Sichere Images zu erstellen, ist entscheidend. Doch was geschieht, sobald Ihr Container ausgeführt wird?

Diese Lektion konzentriert sich auf bewährte Methoden, um Ihre Anwendungen zu schützen, während sie aktiv sind, und mögliche Schäden durch Schwachstellen oder Angriffe zu begrenzen.

Container-Sicherheit zur Laufzeit — Illustration 1

Prinzip der geringsten Privilegien

Ein grundlegendes Sicherheitskonzept ist das Prinzip der geringsten Privilegien. Es bedeutet, einer Entität (z. B. einem Container oder Benutzer) nur die Berechtigungen zu erteilen, die für ihre Funktion unbedingt erforderlich sind, und keine weiteren.

Dadurch wird die Angriffsfläche reduziert und die Auswirkung eines kompromittierten Containers begrenzt.

Nicht als Root ausführen

Standardmäßig werden Prozesse innerhalb eines Docker-Containers als Benutzer root ausgeführt, der innerhalb des Containers über vollständige Administratorrechte verfügt.

  • Risiko: Erlangt ein Angreifer die Kontrolle über einen Container mit Root-Rechten, könnte er möglicherweise Schwachstellen im Docker-Daemon oder Kernel ausnutzen, um Root-Zugriff auf dem Hostsystem zu erhalten.
  • Bewährte Methode: Führen Sie Ihre Container-Prozesse immer als Benutzer ohne Root-Rechte aus.

Als Benutzer ohne Root-Rechte ausführen

Sie können mit dem Flag --user von docker run einen Benutzer (anhand seines Namens oder seiner UID) für Ihren Container-Prozess angeben. Hier führen wir den Befehl id in einem Alpine-Container als Benutzer 1000 aus.

Falls der Benutzer 1000 nicht existiert, verwendet Docker trotzdem diese UID.

docker run --rm -it --user 1000 alpine id

Linux-Capabilities verstehen

Herkömmliche Linux-Systeme haben einen Root-Benutzer nach dem Prinzip „alles oder nichts“. Linux-Capabilities unterteilen die mächtigen Root-Berechtigungen in kleinere, voneinander getrennte Einheiten.

Dadurch kann ein Prozess nur über die spezifischen Root-ähnlichen Berechtigungen verfügen, die er benötigt (z. B. das Binden an niedrige Ports oder den Zugriff auf das Netzwerk auf niedriger Ebene), ohne vollständige Root-Rechte zu besitzen.

Nicht benötigte Capabilities entfernen

Docker-Container werden standardmäßig mit einer großen Anzahl von Capabilities ausgeführt. Mit --cap-drop können Sie nicht benötigte Capabilities entfernen und dadurch weiter einschränken, was ein Container tun darf.

Hier entfernen wir die Capability NET_RAW. Der Befehl ping, der NET_RAW benötigt, schlägt anschließend fehl, wodurch die Einschränkung sichtbar wird.

docker run --rm -it --cap-drop=NET_RAW alpine ping -c 1 localhost || echo "Ping failed: NET_RAW capability dropped!"

Container-Ressourcen begrenzen

Container teilen sich den Kernel und die Ressourcen des Hosts. Eine unkontrollierte Ressourcennutzung durch einen Container kann zu einem Denial of Service (DoS) für andere Container oder sogar für den Host selbst führen.

  • CPU-Limits: Verhindern, dass ein Container die CPU-Kapazität vollständig beansprucht.
  • Speicherlimits: Verhindern, dass ein Container den gesamten verfügbaren Arbeitsspeicher verbraucht und dadurch die Systemstabilität beeinträchtigt.

Ressourcenlimits implementieren

Mit docker run können Sie CPU- und Speicherlimits direkt festlegen. Dieses Beispiel begrenzt den Speicher auf 128 MB und die CPU-Nutzung auf 0,5 (die Hälfte eines CPU-Kerns).

Dadurch verhält sich Ihr Container angemessen und entzieht anderen Prozessen keine Ressourcen.

docker run --rm -it --memory="128m" --cpus="0.5" alpine sh -c "echo 'Container running with limited resources.' && free -h"

Schreibgeschützte Dateisysteme

Viele Anwendungen müssen nach dem Start nicht in ihr Root-Dateisystem schreiben. Wenn Sie das Dateisystem schreibgeschützt machen, ergeben sich erhebliche Sicherheitsvorteile:

  • Schutz vor Manipulation: Ein Angreifer kann vorhandene Dateien nicht ändern und keine neuen schädlichen Dateien schreiben.
  • Begrenzte Persistenz: Alle vorgenommenen Änderungen sind flüchtig und gehen beim Neustart des Containers verloren.
  • Unveränderlichkeit erzwingen: Dies unterstützt ein Design, bei dem Container kurzlebig und Konfigurationen extern verwaltet sind.

Schreibgeschützte Container bereitstellen

Verwenden Sie beim Starten eines Containers das Flag --read-only. Jeder Versuch, in das Dateisystem des Containers zu schreiben (außerhalb ausdrücklich eingebundener Volumes), schlägt fehl.

Versuchen Sie, in diesem schreibgeschützten Container eine Datei zu erstellen:

docker run --rm -it --read-only alpine sh -c "touch /test.txt || echo 'Error: Cannot write to read-only filesystem!'"

Check zur Laufzeitsicherheit

Welche der folgenden Maßnahmen sind bewährte Methoden, um Container zur Laufzeit abzusichern?

Zusammenfassung zur Laufzeitsicherheit

Sehr gut! Sie haben gelernt, wie Sie die Sicherheit von Containern während ihrer Ausführung verbessern:

  • Geringste Privilegien: Erteilen Sie nur die erforderlichen Berechtigungen.
  • Benutzer ohne Root-Rechte: Vermeiden Sie es, Prozesse als root auszuführen.
  • Capabilities: Entfernen Sie nicht benötigte Linux-Capabilities.
  • Ressourcenlimits: Begrenzen Sie die CPU- und Speichernutzung.
  • Schreibgeschützt: Machen Sie Dateisysteme unveränderlich, um Schreibvorgänge zu verhindern.

Diese Maßnahmen reduzieren die Angriffsfläche und die Auswirkungen möglicher Sicherheitsverletzungen erheblich. Üben Sie weiter!

Häufig gestellte Fragen

Ist die Lektion „Container-Sicherheit zur Laufzeit“ kostenlos?

Ja — der vollständige Text von „Container-Sicherheit zur Laufzeit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Docker & DevOps Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Docker & DevOps Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Container-Sicherheit zur Laufzeit“?

Setzen Sie Best Practices zur Absicherung von Containern zur Laufzeit um, einschließlich Benutzerberechtigungen und Ressourcenlimits. Du übst Docker & DevOps Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Docker & DevOps Fundamentals zu starten?

Keine Vorkenntnisse erforderlich. Docker & DevOps Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Container-Sicherheit zur Laufzeit“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Docker & DevOps Fundamentals-Lektion Code schreiben und ausführen?

Ja. Jede Docker & DevOps Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Sicherheitsprüfung von Container-Images
  2. Container-Sicherheit zur Laufzeit
  3. Secrets-Management und RBAC
  4. Netzwerk-Policies und Least-Privilege-Netzwerke
← Zurück zu Docker & DevOps Fundamentals