Eine Private Registry kann hilfreich sein, um Linux Container Images für Ihre Anwendungen in einer internen, kontrollierten (und potenziell sichereren) Infrastruktur zu speichern.
Linux Container sind Technologien, mit denen Sie Anwendungen mit ihrer gesamten Runtime-Umgebung – d. h. mit allen für den Betrieb notwendigen Dateien – paketieren und isolieren können. Damit kann die enthaltene Anwendung leicht zwischen Umgebungen (Entwicklung, Test, Produktion usw.) verschoben werden.
Red Hat ausgezeichnet als Leader im 2023 Gartner® Magic Quadrant™
Red Hat wurde im Gartner 2023 Magic Quadrant für Container Management hinsichtlich der Ausführungsfähigkeit und der umfassenden Vision bestplatziert.
In diesem Artikel zeige ich Ihnen, wie Sie eine einfache SSL/TLS-fähige Private Registry mit einem stärkeren Sicherheitsstatus erstellen, die zum Speichern von Containern im Allgemeinen verwendet werden kann, und wie Sie sie in Red Hat OpenShift integrieren, um getrennte OCP-Bereitstellungen durchführen zu können. Sie kann auch für Fälle verwendet werden, in denen der OperatorHub keinen Internetzugang hat.
Voraussetzungen:
Wir benötigen folgende Voraussetzungen:
- FQDN: registry.rhbrlabs.com
- BS: Red Hat Enterprise Linux 8.6+
- SELinux: Erzwingend
- Firewalld: Aktiviert
- Registry: Podman
- Apache-Tools
- Volumen: 100 GB bereitgestellt auf /data
Diese Registry unterstützt getrennte Installationen von OpenShift vollständig.
Installation
Eine Installation zur Maximierung der Systemsicherheit besteht aus der Verwendung von Kryptographie zusätzlich zu den Sicherheitsfunktionen, die bereits in Linux verfügbar sind.
Erstellen Sie die erforderlichen Verzeichnisse:
[root@registry ~]# mkdir -p /data/registry/{auth,certs,data}
Zertifikate
Generieren Sie Zertifikate für die Container-Registry. In diesem Beispiel erstellen wir Zertifikate, die 10 Jahre gültig sind:
[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 \ -keyout /data/registry/certs/registry.rhbrlabs.com.key -x509 -days 3650 \ -out /data/registry/certs/registry.rhbrlabs.com.crt \ -subj "/C=US/ST=NorthCarolina/L=Raleigh/O=Red Hat/OU=Engineering/CN=registry.rhbrlabs.com" \ -addext "subjectAltName = DNS:registry.rhbrlabs.com"
Das Betriebssystem muss den generierten Zertifikaten vertrauen.
Kopieren Sie das generierte Zertifikat in das vertrauenswürdige Verzeichnis bzw. führen Sie update-ca-trust: aus.
[root@registry ~]# cp /data/registry/certs/registry.rhbrlabs.com.crt /etc/pki/ca-trust/source/anchors/
[root@registry ~]# update-ca-trust
Benutzerkonten
Um den Zugriff auf unsere Registry zu steuern, müssen wir Benutzerkonten erstellen. Im folgenden Beispiel erstellen wir ein Konto für die Benutzer-Registry.
Generieren Sie eine Authentifizierungsdatei für die Image-Registry:
[root@registry ~]# dnf -y install httpd-tools
[root@registry ~]# htpasswd -bBc /data/registry/auth/htpasswd registry redhat12345678
HTTP-Secret
Zusätzlich zum Benutzerkonto benötigen wir ein Secret, um die Zuverlässigkeit des Zugriffs zu erhöhen.
Generieren Sie ein zufälliges Secret:
[root@registry ~]# date | md5sum
10f207a4cbba51bf00755b5a50718966
Registry-Software
Sobald die erforderlichen Daten vorliegen, kann die Registry erstellt werden.
Erstellen Sie die Container-Registry mit dem Image docker.io/library/registry:2:
[root@registry ~]# dnf -y install podman
[root@registry ~]# podman create --name ocp-registry --net host -p 5000:5000 \ -v /data/registry/data:/var/lib/registry:z -v /data/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry" \ -e "REGISTRY_HTTP_SECRET=10f207a4cbba51bf00755b5a50718966" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /data/registry/certs:/certs:z \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.rhbrlabs.com.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/registry.rhbrlabs.com.key docker.io/library/registry:2
Der oben aufgeführte Befehl erzeugt eine Meldung wie diese:
Trying to pull docker.io/library/registry:2... Getting image source signatures Copying blob fd4a5435f342 done Copying blob 213ec9aee27d done Copying blob 4583459ba037 done Copying blob b136d5c19b1d done Copying blob 6f6a6c5733af done Copying config dcb3d42c17 done Writing manifest to image destination Storing signatures Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use 22633f37262a4ab2d64fc8beb44bb80618b11802974fb2f45d31d98db3cf14e8
Die Registry ist nun einsatzbereit. Wir benötigen jedoch eine Möglichkeit, das Starten und Stoppen des Service zu steuern.
Startup-Steuerung
Erstellen Sie eine UNIT-Datei für Ihre Registry, um den Container beim Booten automatisch zu starten:
[root@registry ~]# cat /etc/systemd/system/ocp-registry.service
[Unit] Description=OCP Registry [Service] Restart=always ExecStart=/usr/bin/podman start -a ocp-registry ExecStop=/usr/bin/podman stop -t 10 ocp-registry [Install] WantedBy=network-online.target
Starten Sie den Container:
[root@registry ~]# systemctl daemon-reload
[root@registry ~]# systemctl enable --now ocp-registry.service
Ausführung der Private Registry
Firewall
Da wir eine lokale Firewall verwenden, müssen wir den Registry Service Port autorisieren.
Lassen Sie TCP-Port 5000 auf Firewalld zu:
[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp
[root@registry ~]# firewall-cmd --reload
Überprüfen Sie, ob die Registry funktioniert
Überprüfen wir nun den Zugriff auf unsere neue Registry.
Prüfen Sie, ob die Authentifizierung und die SSL/TLS-Vertrauenswürdigkeit funktionieren:
[root@registry ~]# curl -u 'registry:redhat12345678' https://registry.rhbrlabs.com:5000/v2/_catalog
{"repositories":[]}
Integration von Red Hat OpenShift
Wenn Sie diese Registry zusammen mit OCP verwenden möchten, erstellen Sie eine Datei im base64-Format mit den Authentifizierungsinformationen.
Generieren Sie eine temporäre Datei mit den Authentifizierungsinformationen für getrennte OpenShift-Installationen:
[root@registry ~]# cat <<EOF > ~/registry-secret.json "registry.rhbrlabs.com:5000": { "email": "registry@redhat.com", "auth": "$(echo -n 'registry:redhat12345678' | base64 -w0)" } EOF
Zusammenfassung
Ihre neue Private Registry mit zusätzlichen Sicherheitsfunktionen ist jetzt aktiv. Der Service einer Private Registry ist eine gute Möglichkeit, den Zugriff zu kontrollieren und strengere Sicherheitsstandards zu erfüllen, da öffentliche Registry-Services anfälliger für Sicherheitsprobleme sind.
In diesem Beitrag habe ich Ihnen eine Anleitung zum Erstellen einer sicherheitsverstärkten Registry von Grund auf gegeben. Obwohl es sich um eine funktionale Lösung handelt, fehlen erweiterte Features wie Hochverfügbarkeit, Mirroring, Caching und Georeplikation, die in robusteren Lösungen bereits vorhanden sind.
Diese Funktionen sowie das Scannen von Container-Schwachstellen, die Unterstützung von Objekt-Storage und die automatische Skalierung sind in Red Hat Quay integriert.
Die Container Registry Plattform Red Hat Quay bietet sicheres Speichern, Verteilen und Governance von Containern und cloudnativen Artefakten in beliebigen Infrastrukturen. Die Plattform ist als Standalone-Komponente verfügbar und kann auf Red Hat OpenShift ausgeführt werden.
Über den Autor
Andre Rocha is a Consultant at Red Hat focused on OpenStack, OpenShift, RHEL and other Red Hat products. He has been at Red Hat since 2019, previously working as DevOps and SysAdmin for private companies.
Nach Thema durchsuchen
Automatisierung
Das Neueste zum Thema IT-Automatisierung für Technologien, Teams und Umgebungen
Künstliche Intelligenz
Erfahren Sie das Neueste von den Plattformen, die es Kunden ermöglichen, KI-Workloads beliebig auszuführen
Open Hybrid Cloud
Erfahren Sie, wie wir eine flexiblere Zukunft mit Hybrid Clouds schaffen.
Sicherheit
Erfahren Sie, wie wir Risiken in verschiedenen Umgebungen und Technologien reduzieren
Edge Computing
Erfahren Sie das Neueste von den Plattformen, die die Operations am Edge vereinfachen
Infrastruktur
Erfahren Sie das Neueste von der weltweit führenden Linux-Plattform für Unternehmen
Anwendungen
Entdecken Sie unsere Lösungen für komplexe Herausforderungen bei Anwendungen
Original Shows
Interessantes von den Experten, die die Technologien in Unternehmen mitgestalten
Produkte
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Cloud-Services
- Alle Produkte anzeigen
Tools
- Training & Zertifizierung
- Eigenes Konto
- Kundensupport
- Für Entwickler
- Partner finden
- Red Hat Ecosystem Catalog
- Mehrwert von Red Hat berechnen
- Dokumentation
Testen, kaufen und verkaufen
Kommunizieren
Über Red Hat
Als weltweit größter Anbieter von Open-Source-Software-Lösungen für Unternehmen stellen wir Linux-, Cloud-, Container- und Kubernetes-Technologien bereit. Wir bieten robuste Lösungen, die es Unternehmen erleichtern, plattform- und umgebungsübergreifend zu arbeiten – vom Rechenzentrum bis zum Netzwerkrand.
Wählen Sie eine Sprache
Red Hat legal and privacy links
- Über Red Hat
- Jobs bei Red Hat
- Veranstaltungen
- Standorte
- Red Hat kontaktieren
- Red Hat Blog
- Diversität, Gleichberechtigung und Inklusion
- Cool Stuff Store
- Red Hat Summit