- Entwicklung von Docker Content Trust: Behebung von Schwachstellen im Docker-Ökosystem
- Vorteile der Docker-Signierung: Verbesserung der Sicherheit
- Die Herausforderungen und Einschränkungen von Docker Content Trust verstehen
- Die Herausforderungen des Docker Content Trust meistern: Der Ansatz der EC
- Sichern von Docker-Images mit CodeSign Secure von EC
- Fazit
Docker ist eine Open-Source-Plattform, die Entwicklern hilft, die Anwendungsbereitstellung, -skalierung und -verwaltung zu automatisieren. Docker vereinfacht die Anwendungsverwaltung durch die Erstellung von Containern. Diese Container bündeln Code und Abhängigkeiten, sodass die Software oder Anwendung reibungslos und zuverlässig von einer Computerumgebung in eine andere läuft.
Docker-Container sind leichtgewichtig und eigenständig, d. h. sie können überall ausgeführt werden: auf Ihrem lokalen Rechner, in einem Rechenzentrum, in der Cloud oder in einer Mischung dieser Umgebungen. Diese Portabilität und Konsistenz machen Docker zu einem beliebten Tool für Entwickler und Betriebsteams (DevOps) zur Zusammenarbeit, Entwicklung, Auslieferung und Ausführung ihrer Anwendungen.
Auf der anderen Seite, Docker-Signierung ist eine Sicherheitsfunktion, die Docker bereitstellt und als Docker Content Trust (DCT) bekannt ist. Docker Content Trust verwendet digitale Signaturen um die Integrität und den Herausgeber aller Daten zu überprüfen, die von einem Register über einen beliebigen Kanal empfangen werden
DCT basiert auf Notary und The Update Framework (TUF), zwei Open-Source-Projekten zur sicheren Inhaltsverteilung. Wenn DCT aktiviert ist, signiert Docker Images automatisch bei Push-Vorgängen und verifiziert sie bei Pull-Vorgängen. Dies gewährleistet die Authentizität, Integrität und Aktualität Ihrer Inhalte.
Im Wesentlichen ermöglicht Ihnen die Docker-Signierung sicherzustellen, dass die in Ihren Containern verwendeten Images genau Ihren Erwartungen entsprechen. Dies verhindert Manipulationen oder Beschädigungen während der Übertragung und stellt sicher, dass Dritte die Images nicht manipuliert haben. Dies ist im Sicherheitskontext von entscheidender Bedeutung, da es das Hinzufügen von nicht autorisiertem oder bösartigem Code zu Ihren Containern verhindert.
Entwicklung von Docker Content Trust: Behebung von Schwachstellen im Docker-Ökosystem
Docker Content Trust (DCT), das die Docker-Signatur ermöglicht, wurde entwickelt, um der Notwendigkeit erhöhter Sicherheit im Container-Ökosystem gerecht zu werden. Die zunehmende Verwendung von Containern und Docker-Images in Entwicklungs- und Bereitstellungspipelines offenbarte potenzielle Schwachstellen im Ökosystem, die behoben werden mussten.
Hier sind einige der wichtigsten Schwachstellen, die zur Entwicklung der Docker-Signierung geführt haben:
-
Bildauthentizität
Vor der Einführung der Docker-Signatur war es sehr aufwendig, die Authentizität von Docker-Images zu bestimmen. Benutzer konnten versehentlich schädliche oder manipulierte Images herunterladen und verwenden, ohne es zu merken.
-
Bildintegrität
Ohne Docker-Signatur war es schwierig sicherzustellen, dass die Docker-Images während der Übertragung oder Speicherung nicht manipuliert wurden. Das bedeutete, dass das Original-Image, selbst wenn es sicher und legitim war, verändert und schädlich sein konnte.
-
Bildfrische
Ohne ein System zur Gewährleistung der Aktualität von Docker-Images könnten Benutzer veraltete und möglicherweise unsichere Images herunterladen und verwenden.
-
Supply Chain Sicherheit
Mit zunehmender Popularität von Docker und anderen Container-Technologien wurden sie auch in komplexeren und kritischeren Systemen eingesetzt. Dies machte die Sicherheit der Lieferkette – die Reihe von Prozessen, die mit dem Erstellen, Bereitstellen und Ausführen von Docker-Images verbunden sind – ein kritisches Problem. Ohne Docker-Signierung fehlte das Vertrauen in die Lieferkette.
-
Vertrauen bei der ersten Verwendung (TOFU):
Vor der Docker-Signierung hatte Docker keine Möglichkeit, die Integrität eines Images zu überprüfen oder festzustellen, ob es manipuliert worden war, wenn Sie es abgerufen haben.
Diese Schwachstellen können zu schwerwiegenden Sicherheitsverletzungen führen. Mit der Einführung von Docker Signing und Docker Content Trust hat Docker einen wichtigen Schritt zur Verbesserung der Sicherheit des Docker-Ökosystems und seiner Lieferketten gemacht. Benutzer können nun sicher sein, dass die von ihnen heruntergeladenen und verwendeten Docker-Images authentisch, unverändert und aktuell sind.
Vorteile der Docker-Signierung: Verbesserung der Sicherheit
Docker Content Trust (DCT), das die Docker-Signatur ermöglicht, bietet zahlreiche Vorteile, insbesondere hinsichtlich der Sicherheit und Integrität von Docker-Images. Einige der wichtigsten Vorteile der Docker-Signatur:
-
Bildauthentizität
Durch die Docker-Signierung wird sichergestellt, dass die aus einem Register abgerufenen Images authentisch sind. Das bedeutet, dass Sie darauf vertrauen können, dass die von Ihnen verwendeten Images von der Entität erstellt wurden, von der sie angeblich stammen.
-
Bildintegrität
Durch die Docker-Signierung wird sichergestellt, dass die Images während der Übertragung oder Speicherung in der Registrierung nicht manipuliert wurden. Dadurch wird sichergestellt, dass die von Ihnen verwendeten Docker-Images genau die Images sind, die ursprünglich in die Registrierung übertragen wurden.
-
Supply Chain Sicherheit
Die Docker-Signatur erhöht die Sicherheit Ihrer Lieferkette, indem sie sicherstellt, dass die in Ihren Bereitstellungspipelines verwendeten Images authentisch und unverfälscht sind. Dies ist besonders in Unternehmensumgebungen wichtig, in denen die Sicherheit der Lieferkette oberste Priorität hat.
-
Bildfrische
Durch die Docker-Signierung wird sichergestellt, dass Sie die neueste Version eines Docker-Images verwenden. Dies verhindert die Verwendung veralteter und potenziell unsicherer Images.
-
Compliance und Auditing
In Branchen, in denen Software bestimmten Standards entsprechen oder überprüfbar sein muss (z. B. im Finanz- oder Gesundheitswesen usw.), bietet die Docker-Signatur eine Methode, um sicherzustellen und nachzuweisen, dass die bereitgestellte Software nicht manipuliert wurde und genau das ist, was sie sein soll.
-
Verhindern Sie Man-in-the-Middle-Angriffe (MITM)
Docker-Signierung verhindert MITM-Angriffe. Ein MITM-Angriff Dabei leitet der Angreifer die Nachricht heimlich weiter und verändert sie möglicherweise zwischen zwei Parteien, die glauben, direkt miteinander zu sprechen.
Durch die Gewährleistung der Integrität, Authentizität und Aktualität von Docker-Images macht die Docker-Signierung das Docker-Ökosystem wesentlich sicherer. Dies ist von entscheidender Bedeutung, da Docker- und Containertechnologien in modernen Entwicklungs- und Bereitstellungspipelines weiterhin eine immer wichtigere Rolle spielen.
Die Herausforderungen und Einschränkungen von Docker Content Trust verstehen
Obwohl die Docker-Signierung bzw. Docker Content Trust (DCT) viele Vorteile bietet, gibt es auch einige Einschränkungen und potenzielle Nachteile, die berücksichtigt werden sollten:
-
Komplexität
Die Docker-Signatur umfasst die Verwaltung kryptografischer Schlüssel, was die Nutzung komplexer machen kann. Dazu gehört die sichere Generierung, Speicherung und Verwendung dieser Schlüssel. Für große Organisationen mit vielen Entwicklern kann dies einen erheblichen Mehraufwand bedeuten.
-
Betriebsaufwand
Die Verwendung der Docker-Signatur erfordert Änderungen an Ihren bestehenden Workflows, einschließlich der Art und Weise, wie Sie Images pushen und pullen. Dies kann zu zusätzlichem Betriebsaufwand führen, insbesondere während der ersten Einführungsphase.
-
Kompatibilitätsprobleme
Docker Content Trust ist nur manchmal mit allen Docker-Befehlen und -Optionen kompatibel, was seine Verwendbarkeit in bestimmten Kontexten einschränken kann.
-
Verlorene oder kompromittierte Schlüssel
Wenn Ihre privaten Schlüssel verloren gehen, verlieren auch alle damit signierten Bilder ihre Vertrauenswürdigkeit. Wenn Ihre Schlüssel kompromittiert werden, könnten Angreifer schädliche Bilder signieren, als wären sie Sie. Schlüsselverwaltung ist daher ein entscheidender Aspekt der Docker-Signierung.
-
Abhängigkeit vom Notarserver
Docker Content Trust ist auf einen Notary-Server angewiesen, um das Vertrauen zu verwalten. Diese Abhängigkeit schafft eine potenzielle Fehlerquelle in Ihrem Docker-Workflow.
-
Längere Bauzeit
Durch die Docker-Signierung können sich die Build-Zeiten geringfügig verlängern, da während des Build-Prozesses ein Schritt zum Signieren des Images hinzugefügt wird.
-
Mangelnde granulare Kontrolle
Docker Content Trust arbeitet auf der Ebene des Docker-Images, bietet jedoch keine Kontrolle oder Vertrauen auf der Ebene einzelner Dateien oder Ebenen innerhalb eines Images. Das bedeutet, dass Sie nicht die Integrität oder Authentizität einzelner Komponenten eines Images überprüfen können, sondern nur das Image als Ganzes.
Trotz dieser Nachteile bleibt die Docker-Signierung für viele Docker-Benutzer, insbesondere in Unternehmen oder anderen Hochsicherheitskontexten, ein wichtiges Sicherheitsmerkmal. Wie bei jedem Sicherheitstool gilt es, den Sicherheitsbedarf gegen den damit verbundenen Betriebsaufwand und die Komplexität abzuwägen.
Die Herausforderungen des Docker Content Trust meistern: Der Ansatz der EC
Um die Nachteile der Docker-Signierung zu überwinden, ergreifen wir mehrere Maßnahmen:
-
Vereinfachung der Schlüsselverwaltung
Wir nutzen sichere und automatisierte Schlüsselverwaltungslösungen, um die Komplexität und das Risiko der Verwaltung kryptografischer Schlüssel zu reduzieren. Dies kann Folgendes umfassen: Hardware-Sicherheitsmodule (HSMs) or Cloud-basierte Schlüsselverwaltungslösungen.
-
Schulung und Dokumentation
Wir bieten unseren Entwicklern umfassende Schulungen und eine klare, prägnante Dokumentation. Dies trägt dazu bei, den mit der Einführung der Docker-Signatur verbundenen Betriebsaufwand zu minimieren und stellt sicher, dass jeder den Prozess und seine Bedeutung versteht.
-
Regelmäßige Audits
Wir überprüfen unsere Prozesse regelmäßig, um sicherzustellen, dass Kompatibilitätsprobleme schnell behoben werden. Dadurch wird sichergestellt, dass die Docker-Signatur mit minimalen Unterbrechungen vollständig in unsere Arbeitsabläufe integriert werden kann.
-
Robuster Schlüsselwiederherstellungsprozess
Wir implementieren einen robusten Schlüsselwiederherstellungsprozess für den Fall verlorener Schlüssel. Darüber hinaus begrenzen wir die potenziellen Auswirkungen kompromittierter Schlüssel, indem wir, soweit möglich, unterschiedliche Schlüssel für unterschiedliche Bilder oder Bildgruppen verwenden.
-
Failover-Mechanismen
Wir richten Failover-Mechanismen ein, um sicherzustellen, dass unsere Docker-Workflows auch dann weiter funktionieren, wenn der Notarserver nicht verfügbar ist. Dies kann die Einrichtung eines sekundären Notarservers oder die Nutzung der Offline-Signaturfunktionen von Docker umfassen.
-
Optimieren der Build-Zeiten
Wir optimieren unseren Build-Prozess kontinuierlich, um eine durch die Docker-Signierung bedingte Erhöhung der Build-Zeit auszugleichen. Dies kann die Parallelisierung von Builds oder die Optimierung anderer Teile des Build-Prozesses umfassen.
-
Verwenden zusätzlicher Sicherheitsmaßnahmen
Um das Vertrauen auf Image-Ebene zu ergänzen, das Docker Content Trust bietet, verwenden wir andere Sicherheitsmaßnahmen, wie z. B. das Scannen nach Schwachstellen in Docker-Images, das Überprüfen der Integrität und Authentizität von Basis-Images und die Einhaltung bewährter Methoden für die Dockerfile- und Image-Erstellung.
Durch diese Maßnahmen können wir die Nachteile der Docker-Signierung erheblich abmildern und ihre Sicherheitsvorteile voll ausschöpfen.
Sichern von Docker-Images mit CodeSign Secure von EC
Für die Signierung von Docker-Images gelten bestimmte Voraussetzungen:
-
Cosign installieren
# binary 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 # rpm 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
- pip install docker
- sudo apt-get install -y docker-ce-rootless-extras
- sudo apt-get install -y dbus-user-session
- Docker-Login
Der nächste Schritt besteht darin, den Code von GitHub auszuchecken:

