Utiliser des secrets d’Azure Key Vault dans Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Azure Key Vault permet aux développeurs de stocker et de gérer en toute sécurité les secrets tels que les clés API, les informations d’identification ou les certificats. Le service Azure Key Vault prend en charge deux types de conteneurs : les coffres et les pools de HSM (modules de sécurité matériels) managés. Les coffres prennent en charge le stockage de clés, de secrets et de certificats sauvegardés par HSM, tandis que les pools de HSM managés prennent uniquement en charge les clés sauvegardées par HSM.

Dans ce didacticiel, vous apprendrez à :

  • Créer un coffre Azure Key Vault avec Azure CLI
  • Ajouter un secret et configurer l’accès au coffre de clés Azure
  • Utiliser des secrets dans votre pipeline

Prérequis

Créer un Azure Key Vault

Connectez-vous au portail Azure, puis sélectionnez le bouton Cloud Shell dans le coin supérieur droit.

  1. Si vous avez plusieurs abonnements Azure associés à votre compte, utilisez la commande ci-dessous pour spécifier un abonnement par défaut. Vous pouvez utiliser az account list pour générer une liste de vos abonnements.

    az account set --subscription <your_subscription_name_or_ID>
    
  2. Définissez votre région Azure par défaut. Vous pouvez utiliser az account list-locations pour générer une liste de régions disponibles.

    az config set defaults.location=<your_region>
    

    Par exemple, cette commande sélectionne la région westus2 :

    az config set defaults.location=westus2
    
  3. Créez un groupe de ressources. Un groupe de ressources est un conteneur réunissant les ressources associées d’une solution Azure.

    az group create --name <your-resource-group>
    
  4. Créez un coffre de clés.

    az keyvault create \
      --name <your-key-vault> \
      --resource-group <your-resource-group>
    
  5. Créez un secret dans votre coffre de clés Azure.

    az keyvault secret set \
      --name "Password" \
      --value "mysecretpassword" \
      --vault-name <your-key-vault-name>
    

Création d’un projet

  1. Connectez-vous à votre organisation Azure DevOps.

  2. Si votre organisation ne compte aucun projet, sélectionnez Pour commencer, créez un projet. Sinon, sélectionnez Nouveau projet dans le coin supérieur droit.

Créer un référentiel

Nous allons utiliser YAML pour créer notre pipeline, mais nous devons d’abord créer un référentiel.

  1. Connectez-vous à votre organisation Azure DevOps et accédez à votre projet.

  2. Sélectionnez Repos, puis Initialiser pour initialiser un nouveau référentiel avec un fichier README.

    Capture d’écran montrant comment initialiser un référentiel.

Créer un pipeline

  1. Sélectionnez Pipelines, puis Nouveau pipeline.

  2. Sélectionnez Azure Repos Git (YAML).

    Capture d’écran montrant comment sélectionner le contrôle de code source Azure Repos.

  3. Sélectionnez le référentiel que vous avez créé à l’étape précédente.

  4. Sélectionnez le modèle Pipeline de démarrage.

  5. Le pipeline par défaut inclut quelques scripts qui exécutent des commandes echo. Ces scripts ne sont pas nécessaires, nous pouvons les supprimer. Votre nouveau fichier YAML doit ressembler à ceci :

    trigger:
    - main
    
    pool:
        vmImage: 'ubuntu-latest'
    
    steps:
    
  6. Sélectionnez Afficher l’assistant pour développer le volet d’assistance. Ce volet fournit une liste pratique et pouvant faire l’objet d’une recherche de tâches de pipeline.

    Capture d’écran montrant comment accéder au volet de l’assistant Tâche.

  7. Recherchez le coffre et sélectionnez la tâche Azure Key Vault.

    Capture d’écran montrant comment rechercher la tâche Azure Key Vault.

  8. Sélectionnez votre abonnement Azure, puis sélectionnez Autoriser. Sélectionnez votre coffre de clés dans le menu déroulant, puis sélectionnez Ajouter pour ajouter la tâche à votre pipeline YAML.

    Capture d’écran montrant comment configurer la tâche Azure Key Vault.

    Notes

    La fonctionnalité Rendre les secrets accessibles à l’ensemble du travail n’est pas prise en charge dans Azure DevOps Server 2019 et 2020.

  9. Votre fichier YAML doit ressembler à ce qui suit :

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: AzureKeyVault@2
      inputs:
        azureSubscription: 'Your-Azure-Subscription'
        KeyVaultName: 'Your-Key-Vault-Name'
        SecretsFilter: '*'
        RunAsPreJob: false
    
    - task: CmdLine@2
      inputs:
        script: 'echo $(Your-Secret-Name) > secret.txt'
    
    - task: CopyFiles@2
      inputs:
        Contents: secret.txt
        targetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'
    

