Docker - Continuous Build Security Assessment

Docker

Continuous Build Security Assessment

Rocco Gagliardi
von Rocco Gagliardi
am 04. Mai 2017
Lesezeit: 8 Minuten

Docker: “Build, Ship, and Run …”, Continuously wird gelebt. Der Sprung von Build zu Ship sieht ziemlich einfach aus. Doch bei Docker weiss man, dass er halt doch nicht so einfach ist: Bevor ein Container geshipped werden kann, müssen Tests durchgeführt werden.

Doch – allgemein gesagt eine Software im Container – behauptet den Prozess von Continuous-Delivery/-Integration (CD/CI) zu optimieren, indem Risiken bei der Verteilung reduziert werden, da die Infrastruktur als einziges Stück Code wahrgenommen wird (Infrastructure as Software).

Um dieses Continuous Delivery (CD) erreichen zu können – es wird Software erstellt, die zu jedem Zeitpunkt produktiv geschaltet werden kann -, muss ein Continuous-Integration (CI) Prozess etabliert werden. Dieser ist für Integration, Entwicklung und Testing des Codes zuständig. Zudem ist eine Deployment Pipeline (DP) erforderlich, bei der jede Änderung durch diese geschickt wird und automatisch in der Produktion ihre Anwendung findet. Dadurch werden mehrere Deployments pro Tag möglich. Continuous Delivery (CI) bedeutet also, dass man viele Deployments durchführen kann und in der Lage ist auszuwählen, wenn man es nicht tun möchte. Letztgenanntes zum Beispiel dann, wenn die Stabilität des Business eine hohe Priorität geniesst.

Mit konkretem Blick auf Docket stellen sich die Fragen, was soll getestet werden? Wo? Wie? Dieser Artikel skizziert zu diesem Zweck eine Test-Strategie und stellt einige Tools vor, die bei einer Umsetzung helfen können.

Einige Docker Begriffe

Fassen wir die Begrifflichkeiten des Docker-Ökosystems kurz zusammen:

Test-Strategie

Nachdem Klarheit über die einzelnen Komponenten der Docker-Familie geschaffen werden konnte, können wir die Möglichkeiten des Security Testings besprechen.

Die folgende Tabelle skizziert die angestrebte Test-Strategie:

Testbereich Ziel Tests Wann
Docker Host Gewährleisten, dass die durch Docker ausgeführten Prozesse mittels Best Practices gesichert wurden. Ist das Betriebssystem aktualisiert? Ist es gehärtet? (CIS Benchmark) Ist die Angriffsfläche minimiert worden? Integrieren der Resultate, keine strenge Korrelation innerhalb des CI-Zyklus.
Docker File Gewährleisten, dass die Definitionen des Containers den Anforderungen von Best Practice folgen. Sind die Quellen vertrauenswürdig? ( FROM: ) Wurde die Umgebung minimiert? ( RUN … ) Wurde die Angriffsfläche des Netzwerks minimiert? ( EXPOSE ) Wurde die Exponiertheit der Volumes reduziert? ( VOLUME ) Integriert in den CI Zyklus.
Docker Image Gewährleisten der statischen Sicherheit des Images. Ist das Image vertrauenswürdig? Weist das Image bekannte Schwachstellen auf? Integriert in den CI Zyklus.
Docker Container Gewährleisten der dynamischen Sicherheit des Images. Weist der Container bekannte Schwachstellen auf? Wurde die Exponiertheit des Netzwerks innerhalb des Docker Files minimiert? Wurde die Exponiertheit der Container Volumes minimiert? Integriert in den CI Zyklus.

Test Tools

Um den Grundsatz von Continuous aufrecht zu erhalten, müssen die Tests in den einzelnen Pipelines integriert werden: Es darf keine manuelle Interaktion erforderlich sein.

Nachfolgend eine Liste von Tools, die sich dafür anbieten:

Tool Testbereich Methode Lizenz
docker-bench-security Docker Host Führt das Skript in einem Container aus, um einen Bericht zu generieren. Prüft auf der Basis des CIS Docker 1.6 Benchmark Apache 2.0
OpenSCAP Docker Images + Docker Container Benutzt oscap-docker, um Images/Container gegen durch CVE dokumentierte Schwachstellen oder eine individuelle Policy zu prüfen, um dann einen Bericht zu generieren. GPLv3
Clair Docker Images + Docker Container Ein quelloffenes Projekt zur statischen Analyse von Schwachstellen in Application Container. Wird in erster Linie durch API genutzt, indem verschiedene Quellen herangezogen werden. Das Image wird auf die installierten Pakete untersucht und identifizierte Gefahren als solche ausgewiesen. Clair ist Teil der CoreOS Produktfamilie. Apache 2.0
Twistlock Docker Images + Docker Container + Packages Benutzt NIST, um CVEs zu finden sowie Docker CIS für ein Vulnerability Assessment. Runtime Defense (ein sepezieller Container, der auf jedem Docker Host etabliert wird) führt das Security Monitoring und die Reaktionen durch. Kommerziell
Aqua Security Docker Images + Docker Container + Packages Funktioniert sehr ähnlich wie Twistlock, indem ein zentralisierter Server und Agent-Containers mit erweiterten Rechten auf jedem Docker Host genutzt werden. Scalock stellt eine umfangreiche Lösung für virtuelle Container bereit, indem die Sichtbarkeit und Kontrolle der Umgebung erhöht wird. Dies macht die konsequente Einführung von Sicherheit auch in grossen Umgebungen möglich und skalierbar. Kommerziell

Zusammenfassung

Das Ökosystem von Docker ist relativ neu und befindet sich in stetigem Wandel. Testing ist dabei nur ein kleiner Teil des Gesamten; viele andere Faktoren müssen ebenfalls berücksichtigt und mit dem richtigen Werkzeug angegangen werden. Der Ansatz für das Testing und das Ziel dessen sind klar, wobei die Integration in den CD/CI-Prozess individuell angepasst auf die Bedürfnisse der vorliegenden Architektur stattzufinden hat.

Über den Autor

Rocco Gagliardi

Rocco Gagliardi ist seit den 1980er Jahren im Bereich der Informationstechnologie tätig. In den 1990er Jahren hat er sich ganz der Informationssicherheit verschrieben. Die Schwerpunkte seiner Arbeit liegen im Bereich Routing, Firewalling und Log Management.

Links

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

×
Schutz vor Phishing

Schutz vor Phishing

Rocco Gagliardi

Logging

Logging

Rocco Gagliardi

IT Security Policies

IT Security Policies

Rocco Gagliardi

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv