Zum Inhalt

47-Tage-Zertifikate sind in Planung. Bist du bereit?

Jetzt handeln →

Moderne Strategien zum Signieren und Verifizieren von Container-Images mit CodeSign Secure 

Moderne Strategien zum Signieren und Verifizieren von Container-Images mit CodeSign Secure

Einführung 

Angriffe auf die Software-Lieferkette sind nicht mehr nur ein theoretisches Risiko; sie passieren, und sie treffen hart. Vorfälle wie die SolarWinds-Verstoß und die Log4Shell-Sicherheitslücke hat schmerzlich deutlich gemacht, dass Angreifer es nicht mehr nur auf Ihren Code abgesehen haben; sie haben es auf alles abgesehen, was damit in Berührung kommt, einschließlich der Tools, Bibliotheken und Container, auf die Sie sich verlassen. 

In dieser Realität ist das Signieren und Verifizieren von Container-Images kein nettes Extra, sondern ein Muss. Wenn Sie unsignierte Images pushen oder Signaturprüfungen während der Bereitstellung überspringen, öffnen Sie Angreifern Tür und Tor, um unbemerkt Schadcode einzuschleusen. 

Hier kommt unser CodeSign Secure ins Spiel. 

Mit CodeSign Secure können Sie Ihre Container-Images ganz einfach digital signieren und verifizieren, bevor sie in die Produktion gehen. Egal, ob Sie eine schnelllebige CI/CD-Pipeline betreiben oder Hunderte von Microservices verwalten – CodeSign Secure hilft Ihnen, Ihre Container-Lieferkette zu sichern, ohne den Prozess zu verlangsamen. 

In den folgenden Abschnitten erklären wir Ihnen, wie unser CodeSign Secure in Ihren Arbeitsablauf passt, wie es Ihre Bilder mit HSM-gestützte Schlüssel und wie Sie Signaturprüfungen erzwingen können, bevor etwas bereitgestellt wird. 

Die Rolle der Code-Signierung in DevSecOps 

Bei DevOps dreht sich alles um Geschwindigkeit, schnelle Updates, Automatisierung und ständige Bewegung. Doch mit dieser Geschwindigkeit gehen auch Risiken einher. Je schneller Sie Code ausliefern, desto größer ist die Wahrscheinlichkeit, dass etwas Unzuverlässiges durchrutscht. Genau hier kommt es an DevSecOps kommt ins Spiel, indem Sicherheit direkt in den Prozess integriert wird, anstatt sie am Ende hinzuzufügen. 

Eine der besten Möglichkeiten, dieses Vertrauen aufzubauen, ist die Code-Signierung. Wenn Sie Container-Images signieren, versehen Sie sie im Grunde mit einem Siegel, das besagt: „Das stammt von uns und wurde nicht manipuliert.“ Es handelt sich um eine einfache Überprüfung, die wesentlich dazu beiträgt, sicherzustellen, dass das, was Sie in der Produktion ausführen, genau das ist, was Sie erstellen wollten. 

Unsere Plattform, CodeSign Secure, integriert sich in Ihr CI / CD-Pipeline Das Signieren ist also keine separate Aufgabe, sondern Teil des Builds. Jedes Image, das erstellt und gepusht wird, kann automatisch signiert werden. Und bevor es bereitgestellt wird, kann die Signatur überprüft werden, um sicherzustellen, dass unterwegs nichts manipuliert wurde. 

Es geht darum, die Sicherheit auf Autopilot zu stellen. Mit unserer Plattform müssen Sie sich nicht zwischen Schnelligkeit und Sicherheit entscheiden. Sie bekommen beides. 

Signieren von Container-Images mit CodeSign Secure

Bevor Sie mit der Image-Signierung fortfahren, müssen Docker und CoSign (das CLI-Tool unseres CodeSign Secure) auf diesem Computer installiert werden. 

Bitte befolgen Sie die unten aufgeführten Schritte zur Installation von Cosign. 

CoSign installieren 

# binär 

wget „https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-linux-amd64“ 

mv cosign-linux-amd64 /usr/local/bin/cosign 

chmod +x /usr/local/bin/cosign

# U/min 

wget „https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-2.0.0.x86_64.rpm“

rpm -ivh cosign-2.0.0.x86_64.rpm

# dkpg 

wget „https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign_2.0.0_amd64.deb“

dpkg -i cosign_2.0.0_amd64.deb

Installieren und Einrichten von Python und Docker 

sudo apt-get installiere docker.io

sudo apt-get install python-is-python3

sudo apt python3-pip installieren

sudo apt-get install python3-docker

sudo apt-get -y installiere python3-openssl

sudo apt-get install -y dbus-user-session