N’enregistrez pas ou ne mettez pas votre pipeline en file d’attente pour l’instant. Nous devons d’abord accorder à notre pipeline les autorisations appropriées pour accéder à Azure Key Vault. Maintenez l’onglet de votre navigateur ouvert, nous reprendrons les étapes restantes une fois que nous aurons configuré les autorisations du coffre de clés.

Configurer des stratégies d’accès Azure Key Vault

Pour accéder à notre coffre Azure Key Vault, nous devons d’abord configurer un principal de service pour accorder l’accès à Azure Pipelines. Suivez ce guide pour créer votre principal de service, puis passez aux étapes suivantes de cette section.

  1. Accédez au portail Azure.

  2. Utilisez la barre de recherche pour rechercher le coffre de clés que vous avez créé précédemment.

    Capture d’écran montrant comment rechercher votre Azure Key Vault.

  3. Sous Paramètres, sélectionnez Stratégies d’accès.

  4. Sélectionnez Ajouter une stratégie d’accès pour en ajouter une nouvelle.

  5. Pour les autorisations de secret, sélectionnez Obtenir et Liste.

  6. Sélectionnez l’option permettant de sélectionner un principal de service et recherchez celui que vous avez créé au début de cette section. Un principal de sécurité est un objet qui représente un utilisateur, un groupe, un service ou une application demandant l’accès aux ressources Azure.

  7. Sélectionnez Ajouter pour créer la stratégie d’accès, puis sélectionnez Enregistrer lorsque vous avez terminé.

Notes

Les coffres de clés Azure qui utilisent le contrôle d’accès en fonction du rôle Azure (Azure RBAC) ne sont pas pris en charge.

Exécuter et examiner le pipeline

  1. Revenez à l’onglet précédent où nous nous sommes arrêtés.

  2. Sélectionnez Enregistrer, puis Enregistrer à nouveau pour valider vos modifications et déclencher le pipeline. Si vous êtes invité à autoriser l’accès du pipeline aux ressources Azure, sélectionnez Autoriser. Vous n’aurez qu’à approuver votre pipeline une seule fois.

  3. Sélectionnez la tâche CmdLine pour afficher les journaux.

    Capture d’écran montrant les journaux des tâches de ligne de commande.

  4. Revenez au résumé du pipeline et sélectionnez l’artefact publié.

    Capture d’écran montrant le résumé du pipeline et l’artefact publié.

  5. Sélectionnez l’artefact secret.txt pour l’ouvrir.

    Capture d’écran montrant comment ouvrir l’artefact publié.

  6. Le fichier texte doit contenir notre secret : mysecretpassword.

Avertissement

Ce didacticiel est destiné uniquement à des fins éducatives. Pour connaître les meilleures pratiques de sécurité et la façon de travailler en toute sécurité avec des secrets, consultez Gérer les secrets dans vos applications serveur avec Azure Key Vault.

Nettoyer les ressources

Suivez les étapes ci-dessous pour supprimer les ressources que vous avez créées :

  1. Si vous avez créé une organisation pour héberger votre projet, découvrez comment supprimer votre organisation ou comment supprimer votre projet.

  2. Toutes les ressources Azure créées pendant ce didacticiel sont hébergées sous un seul groupe de ressources PipelinesKeyVaultResourceGroup. Exécutez la commande suivante pour supprimer le groupe de ressources et toutes ses ressources.

    az group delete --name PipelinesKeyVaultResourceGroup
    

Questions fréquentes (FAQ)

Q : Je reçois l’erreur suivante : « L’utilisateur ou le groupe n’a pas l’autorisation de liste de secrets. ». Que dois-je faire ?

R : Si vous rencontrez une erreur indiquant que l’utilisateur ou le groupe n’a pas l’autorisation de liste des secrets sur un coffre de clés, exécutez les commandes suivantes pour autoriser votre application à accéder à la clé ou au secret dans Azure Key Vault :

$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;

Étapes suivantes