Utilisez des secrets Azure Key Vault dans votre pipeline

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

Les coffres de clés Azure permettent aux développeurs de stocker et de gérer en toute sécurité des informations sensibles telles que les mots de passe, les clés API et les certificats. Cet article vous explique comment interroger et utiliser des secrets à partir d’un coffre de clés Azure dans votre pipeline.

Prérequis

Produit Exigences
Azure DevOps - Un projet Azure DevOps .
- Autorisations :
    - Pour accorder l’accès à tous les pipelines du projet : vous devez être membre du groupe Administrateurs de projet.
    - Pour créer des connexions de service : vous devez avoir le rôle Administrateur ou Créateur pour les connexions de service.
Lien avec GitHub - Un compte GitHub et un dépôt GitHub.
- Connexion de service GitHub pour autoriser Azure Pipelines.
Microsoft Azure - Un abonnement Azure.

Créer un coffre de clés

  1. Connectez-vous au Portail Azure, puis sélectionnez Créer une ressource.

  2. Sous Key Vault, sélectionnez Créer pour créer un coffre de clés Azure.

  3. Sélectionnez votre abonnement dans le menu déroulant, puis sélectionnez un groupe de ressources existant ou créez-en un. Entrez un nom de coffre de clés, sélectionnez une région, choisissez un niveau tarifaire, puis sélectionnez Suivant si vous souhaitez configurer des propriétés supplémentaires. Sinon, sélectionnez Vérifier + créer pour conserver les paramètres par défaut.

  4. Une fois le déploiement effectué, sélectionnez Accéder à la ressource.

Configurer l’authentification

Créer une identité managée attribuée par l’utilisateur

  1. Connectez-vous au Portail Azure, puis recherchez le service Identités managées dans la barre de recherche.

  2. Sélectionnez Créer, puis renseignez les champs obligatoires comme suit :

    • Abonnement : sélectionnez votre abonnement dans le menu déroulant.
    • Groupe de ressources : sélectionnez un groupe de ressources existant ou créez-en un.
    • Région : sélectionnez une région dans le menu déroulant.
    • Nom : veuillez saisir un nom pour l'identité gérée que vous avez attribuée à l'utilisateur.
  3. Sélectionnez Réviser + créer lorsque vous avez terminé.

  4. Une fois le déploiement terminé, sélectionnez Accéder à la ressource, puis copiez l’abonnement et l’ID client, vous en aurez besoin dans les étapes suivantes.

  5. Accédez auxpropriétés des paramètres> et copiez l’ID de locataire de votre identité managée pour l’utiliser ultérieurement.

Définir des stratégies d’accès Key Vault

  1. Accédez à Portail Azure et utilisez la barre de recherche pour rechercher le coffre de clés que vous avez créé précédemment.

  2. Sélectionnez Stratégies d’accès, puis sélectionnez Créer pour ajouter une nouvelle stratégie.

  3. Sous Autorisations secrètes, cochez les cases Obtenir et Liste .

  4. Sélectionnez Suivant, puis collez l’ID client de l’identité managée que vous avez créée précédemment dans la barre de recherche.

  5. Sélectionnez votre identité managée, sélectionnez Suivant, puis Suivant une fois de plus.

  6. Passez en revue votre nouvelle stratégie, puis sélectionnez Créer lorsque vous avez terminé.

Créer une connexion de service

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

  2. SélectionnezConnexions du service> de projet, puis nouvelle connexion de service.

  3. Sélectionnez Azure Resource Manager, puis sélectionnez Suivant.

  4. Sous Type d’identité, sélectionnez Identité managée dans le menu déroulant.

  5. Pour l’étape 1 : Détails de l’identité managée, renseignez les champs comme suit :

    • Abonnement pour l’identité managée : sélectionnez l’abonnement qui contient votre identité managée.

    • Groupe de ressources pour l’identité managée : sélectionnez le groupe de ressources où votre identité managée est hébergée.

    • Identité managée : sélectionnez votre identité managée dans le menu déroulant.

  6. Pour l’étape 2 : Azure Étendue, complétez les champs comme suit :

    • Niveau d’étendue pour la connexion de service : sélectionnez Abonnement.

    • Abonnement pour la connexion de service : sélectionnez l’abonnement auquel votre identité managée accède.

    • Groupe de ressources pour la connexion de service : (facultatif) Spécifiez cette option si vous souhaitez restreindre l’accès à un groupe de ressources spécifique.

  7. Pour l’étape 3 : Détails de la connexion de service :

    • Nom de la connexion de service : indiquez un nom pour votre connexion de service.

    • Référence de gestion des services : (facultatif) Incluez des informations de contexte à partir d’une base de données ITSM.

    • Description : (facultatif) Ajoutez une description.

  8. Sous Sécurité, cochez la case Accorder l’autorisation d’accès à tous les pipelines pour autoriser tous les pipelines à utiliser cette connexion de service. Si vous laissez cette case désactivée, vous devez accorder manuellement l’accès pour chaque pipeline.

  9. Sélectionnez Enregistrer pour valider et créer la connexion de service.

    Capture d’écran montrant comment créer une connexion de service ARM d’identité managée.

Interrogez et utilisez des secrets dans votre pipeline

À l’aide de la tâche Azure Key Vault, vous pouvez désormais interroger et récupérer des secrets à partir d’Azure Key Vault et les utiliser dans les tâches suivantes dans votre pipeline. Notez que les secrets doivent être mappés explicitement aux variables d’environnement, comme illustré dans l’exemple suivant :

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzureKeyVault@2                                # Download Azure Key Vault secrets.
  inputs:
    azureSubscription: 'SERVICE_CONNECTION_NAME'       # Name of the service connection. Alias: ConnectedServiceName.
    KeyVaultName: 'KEY_VAULT_NAME'                     # Name of the key vault.
    SecretsFilter: '*'                                 # Secrets filter. Default: *.

- bash: |
    echo "Secret Found! $MY_MAPPED_ENV_VAR"        
  env:
    MY_MAPPED_ENV_VAR: $(SECRET_NAME)

La sortie de la dernière étape bash doit ressembler à ceci :

Secret Found! ***

Remarque

Pour interroger plusieurs secrets à partir de votre coffre de clés Azure, utilisez l’entrée SecretsFilter et fournissez une liste séparée par des virgules de noms de secrets, par exemple : « secret1, secret2 ».