sudo apt-get install -y docker-ce-rootless-extras

Wenn docker-ce-rootless-extras einen Fehler ausgibt, führen Sie die folgenden Schritte aus: 

sudo apt-get update

sudo apt-get install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg echo „deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable“ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get installiere docker-ce-rootless-extras

Nun müssen Sie sich in Ihrem Docker Hub-Konto anmelden, indem Sie den folgenden Befehl ausführen.

sudo Docker-Anmeldung 

Einrichten der Containersignatur 

  • Laden Sie die Container Signing Tools vom CodeSign Secure-Portal herunter.
  • Gehe zum Ordner SignImage.
  • Öffnen Sie die Datei „ec-signer.conf“ und aktualisieren Sie die Codesigning-URL, den Pfad Ihres SSL-Authentifizierungszertifikats und das Kennwort des Zertifikats.
    Containersignierung

    Anmerkungen: Das SSL-Authentifizierungszertifikat und das Passwort können über das CodeSignSecure-Portal generiert werden.

    Containersignierung
  • Terminal öffnen
  • Ausführen

    ./ec-signer –Projektname= –Bildname= –docker_username=

  • Sie werden aufgefordert, das Docker Hub-Passwort und die Root-Berechtigungen für den aktuellen Benutzer anzugeben
    Containersignierung
  • Sie können ein neues Signaturbild auf Ihrem Docker Hub-Konto sehen.
    Containersignierung

Überprüfen des Container-Images 

Durch die Überprüfung von Container-Images können Sie nur signierte Docker-Images bereitstellen und nicht signierte ablehnen. Zur Überprüfung der Container-Image-Signatur muss Kubernetes bereitgestellt werden. 

Kubernetes installieren 

Bitte folgen Sie dem folgenden Befehl, um Kubernetes zu installieren. 

curl -sfL https://get.k3s.io | sh – 

Erstellen von Kubernetes-Diensten 

Bevor wir ein Image in einer Kubernetes-Umgebung überprüfen können, müssen die folgenden Dienste im Kubernetes-Cluster bereitgestellt werden 

  • Image-Dienst überprüfen 
  • Webhook-Dienst zur Bildvalidierung 

Führen Sie die folgenden Schritte aus, um den Verify Image Service zu erstellen: 

  • Gehen Sie zum Verzeichnis ../VerifyImage/image-verifier.
  • Erstellen Sie ein Docker-Image mit dem Namen „verifyImage“ mithilfe der im Ordner vorhandenen Docker-Datei

    Beispielsweise:

    sudo docker build -t aryan34/demo:verifyImage

    wobei „aryan34“ der Docker-Benutzername und „demo“ der Name des Docker Hub-Repositorys ist.

  • Übertragen Sie dieses Image nun auf Ihr Docker Hub-Konto

    Beispielsweise:

    sudo docker image push aryan34/demo:verifyImage

    wobei „aryan34“ der Docker-Benutzername und „demo“ der Name des Docker Hub-Repositorys ist.

  • Öffnen Sie nun die Datei validator-deploy.yaml und aktualisieren Sie die folgenden Einstellungen
    1. Zertifikatsname
    2. server_url
    3. pfx_file_path
    4. pfx_file_passwd
    5. DOCKER_BENUTZERNAME
    6. DOCKER_PASSWORD
    7. Bild (HINWEIS: Behalten Sie den Bildnamen „verifyImage“ bei. Ändern Sie nur den Docker-Benutzernamen und den Repository-Namen.)
    Containersignierung
  • Bereitstellen des Image Verifier Service

    sudo kubectl apply -f validator-deploy.yaml

Führen Sie die folgenden Schritte aus, um den Image Validation Service zu erstellen: 

  • Gehen Sie zum Verzeichnis ../VerifyImage/validating-webhook.
  • Erstellen Sie mithilfe der im Ordner vorhandenen Docker-Datei ein Docker-Image mit dem Namen „image-validation-webhook“.

    Beispielsweise:

    sudo docker build -t aryan34/demo:image-validation-webhook

    Dabei ist „aryan34“ der Docker-Benutzername und „demo“ der Name des Docker Hub-Repositorys.

  • Übertragen Sie dieses Image nun auf Ihr Docker Hub-Konto

    Beispielsweise:

    sudo docker image push aryan34/demo:image-validation-webhook

    wobei „aryan34“ der Docker-Benutzername und „demo“ der Name des Docker Hub-Repositorys ist.

  • Stellen Sie jetzt die Webhook-Geheimnisse und die YAML-Konfigurationsdateien bereit.

    sudo kubectl apply -f webhook-secret.yaml

    sudo kubectl apply -f webhook-config.yaml

  • Öffnen Sie nun die Datei webhook-deploy.yaml und aktualisieren Sie die folgenden Einstellungen
    1. Bild (HINWEIS: Behalten Sie den Bildnamen „image-validation-webhook“ bei. Ändern Sie nur den Docker-Benutzernamen und den Repository-Namen.)
    Containersignierung
  • Stellen Sie den Webhook zur Bildvalidierung bereit

    sudo kubectl apply -f webhook-deploy.

  • Wenn die Dienste erfolgreich bereitgestellt wurden, führen wir den folgenden Befehl aus –

    sudo kubectl get pods -all-namespaces

