Un registre privé peut servir à stocker des images de conteneur Linux pour vos applications dans une infrastructure interne et contrôlée (et potentiellement plus sécurisée).
Un conteneur Linux est une technologie qui permet de mettre en paquet et d'isoler des applications avec leur environnement d'exécution complet, c'est-à-dire tous les fichiers nécessaires à leur exécution. Les applications conteneurisées sont plus faciles à déplacer d'un environnement à un autre (développement, test, production, etc.).
Red Hat classé leader dans le rapport Magic Quadrant™ de Gartner® de 2023
Red Hat a obtenu la meilleure note pour sa capacité d'exécution et sa vision globale dans la catégorie Gestion des conteneurs du rapport Magic Quadrant de Gartner de 2023.
Dans cet article, je vais vous apprendre à créer un registre privé simple compatible SSL/TLS avec une posture de sécurité renforcée, qui peut être utilisé pour stocker des conteneurs de manière générale. Vous apprendrez aussi à l'intégrer à Red Hat OpenShift pour effectuer des déploiements OpenShift Container Platform (OCP) déconnectés. De plus, vous pourrez vous en servir lorsque l'interface OperatorHub n'aura pas accès à Internet.
Conditions
Nous aurons besoin des conditions suivantes.
- Nom de domaine complet (FQDN) : registry.rhbrlabs.com
- Système d'exploitation : Red Hat Enterprise Linux 8.6 et versions ultérieures
- SELinux : en application
- Firewalld : activé
- Registre : Podman
- Outils Apache
- Volume : 100 Go montés sur /data
Ce registre prend entièrement en charge les installations déconnectées d'OpenShift.
Installation
Pour optimiser la sécurité du système, une installation doit utiliser le chiffrement, en plus des fonctions de sécurité déjà disponibles dans Linux.
Créez les répertoires requis :
[root@registry ~]# mkdir -p /data/registry/{auth,certs,data}
Certificats
Générez des certificats pour le registre de conteneurs. Dans cet exemple, nous créons des certificats valables pendant 10 ans :
[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"
Le système d'exploitation doit approuver les certificats qui ont été générés.
Copiez le certificat généré dans le répertoire de confiance des ancres et exécutez update-ca-trust :
[root@registry ~]# cp /data/registry/certs/registry.rhbrlabs.com.crt /etc/pki/ca-trust/source/anchors/
[root@registry ~]# update-ca-trust
Comptes utilisateur
Pour contrôler l'accès à notre registre, nous devons créer des comptes utilisateur. Dans l'exemple suivant, nous créons un compte pour le registre d'utilisateurs.
Générez un fichier d'authentification pour le registre d'images :
[root@registry ~]# dnf -y install httpd-tools
[root@registry ~]# htpasswd -bBc /data/registry/auth/htpasswd registry redhat12345678
Secret HTTP
Outre le compte utilisateur, nous aurons besoin d'un secret pour augmenter la fiabilité de l'accès.
Générez un secret aléatoire :
[root@registry ~]# date | md5sum
10f207a4cbba51bf00755b5a50718966
Logiciel de registre
Une fois que vous disposez des données nécessaires, vous pouvez créer le registre.
Créez le registre de conteneurs à l'aide de l'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
La commande ci-dessus génère un message semblable à celui-ci :
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
Le registre est maintenant prêt à être utilisé. Cependant, nous avons besoin d'un moyen pour contrôler le démarrage et l'arrêt du service.
Contrôle du démarrage
Créez un fichier d'unité pour que votre registre lance automatiquement le conteneur au démarrage :
[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
Démarrez le conteneur :
[root@registry ~]# systemctl daemon-reload
[root@registry ~]# systemctl enable --now ocp-registry.service

Registre privé en cours d'exécution
Pare-feu
Parce que nous utilisons un pare-feu local, nous devons autoriser le port de service du registre.
Autorisez le port TCP 5000 sur Firewalld :
[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp
[root@registry ~]# firewall-cmd --reload
Vérification du fonctionnement du registre
Vérifions à présent l'accès à notre nouveau registre.
Assurez-vous que l'authentification et le protocole SSL/TLS de confiance fonctionnent :
[root@registry ~]# curl -u 'registry:redhat12345678' https://registry.rhbrlabs.com:5000/v2/_catalog
{"repositories":[]}
Intégration à Red Hat OpenShift
Si vous comptez utiliser ce registre avec OCP, créez un fichier au format base64 avec les informations d'authentification.
Générez un fichier temporaire avec les informations d'authentification pour les installations déconnectées d'OpenShift :
[root@registry ~]# cat <<EOF > ~/registry-secret.json "registry.rhbrlabs.com:5000": { "email": "registry@redhat.com", "auth": "$(echo -n 'registry:redhat12345678' | base64 -w0)" } EOF
Conclusion
Votre nouveau registre privé avec des capacités de sécurité supplémentaires est maintenant opérationnel. Un service de registre privé est un bon moyen de contrôler l'accès et de respecter des normes de sécurité plus strictes, car les services de registre public sont plus sujets aux problèmes de sécurité.
Dans cet article, je vous ai expliqué la manière de créer un registre à sécurité renforcée en partant de zéro. Malgré sa fonctionnalité, cette solution ne présente pas certaines fonctions avancées telles que la haute disponibilité, la mise en miroir, la mise en cache et la géoréplication, déjà présentes dans les solutions plus robustes.
Red Hat Quay intègre toutes ces fonctions, ainsi que l'analyse des vulnérabilités des conteneurs, la prise en charge du stockage en mode objet et la mise à l'échelle automatique.
La plateforme de registre de conteneurs Red Hat Quay permet de renforcer la sécurité en matière de stockage, de distribution et de gouvernance des conteneurs, ainsi que d'artefacts cloud-native sur tout type d'infrastructure. Elle est disponible en tant que composante autonome ou peut s'exécuter sur Red Hat OpenShift.
À propos de l'auteur
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.
Parcourir par canal
Automatisation
Les dernières nouveautés en matière d'automatisation informatique pour les technologies, les équipes et les environnements
Intelligence artificielle
Actualité sur les plateformes qui permettent aux clients d'exécuter des charges de travail d'IA sur tout type d'environnement
Cloud hybride ouvert
Découvrez comment créer un avenir flexible grâce au cloud hybride
Sécurité
Les dernières actualités sur la façon dont nous réduisons les risques dans tous les environnements et technologies
Edge computing
Actualité sur les plateformes qui simplifient les opérations en périphérie
Infrastructure
Les dernières nouveautés sur la plateforme Linux d'entreprise leader au monde
Applications
À l’intérieur de nos solutions aux défis d’application les plus difficiles
Programmes originaux
Histoires passionnantes de créateurs et de leaders de technologies d'entreprise
Produits
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Services cloud
- Voir tous les produits
Outils
- Formation et certification
- Mon compte
- Assistance client
- Ressources développeurs
- Rechercher un partenaire
- Red Hat Ecosystem Catalog
- Calculateur de valeur Red Hat
- Documentation
Essayer, acheter et vendre
Communication
- Contacter le service commercial
- Contactez notre service clientèle
- Contacter le service de formation
- Réseaux sociaux
À propos de Red Hat
Premier éditeur mondial de solutions Open Source pour les entreprises, nous fournissons des technologies Linux, cloud, de conteneurs et Kubernetes. Nous proposons des solutions stables qui aident les entreprises à jongler avec les divers environnements et plateformes, du cœur du datacenter à la périphérie du réseau.
Sélectionner une langue
Red Hat legal and privacy links
- À propos de Red Hat
- Carrières
- Événements
- Bureaux
- Contacter Red Hat
- Lire le blog Red Hat
- Diversité, équité et inclusion
- Cool Stuff Store
- Red Hat Summit