Verbessern des Datenverständnisses
Rocco Gagliardi
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.
Fassen wir die Begrifflichkeiten des Docker-Ökosystems kurz zusammen:
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. |
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 |
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.
Unsere Spezialisten kontaktieren Sie gern!
Rocco Gagliardi
Rocco Gagliardi
Rocco Gagliardi
Rocco Gagliardi
Unsere Spezialisten kontaktieren Sie gern!