Abonnez-vous à notre blog

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
Private registry running

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.

Read full bio

Parcourir par canal

automation icon

Automatisation

Les dernières nouveautés en matière d'automatisation informatique pour les technologies, les équipes et les environnements

AI icon

Intelligence artificielle

Actualité sur les plateformes qui permettent aux clients d'exécuter des charges de travail d'IA sur tout type d'environnement

open hybrid cloud icon

Cloud hybride ouvert

Découvrez comment créer un avenir flexible grâce au cloud hybride

security icon

Sécurité

Les dernières actualités sur la façon dont nous réduisons les risques dans tous les environnements et technologies

edge icon

Edge computing

Actualité sur les plateformes qui simplifient les opérations en périphérie

Infrastructure icon

Infrastructure

Les dernières nouveautés sur la plateforme Linux d'entreprise leader au monde

application development icon

Applications

À l’intérieur de nos solutions aux défis d’application les plus difficiles

Original series icon

Programmes originaux

Histoires passionnantes de créateurs et de leaders de technologies d'entreprise