Partager via


Tutoriel : Méthodes de déploiement sécurisé pour l’extension de registre connecté

Ces tutoriels couvrent divers scénarios de déploiement de l’extension de registre connecté dans un cluster Kubernetes avec Arc. Une fois l’extension de registre connecté installée, vous pouvez synchroniser des images de votre registre cloud vers des emplacements locaux ou distants.

Avant d’entrer dans le vif du sujet, prenez un moment pour découvrir le fonctionnement conceptuel de Kubernetes avec Arc.

Le registre connecté peut être déployé de manière sécurisée à l’aide de diverses méthodes de chiffrement. Pour garantir la réussite du déploiement, suivez le guide de démarrage rapide afin de passer en revue les prérequis et les autres informations pertinentes. Par défaut, le registre connecté est configuré avec HTTPS, le mode ReadOnly, la distribution d’approbation et le service Cert Manager. Vous pouvez ajouter d’autres personnalisations et dépendances selon les besoins, en fonction de votre scénario.

Qu’est-ce que le service Cert Manager ?

Le service Cert Manager du registre connecté est un service qui gère les certificats TLS pour l’extension de registre connecté dans un cluster Kubernetes avec Azure Arc. Il garantit une communication sécurisée entre le registre connecté et les autres composants en gérant la création, le renouvellement et la distribution des certificats. Vous pouvez installer ce service dans le cadre du déploiement de registre connecté, ou vous pouvez utiliser un service Cert Manager existant s’il est déjà installé sur votre cluster.

Cert-Manager est un module complémentaire Kubernetes open source, qui automatise la gestion et l’émission de certificats TLS provenant de diverses sources. Il gère le cycle de vie des certificats émis par les pools d’autorités de certification créés à l’aide du service d’autorité de certification, en vérifiant leur validité et leur renouvellement avant leur expiration.

Qu’est-ce que la distribution d’approbation ?

La distribution d’approbation de registre connecté fait référence au processus de distribution d’approbation sécurisée entre le service de registre connecté et les clients Kubernetes au sein d’un cluster. Pour ce faire, une autorité de certification est utilisée, par exemple cert-manager, pour signer les certificats TLS, qui sont ensuite distribués au service de registre et aux clients. Cela permet de vérifier que toutes les entités peuvent s’authentifier mutuellement de manière sécurisée, ce qui garantit ainsi un environnement sécurisé et approuvé au sein du cluster Kubernetes.

Prérequis

Pour terminer ce tutoriel, vous avez besoin de ce qui suit :

Déployer l’extension de registre connecté à l’aide de votre cert-manager préinstallé

Dans ce tutoriel, nous montrons comment utiliser un service cert-manager préinstallé sur le cluster. Cette configuration vous donne le contrôle de la gestion des certificats, ce qui vous permet de déployer l’extension de registre connecté avec chiffrement en suivant les étapes fournies :

Exécutez la commande az-k8s-extension-create dans le guide de démarrage rapide, puis définissez les paramètres cert-manager.enabled=true et cert-manager.install=false pour déterminer si le service cert-manager est installé et activé :

    az k8s-extension create --cluster-name myarck8scluster \ 
    --cluster-type connectedClusters \ 
    --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \ 
    --config service.clusterIP=192.100.100.1 \ 
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json

Déployer l’extension de registre connecté à l’aide de la fonctionnalité BYOC (apportez votre propre certificat)

Dans ce tutoriel, nous montrons comment utiliser votre propre certificat (BYOC) sur le cluster. La fonctionnalité BYOC vous permet d’utiliser votre propre paire certificat public/clé privée, ce qui vous donne le contrôle de la gestion des certificats. Cette configuration vous permet de déployer l’extension de registre connecté avec chiffrement en suivant les étapes fournies :

Remarque

La fonctionnalité BYOC s’applique aux clients qui apportent leur propre certificat, lequel est déjà approuvé par leurs nœuds Kubernetes. Il n’est pas recommandé de mettre à jour manuellement les nœuds pour approuver les certificats.

Suivez le guide de démarrage rapide, puis ajoutez le certificat public et la clé privée sous forme de paire composée d’une variable de type chaîne et de la valeur correspondante.

  1. Créez un certificat SSL autosigné avec l’IP de service de registre connecté en tant que SAN
  mkdir /certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/mycert.key -x509 -days 365 -out /certs/mycert.crt -addext "subjectAltName = IP:<service IP>"
  1. Obtenez les chaînes codées au format base64 de ces fichiers de certificat
export TLS_CRT=$(cat mycert.crt | base64 -w0) 
export TLS_KEY=$(cat mycert.key | base64 -w0) 
  1. Exemple de fichier de paramètres protégés avec un secret au format JSON :

Remarque