Wir sollten die folgende Ausgabe erhalten – 

Containersignierung

Tests 

Wenn wir versuchen, ein nicht signiertes Container-Image bereitzustellen, schlägt die Bereitstellung fehl. Dank unserer Kubernetes-Verifizierungsdienste können wir nur signierte Images bereitstellen. 

Bereitstellen eines nicht signierten Images 

Wir müssen eine YAML-Datei für das unsignierte Bild erstellen 

Wir haben eine Datei demo-deployment-unsigned.yaml erstellt, um das nicht signierte Image aryan34/demo:notSigned bereitzustellen. 

Hier ist eine YAML-Beispieldatei. Denken Sie daran, den bereitgestellten Dienstnamen (Demo-Deployment-Unsigned), den Imagenamen und die Portnummer zu ändern. 

apiVersion: apps/v1 Art: Bereitstellung Metadaten: Name: Demo-Bereitstellung-unsigniert Labels: App: Demo-Spezifikation: Replikate: 1 # Anzahl der gewünschten Replikate Selektor: MatchLabels: App: Demo-Vorlage: Metadaten: Labels: App: Demo-Spezifikation: Container: - Name: Demo-Image: aryan34/demo:notSigned # unsigniertes Demo-Image Ports: - ContainerPort: 8997 # Port zum Freigeben

Um das nicht signierte Image mit Kubernetes bereitzustellen, führen Sie den folgenden Befehl aus. 

  sudo kubectl apply -f demo-deployment-unsigned.yaml 

Containersignierung

Bereitstellen eines signierten Images 

Hier ist eine YAML-Beispieldatei. Denken Sie daran, den Namen des bereitgestellten Dienstes (deployed-demo), den Imagenamen und die Portnummer zu ändern. 

apiVersion: apps/v1 Art: Bereitstellung Metadaten: Name: Demo-Bereitstellung Labels: App: Demo-Spezifikation: Replikate: 1 # Anzahl der gewünschten Replikate Selektor: MatchLabels: App: Demo-Vorlage: Metadaten: Labels: App: Demo-Spezifikation: Container: - Name: Demo-Image: aryan34/demo:new3 # signiertes Demo-Image Ports: - ContainerPort: 8999 # Port zum Freigeben

Um das signierte Image mit Kubernetes bereitzustellen, führen Sie den folgenden Befehl aus. 

    sudo kubectl apply -f demo-deployment.yaml 

Wenn Sie jetzt alle Pods überprüfen, sehen Sie, dass ein Demo-Bereitstellungsdienst erfolgreich ausgeführt wird. 

Containersignierung

CodeSign Secure + SBOM: Gewährleistung der Transparenz in der Lieferkette 

Zu wissen, was sich in Ihren Containern befindet, ist genauso wichtig wie zu wissen, wer sie erstellt hat. Hier kommen SBOMs (Software Bill of Materials) ins Spiel. Sie listen alle Komponenten Ihres Container-Images auf, sozusagen eine Nährwertkennzeichnung für Ihre Software. 

Mit CodeSign Secure können Sie Ihre SBOMs signieren und direkt an Ihre Container-Images anhängen. Das bedeutet, dass jeder, der Ihr Image abruft, sowohl das Image als auch das SBOM überprüfen kann, um sicherzustellen, dass sie echt und unberührt sind. 

Unsere Plattform unterstützt gängige SBOM-Formate wie SPDX, sodass Sie unabhängig von Ihren bereits verwendeten Tools abgesichert sind. Und das Beste daran? Sie können diese Prüfungen erzwingen. Wenn ein Image ohne signiertes SBOM angezeigt wird oder das SBOM nicht den Erwartungen entspricht, können Sie die Bereitstellung direkt blockieren. 

Kein SBOM? Keine Bereitstellung. Ganz einfach. 

Dadurch erhalten Sie Einblick in die laufenden Vorgänge und können Probleme erkennen, bevor sie später zu Sicherheitsproblemen werden. 

CodeSign Secure und Post-Quantum-Kryptographie 

