Tutoriel : Utiliser le fournisseur Azure Key Vault pour le pilote CSI du magasin de secrets dans un cluster Azure Kubernetes Service (AKS)

Découvrez comment vous connecter à Azure Key Vault à l’aide du pilote CSI dans un cluster Azure Kubernetes Service (AKS) à l’aide du Connecteur de services. Dans ce tutoriel, vous allez effectuer les tâches suivantes :

  • Créez un cluster AKS et un Azure Key Vault.
  • Créez une connexion entre le cluster AKS et Azure Key Vault avec Connecteur de services.
  • Créez un CRD SecretProviderClass et un et pod consommant le fournisseur CSI pour tester la connexion.
  • Supprimer des ressources.

Important

Service Connect (Connexion de service) au sein d’AKS est actuellement en préversion. Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Avertissement

Microsoft vous recommande d’utiliser le flux d’authentification le plus sécurisé disponible. Le flux d'authentification décrit dans cette procédure demande un degré de confiance très élevé dans l'application et comporte des risques qui ne sont pas présents dans d'autres flux. Vous ne devez utiliser ce flux que si d’autres flux plus sécurisés, tels que les identités managées, ne sont pas viables.

Prérequis

Créer des ressources Azure

  1. Créez un groupe de ressources pour ce tutoriel.

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. Créez un cluster AKS avec la commande suivante ou faites référence au didacticiel. Il s’agit du cluster dans lequel nous créons la connexion de service et la définition de pod, et où nous déployons l’exemple d’application.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  3. Connectez-vous au cluster avec la commande suivante.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. Créez un Azure Key Vault avec la commande suivante ou en vous appuyant sur le didacticiel. Il s’agit du service cible qui est connecté au cluster AKS et à partir duquel le pilote CSI synchronise les secrets.

    az keyvault create \
        --resource-group MyResourceGroup \  
        --name MyKeyVault \
        --location EastUS
    
  5. Créez un secret dans key Vault avec la commande suivante.

    az keyvault secret set \
        --vault-name MyKeyVault \
        --name ExampleSecret \
        --value MyAKSExampleSecret
    

Créer une connexion de service dans AKS avec Connecteur de services (préversion)

Créez une connexion de service entre un cluster AKS et un Azure Key Vault à l’aide du portail Azure ou de l’interface de ligne de commande Azure.

  1. Ouvrez votre service Kubernetes dans le portail Azure et sélectionnez Connecteur de services dans le menu de gauche.

  2. Sélectionnez Créer et renseignez les paramètres comme indiqué ci-dessous. Laissez aux autres paramètres leurs valeurs par défaut.

    Setting Option Description
    Espace de noms Kubernetes default L’espace de noms où vous avez besoin de la connexion dans le cluster.
    Type de service Key Vault (activer CSI) Choisissez Key Vault comme type de service cible et cochez l’option pour activer CSI.
    Nom de connexion keyvault_conn Utilisez le nom de la connexion fourni par le connecteur de services ou choisissez votre propre nom de connexion.
    Abonnement <MySubscription> Abonnement pour votre service cible Azure Key Vault.
    Key vault <MyKeyVault> Le coffre de clés cible auquel vous souhaitez vous connecter.
    Type de client Python Langage de code ou infrastructure que vous utilisez pour vous connecter au service cible.
  3. Une fois la connexion créée, la page Connecteur de services affiche des informations sur la nouvelle connexion.

    Capture d’écran du portail Azure, affichant des ressources Kubernetes créées par Connecteur de services.

Tester la connexion

  1. Clonez l’exemple de dépôt :

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. Accédez à l’exemple de dossier du référentiel pour Azure Key Vault :

    cd serviceconnector-aks-samples/azure-keyvault-csi-provider
    
  3. Remplacez les espaces réservés dans le fichier secret_provider_class.yaml du dossier azure-keyvault-csi-provider.

    • Remplacez <AZURE_KEYVAULT_NAME> par le nom du coffre de clés que nous avons créé et connecté. Vous pouvez obtenir la valeur à partir du portail Azure de Connecteur de services.
    • Remplacez <AZURE_KEYVAULT_TENANTID> par l’ID de locataire du coffre de clés. Vous pouvez obtenir la valeur à partir du portail Azure de Connecteur de services.
    • Remplacez <AZURE_KEYVAULT_CLIENTID> par l’ID client d’identité du module complémentaire azureKeyvaultSecretsProvider. Vous pouvez obtenir la valeur à partir du portail Azure de Connecteur de services.
    • Remplacez <KEYVAULT_SECRET_NAME> par le nom du secret du coffre de clés que nous avons créé, par exemple ExampleSecret
  4. Déployez les ressources Kubernetes sur votre cluster avec la commande kubectl apply. Installez kubectl localement à l’aide de la commande az aks install-cli si elle n’est pas installée.

    1. Déployez le CRD SecretProviderClass.
    kubectl apply -f secret_provider_class.yaml
    
    1. Déployez le pod. La commande crée un pod nommé sc-demo-keyvault-csi dans l’espace de noms par défaut de votre cluster AKS.
    kubectl apply -f pod.yaml
    
  5. Vérifiez que le déploiement réussit en consultant le pod avec kubectl.

    kubectl get pod/sc-demo-keyvault-csi
    
  6. Une fois le pod démarré, le contenu monté au niveau du chemin d’accès du volume spécifié dans le YAML de votre déploiement est disponible. Utilisez les commandes suivantes pour valider vos secrets et imprimer un secret de test.

    • Afficher les secrets conservés dans le magasin de secrets à l’aide de la commande suivante.
    kubectl exec sc-demo-keyvault-csi -- ls /mnt/secrets-store/
    
    • Afficher un secret du magasin à l’aide de la commande suivante. Cet exemple de commande montre le secret de test ExampleSecret.
    kubectl exec sc-demo-keyvault-csi -- cat /mnt/secrets-store/ExampleSecret
    

Nettoyer les ressources

Si vous n’avez pas besoin de réutiliser les ressources que vous avez créées dans ce tutoriel, supprimez toutes les ressources que vous avez créées en supprimant votre groupe de ressources.

az group delete \
    --resource-group MyResourceGroup

Étapes suivantes

Lisez les articles suivants pour en savoir plus sur les concepts du Connecteur de services et sur la façon dont il aide AKS à se connecter aux services.