Überprüfen von Bildern mit Gitlab CI / CD

Hallo allerseits, am Vorabend des Kurses „CI / CD auf AWS, Azure und Gitlab“ haben wir eine Übersetzung von interessantem Material vorbereitet.




In diesem Artikel wird erläutert, wie Sie Container-Images auf der Gitlab CI / CD-Plattform mit Sysdig Secure überprüfen .

Container-Images, die nicht den in Sysdig Secure definierten Sicherheitsrichtlinien entsprechen, werden nicht in der Container-Registrierung veröffentlicht und stoppen die Pipeline.



Vulnerability Finder mit Gitlab CI / CD


Gitlab CI / CD ist ein Open-Source- Server für kontinuierliche Integration und Bereitstellung, der in die Gitlab-Plattform für Softwareentwicklung und Zusammenarbeit integriert ist.

Nachdem Sie Gitlab CI / CD für Ihr Repository konfiguriert haben, werden Pipeline-Skripts jedes Mal automatisch ausgeführt, wenn Entwickler sich auf die nachverfolgten Zweige des Repositorys festlegen.

Mit solchen Pipelines können viele Prozesse automatisiert werden. Zum Beispiel für QS-Tests, zum Erstellen von Softwareverteilungsartefakten (wie Docker-Images oder Linux-Paketen) oder für das, worüber wir in diesem Artikel sprechen werden - um die Konfiguration zu überprüfen, nach Schwachstellen zu suchen und die Konformität zu überprüfen.

Überprüfen von Bildern in der Gitlab CI / CD-Pipeline: Verschieben Sie die Sicherheit nach links


Wie früher in der IT können Sie eine Sicherheitsanfälligkeit in einem Container umso schneller und einfacher beheben, je früher Sie sie finden.

Das Einbetten von Schwachstellenprüfungen in Ihre Pipeline-Assembly ist aus mehreren Gründen eine gute Vorgehensweise:

  • Bestehende Schwachstellen werden niemals in Produktion gehen.
  • «secure-by-default», , , .
  • , . , - .

Sysdig Sichere Angebote einen voll funktions Satz von Werkzeugen , die Behälter der Bilder zusammen mit vielen anderen Containersicherheitskontrollfunktionen wie Erkennungszeit Bedrohungen zu überprüfen Leistung auf maschinelles Lernen und erweiterbare Bedrohungserkennung Vorlagen aus der Box basierte Profile, gezwungen Kubernetes PSPs , die Reaktion auf Vorfälle und Know - how auf Compliance . Schauen wir uns an, wie der Sysdig Secure Image Validation-Dienst mit Gitlab funktioniert.

Sicherheitsüberprüfungsanforderungen für Gitlab


Um die folgenden Schritte auszuführen, benötigen Sie:


Konfigurieren der Gitlab CI / CD-Pipeline für die Bildinspektion mit Sysdig Secure


Wir werden in der Praxis sehen, wie diese beiden Plattformen integriert werden können. In diesem Handbuch erfahren Sie in wenigen Minuten, wie Sie mit dem Sysdig Secure Image-Scannen arbeiten.

Konfigurieren Sie die Zugangsdaten


Die Gitlab CI / CD-Pipeline benötigt Zugriffsdaten, um mit dem Sysdig Secure-Backend kommunizieren zu können. Um alles richtig zu machen, kopieren Sie das Zugriffstoken aus Sysdig UI-Einstellungen> Benutzerprofil .

Richten Sie dann eine neue globale Variable für Ihr Gitlab-Projekt ein:

  1. Gehen Sie in Ihrem Projekt zu Einstellungen> CI / CD und wählen Sie Variablen .
  2. Erstellen Sie eine neue Variable SYSDIG_SECURE_TOKENund fügen Sie die Sysdig sichere API - Schlüssel im Wert Feld .
  3. Klicken Sie auf die Schaltfläche Maskiert , damit Ihr API-Token nicht in den Pipeline-Protokollen gedruckt wird.

Gitlab-Pipeline-Definition


Zunächst benötigen wir eine Docker-Datei, die das Bild definiert, das Sie sammeln werden. Sie können jede gewünschte Docker-Datei in Ihr Projekt hochladen oder einfach das folgende Beispiel verwenden:

FROM debian:stretch
RUN apt update && apt install python-pip python-numpy openssh-server -y && rm -rf /var/lib/apt
RUN pip install flask
COPY app.py /app.py
EXPOSE 5000 22
ENTRYPOINT ["python", "./app.py"]