La paire certificat public/clé privée doit être codée au format base64, puis ajoutée au fichier de paramètres protégés.

    {
    "connectionString": "[connection string here]",
    "tls.crt": $TLS_CRT,
    "tls.key": $TLS_KEY,
    "tls.cacrt": $TLS_CRT
    } 
  1. Vous pouvez désormais déployer l’extension de registre connecté avec HTTPS (chiffrement TLS) en utilisant la paire certificat public/clé privée, et en affectant aux variables les valeurs cert-manager.enabled=false et cert-manager.install=false. Avec ces paramètres, cert-manager n’est pas installé ou activé, car la paire certificat public/clé privée est utilisée à la place pour le chiffrement.

  2. Exécutez la commande az-k8s-extension-create pour le déploiement après la modification du fichier de paramètres protégés :

    az k8s-extension create --cluster-name myarck8scluster \
    --cluster-type connectedClusters \  
    --extension-type  Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \
    --config service.clusterIP=192.100.100.1 \
    --config cert-manager.enabled=false \
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json 
    

Déployer le registre connecté avec la gestion des secrets Kubernetes

Dans ce tutoriel, nous montrons comment utiliser un secret Kubernetes sur votre cluster. Le secret Kubernetes vous permet de gérer de manière sécurisée l’accès autorisé entre les pods du cluster. Cette configuration vous permet de déployer l’extension de registre connecté avec chiffrement en suivant les étapes fournies :

Suivez le guide de démarrage rapide, puis ajoutez le secret TLS Kubernetes sous forme de paire composée d’une variable de type chaîne et de la valeur correspondante.

  1. Créez un certificat SSL autosigné avec l’IP de service de registre connecté en tant que SAN
mkdir /certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/mycert.key -x509 -days 365 -out /certs/mycert.crt -addext "subjectAltName = IP:<service IP>"
  1. Obtenez les chaînes codées au format base64 de ces fichiers de certificat
export TLS_CRT=$(cat mycert.crt | base64 -w0) 
export TLS_KEY=$(cat mycert.key | base64 -w0) 
  1. Créer le secret k8s
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: k8secret
  type: kubernetes.io/tls
data:
  ca.crt: $TLS_CRT
  tls.crt: $TLS_CRT
  tls.key: $TLS_KEY
EOF
  1. Exemple de fichier de paramètres protégés avec un secret au format JSON :

        { 
        "connectionString": "[connection string here]",
        "tls.secret": “k8secret” 
        } 
    

Vous pouvez désormais déployer l’extension de registre connecté avec HTTPS (chiffrement TLS) à l’aide de la gestion des secrets Kubernetes en configurant des variables ayant la valeur cert-manager.enabled=false et cert-manager.install=false. Avec ces paramètres, cert-manager n’est pas installé ou activé, car le secret Kubernetes est utilisé à la place pour le chiffrement.

  1. Exécutez la commande az-k8s-extension-create pour le déploiement après la modification du fichier de paramètres protégés :

    az k8s-extension create --cluster-name myarck8scluster \
    --cluster-type connectedClusters \  
    --extension-type  Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \
    --config service.clusterIP=192.100.100.1 \
    --config cert-manager.enabled=false \
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json 
    

Déployer le registre connecté à l’aide de votre propre distribution d’approbation, et désactiver la distribution d’approbation par défaut du registre connecté

Dans ce tutoriel, nous montrons comment configurer la distribution d’approbation sur le cluster. Quand vous utilisez votre propre secret Kubernetes, ou vos propres paires certificat public/clé privée, vous pouvez déployer l’extension de registre connecté avec le chiffrement TLS, votre distribution d’approbation inhérente, et rejeter la distribution d’approbation par défaut du registre connecté. Cette configuration vous permet de déployer l’extension de registre connecté avec chiffrement en suivant les étapes fournies :

  1. Suivez le guide de démarrage rapide pour ajouter le secret Kubernetes, ou le certificat public et la clé privée sous forme de paire composée d’une variable et de la valeur correspondante, dans le fichier de paramètres protégés au format JSON.

  2. Exécutez la commande az-k8s-extension-create dans le guide de démarrage rapide, puis définissez les paramètres trustDistribution.enabled=false, trustDistribution.skipNodeSelector=false pour rejeter la distribution d’approbation du registre connecté :

    az k8s-extension create --cluster-name myarck8scluster \ 
    --cluster-type connectedClusters \ 
    --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \ 
    --config service.clusterIP=192.100.100.1 \
    --config trustDistribution.enabled=false \ 
    --config cert-manager.enabled=false \
    --config cert-manager.install=false \ 
    --config-protected-file <JSON file path> 
    

Avec ces paramètres, cert-manager n’est pas installé ou activé. De plus, la distribution d’approbation du registre connecté n’est pas appliquée. À la place, vous utilisez la distribution d’approbation fournie par le cluster pour établir l’approbation entre le registre connecté et les nœuds clients.

Nettoyer les ressources

En supprimant l’extension de registre connecté déployée, vous supprimez les pods du registre connecté et les paramètres de configuration correspondants.

  1. Exécutez la commande az-k8s-extension-delete pour supprimer l’extension de registre connecté :

    az k8s-extension delete --name myconnectedregistry 
    --cluster-name myarcakscluster \ 
    --resource-group myresourcegroup \ 
    --cluster-type connectedClusters
    
  2. Exécutez la commande az acr connected-registry delete pour supprimer le registre connecté :

    az acr connected-registry delete --registry myacrregistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup
    

En supprimant l’extension de registre connecté et le registre connecté, vous supprimez toutes les ressources et configurations associées.

Étapes suivantes