Docker Registries speichern und verteilen Images und bilden somit eine zentrale Komponente in Container-basierten Umgebungen. Ohne adäquate Sicherheitsmaßnahmen können unbefugte Zugriffe, Manipulationen oder Datenlecks entstehen. Dieses Tutorial erklärt praxisnah, wie Docker Registries durch Authentifizierung, TLS und Zugriffsrechte sicher betrieben werden können.
Authentifizierung (Auth)
Authentifizierung sorgt dafür, dass nur autorisierte Benutzer Images pushen oder pullen können. Die offizielle Docker Registry unterstützt einfache Basic Auth oder Integration mit Drittanbietersystemen.
Basic Auth einrichten
# htpasswd installieren (Debian/Ubuntu)
sudo apt-get install apache2-utils
Benutzer anlegen
htpasswd -Bc /auth/registry.password user1
Docker Registry starten mit Auth
docker run -d -p 5000:5000
--restart=always
-v /auth:/auth
-e "REGISTRY_AUTH=htpasswd"
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password"
registry:2
- Nur Benutzer in der Passwort-Datei haben Zugriff
- Push/Pull Befehle erfordern Login:
docker login localhost:5000 - CI/CD-Pipelines können Credentials sicher über Umgebungsvariablen nutzen
Transport Layer Security (TLS)
TLS verschlüsselt die Kommunikation zwischen Docker Clients und Registry, schützt vor Man-in-the-Middle-Angriffen und sorgt für Integrität der übertragenen Images.
Selbstsigniertes Zertifikat erstellen
mkdir -p certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt
Registry mit TLS starten
docker run -d -p 5000:5000
--restart=always
-v /auth:/auth
-v /certs:/certs
-e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt"
-e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key"
registry:2
- Clients müssen das Zertifikat vertrauen oder im Docker Daemon hinzufügen
- Sichere Kommunikation für Pull/Push gewährleistet
- Vermeidet Klartext-Passwörter über das Netzwerk
Zugriffsrechte und Rollen
Neben Auth und TLS ist eine feinere Zugriffskontrolle wichtig. Harbor und Nexus bieten Role-Based Access Control (RBAC), um Benutzerrechten granular zuzuweisen.
Beispiele für Rechtevergabe in Harbor
- Projekte erstellen: Admin-Rechte erforderlich
- Images pushen: Developer oder Maintainer-Rolle
- Pull-Berechtigung: Reader-Rolle
- Audit-Logs für Änderungen und Zugriffe aktivieren
CI/CD-sichere Tokens
# Harbor API Token erzeugen
curl -u user1:password -X POST https://harbor.example.com/api/v2.0/users/1/robotaccounts -d '{"name":"ci-token"}'
- Roboter-Accounts erlauben automatisierten Zugriff ohne Passwort
- Tokens können zeitlich begrenzt oder projektgebunden sein
- Push/Pull im CI/CD-Workflow absichern
Best Practices für Registry Security
- Authentifizierung obligatorisch machen, niemals öffentliche Registry ohne Auth
- TLS zwingend aktivieren, selbst bei internen Netzwerken
- RBAC nutzen, um Rechte nach Minimalprinzip zu vergeben
- Regelmäßige Security-Scans der Registry und gespeicherter Images
- Audit-Logs aktivieren und überwachen
- Roboter-Accounts für CI/CD mit begrenztem Scope verwenden
- Backups der Registry-Daten regelmäßig erstellen
Praxisbeispiele
Registry starten mit Auth und TLS
docker run -d -p 5000:5000
--restart=always
-v /auth:/auth
-v /certs:/certs
-e "REGISTRY_AUTH=htpasswd"
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password"
-e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt"
-e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key"
registry:2
Image push mit Auth
docker login localhost:5000
docker tag myapp localhost:5000/myapp:1.0
docker push localhost:5000/myapp:1.0
Roboter-Account für CI/CD
curl -u user1:password
-X POST https://harbor.example.com/api/v2.0/projects/1/robots
-d '{"name":"ci-build","access":[{"resource":"repository","action":"push","effect":"allow"}]}'
Zusammenfassung
Docker Registry Security basiert auf drei Säulen: Authentifizierung, TLS und Zugriffsrechte. Auth sichert den Benutzerzugang, TLS verschlüsselt die Kommunikation und RBAC oder Roboter-Accounts steuern den Zugriff granular. Die konsequente Umsetzung dieser Maßnahmen erhöht die Sicherheit, reduziert Risiken für Produktionsumgebungen und ermöglicht vertrauenswürdige, kontrollierte Container-Deployments.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