Anschließend müssen Sie eine neue Datei .gitlab-ci.ymlim Stammverzeichnis des Projekts erstellen . Diese Datei beschreibt alle notwendigen Schritte (Phasen) der Montage unserer Umgebung. Er wird alle notwendigen Stufen bestimmen.

Es gibt 3 Stufen in unserer Pipeline:

  • Zusammenbau des Containerbildes;
  • Scannen eines Bildes auf Schwachstellen oder Richtlinienverstöße;
  • Verschieben des Bildes in das Ziel-Repository.

variables:
  CI_REGISTRY_IMAGE: "sysdiglabs/dummy-vuln-app"
  SCAN_IMAGE_NAME: "sysdiglabs/secure_inline_scan:latest"
  SYSDIG_SECURE_ENDPOINT: "https://secure.sysdig.com"

docker-build-master:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script:
    - docker build --pull -t "$CI_REGISTRY_IMAGE" .
    - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock "$SCAN_IMAGE_NAME" /bin/inline_scan analyze -s "$SYSDIG_SECURE_ENDPOINT" -k "$SYSDIG_SECURE_TOKEN" "$CI_REGISTRY_IMAGE"
    - docker push "$CI_REGISTRY_IMAGE"
  only:
    - master

Erstellen Sie ein Container-Image


Die Montage des Bildes erfolgt mit docker build --pull -t "$CI_REGISTRY_NAME". Es nimmt Anweisungen aus Ihrer Docker-Datei entgegen und generiert ein neues lokales Image, das im nächsten Schritt überprüft wird.

Nach Sicherheitslücken suchen


In der nächsten Phase werden die Container überprüft. Hier überprüfen wir das Image auf Schwachstellen und die Konfiguration, wobei die Ergebnisse im Sysdig-Backend gespeichert werden.

Einer der Vorteile des lokalen Sysdig-Scannens besteht darin, dass Sie nicht die Kontrolle über Ihre Bilder verlieren, da das Bild nicht in eine andere Registrierung verschoben oder von außen belichtet werden muss, um den Scan durchzuführen. Es findet im Runner statt und nur die Ergebnisse werden an Sysdig Secure gesendet.

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock "$SCAN_IMAGE_NAME" /bin/inline_scan analyze -s "$SYSDIG_SECURE_ENDPOINT" -k "$SYSDIG_SECURE_TOKEN" "$CI_REGISTRY_IMAGE"

Zu diesem Zeitpunkt gibt Sysdig Secure einen Fehlercode zurück, wenn das Image eine der in Ihrer Richtlinie angegebenen Stoppbedingungen erfüllt (z. B. kritische Sicherheitsanfälligkeit). Durch das Stoppen der Pipeline wird die Übertragung anfälliger Bilder in die Containerregistrierung verhindert.





In Sysdig Secure können wir zusätzliche Informationen anzeigen und nachvollziehen, warum die Sicherheitsüberprüfung nicht abgeschlossen wurde:



Wie Sie im Screenshot sehen können, lässt der Container Port 22 offen, der in der Liste der verbotenen Ports aufgeführt ist, und enthält auch einige schwerwiegende Sicherheitslücken in der Python-Bibliothek.

Verschieben Sie das Bild in das Ziel-Repository


Nach erfolgreicher Überprüfung auf Schwachstellen wird die Pipeline vom Docker gepusht und das Image in der Containerregistrierung veröffentlicht. Wenn Sie keine Anmeldeinformationen oder Remotespeicher angeben, verwendet Gitlab die Standardeinstellung .

Fazit


Mit Sysdig Secure Image Scanning können Sie Images in der Gitlab CI / CD-Pipeline überprüfen, ohne sie von der Infrastruktur an die öffentliche oder Zwischenregistrierung zu senden, die Konfiguration überprüfen und das Auslaufen von Schwachstellen in der Produktion verhindern.

Suchen Sie nach bekannten Sicherheitslücken und überprüfen Sie die Konfiguration auf Übereinstimmung mit Sicherheitsempfehlungen, einschließlich Dockerfile-Anweisungen, weißen und schwarzen Listen von Paketen oder Bibliotheken von Drittanbietern, die im Basis-Image installiert sind, z. B. JAR / WAR-Dateien in Java oder Sprachpaket-Managern wie npm für Javascript. Pip für Python und Gem für Ruby.

Im Falle eines Fehlers können Sie dies schnell dem Containerautor melden, um das Problem schnell zu lösen und eine standardmäßig sichere Containersicherheitsrichtlinie zu erstellen. Um Sysdig Secure zu testen, können Sie anfordernDemo heute!

Das ist alles. Erfahren Sie mehr über den Kurs hier .

All Articles