Quantencomputing ist noch nicht Realität, aber wenn es sich durchsetzt, könnten viele aktuelle Verschlüsselungsmethoden in Schwierigkeiten geraten. Algorithmen wie RSA und ECC, die wir heute zum Signieren verwenden, haben gegen eine ausreichend leistungsstarke Quantenmaschine keine Chance. 

Deshalb ist unsere Plattform, CodeSign Secure, ist jetzt mit Unterstützung für LMS (Leighton-Micali Signature) verfügbar, einen der vom NIST empfohlenen Post-Quanten-Algorithmen. LMS ist so konzipiert, dass es auch dann noch leistungsstark bleibt, wenn Quantencomputer zu einer echten Bedrohung werden. 

Sie können unsere Plattform bereits jetzt mit LMS testen, um zu sehen, wie Post-Quantum-Signing in Ihre Pipeline passt. Es funktioniert mit HSMs, die LMS unterstützen, und lässt sich wie jeder andere Algorithmus integrieren, den CodeSign Secure verarbeitet. Keine besonderen Tricks erforderlich. 

Mit Blick auf die Zukunft werden wir die Unterstützung weiterer Post-Quanten-Algorithmen erweitern, sobald die Standards finalisiert sind, darunter auch die aus dem NIST PQC-Wettbewerb. Wenn also die Umstellung auf quantensichere Signierung notwendig wird, brauchen Sie sich keine Sorgen zu machen; wir kümmern uns um Sie.

Funktionen für Unternehmen

Wenn Sie Code Signing in großem Maßstab durchführen, benötigen Sie mehr als nur eine Signatur. Sie benötigen Kontrolle, Transparenz und die Flexibilität, sich an die Arbeitsweise Ihres Teams anzupassen. 

  • Rollenbasierte Zugriffskontrolle und -überwachung: Nicht jeder sollte jedes Image signieren können. Mit CodeSign Secure RBAC können Sie fein abgestufte Berechtigungen einrichten, sodass nur Ihre Release Engineers Produktionsbuilds freigeben können, während Entwickler Zugriff auf Umgebungen mit geringerem Risiko erhalten. Jede Signaturaktion wird automatisch protokolliert, sodass Sie einen vollständigen Prüfpfad darüber haben, wer was, wann und mit welchem ​​Schlüssel signiert hat. 
  • Zentrales Dashboard für die Sichtbarkeit der Signatur: Vorbei sind die Zeiten, in denen Sie Protokolle mehrerer CI-Jobs durchsuchen mussten. Das Dashboard unserer Plattform vereint alle Ihre Signaturvorgänge an einem Ort und zeigt Ihnen auf einen Blick, welche Bilder gültige Signaturen haben, welche Schlüssel sie verwendet haben und welche Überprüfungen fehlgeschlagen sind. Wenn etwas nicht stimmt, erkennen Sie es sofort und können durchklicken, um Details anzuzeigen. 
  • API-First-Architektur für benutzerdefinierte Integrationen: Möchten Sie unsere Plattform in Ihre eigenen Tools integrieren oder einen benutzerdefinierten Workflow automatisieren? Alle Funktionen von CodeSign Secure werden über eine gut dokumentierte REST-API bereitgestellt. So können Sie praktisch alles skripten, um einen Sign-and-Push-Schritt in Ihrem maßgeschneiderten CI-Tool auszulösen, interne Berichte zu erstellen oder die Plattform in Ihr bereits genutztes Sicherheitsticketsystem zu integrieren. 

Mit diesen Unternehmensfunktionen signiert CodeSign Secure nicht nur Ihre Bilder, sondern hilft Ihnen auch bei der Verwaltung und Überwachung jedes einzelnen Schritts des Prozesses. 

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Fazit 

Bedrohungen in der Lieferkette bleiben bestehen, und sie zu ignorieren ist keine Option. Doch die Abriegelung von Abläufen muss Sie nicht ausbremsen. Mit unserem CodeSign SecureSie erhalten ein Tool, das sich direkt in Ihre vorhandene Pipeline einfügt, dort, wo es darauf ankommt, für starke Sicherheit sorgt und Ihnen vom Build bis zur Bereitstellung die Kontrolle behält. 

Von der Signierung von Container-Images und SBOMs bis hin zu deren Verifizierung mit HSM-gestützten Schlüsseln und der Vorbereitung auf eine quantensichere Zukunft – unsere Plattform hilft Ihnen, alle Kästchen anzukreuzen, ohne Ihrem Team zusätzliche Reibungspunkte zu bereiten. 

Wenn Sie bereit sind, die Containersicherheit ernst zu nehmen, ohne Ihre Arbeitsabläufe zu verkomplizieren, probieren Sie unser CodeSign Secure aus.