Führen Sie anschließend die folgenden Schritte aus:
- Terminal öffnen.
-
Ausführen –
./ec-signer –project_name=<certificate name> --image_name=<target container> --docker_username=<your docker username> --docker_passwd=<your docker password>
Kubernetes muss bereitgestellt werden, um das Container-Image zu überprüfen, was von werden auf dieser Seite erläutert.
Stellen Sie nun die folgenden beiden Dienste bereit:
-
Bildvalidierungs-Webhook
- Checken Sie den Code von GitHub aus und gehen Sie dann zum Ordner – ../VerifyImage/validating-webhook
- Terminal öffnen
-
Ausführen –
sudo kubectl apply -f webhook-secret.yaml -
Ausführen –
sudo kubectl apply -f webhook-deploy.yaml -
Ausführen –
sudo kubectl apply -f webhook-config.yaml
-
Bild überprüfen

- Checken Sie den Code von GitHub aus und gehen Sie dann zum Ordner – ../VerifyImage/image-verifier
- Terminal öffnen
-
Ausführen –
sudo kubectl apply -f validator-deploy.yaml
Nachdem die Bilder erfolgreich bereitgestellt wurden, führen Sie den folgenden Befehl aus:
sudo kubectl get pods –all-namespaces

Hinweis: Um die Codesigning-Server-URL, den Docker-Benutzernamen und das Docker-Passwort zu aktualisieren, bearbeiten Sie validator-deploy.yaml unter ../VerifyImage/image-verifier.
Schauen Sie sich auch die Demo von Docker Signing mit unserem an CodeSign Secure von EC hier.
Fazit
Zusammenfassend lässt sich sagen, dass Docker-Signaturen ein leistungsstarkes Tool zur Verbesserung der Sicherheit von Docker-Workflows sind. Sie sind ein entscheidender Aspekt von Docker, insbesondere in Hochsicherheits- oder Unternehmenskontexten. Wie bei jedem Tool ist es wichtig, die Einschränkungen zu verstehen und zu berücksichtigen. Die Vorteile in Bezug auf mehr Vertrauen und Sicherheit sind jedoch erheblich.
- Entwicklung von Docker Content Trust: Behebung von Schwachstellen im Docker-Ökosystem
- Vorteile der Docker-Signierung: Verbesserung der Sicherheit
- Die Herausforderungen und Einschränkungen von Docker Content Trust verstehen
- Die Herausforderungen des Docker Content Trust meistern: Der Ansatz der EC
- Sichern von Docker-Images mit CodeSign Secure von EC
- Fazit
