Consommer un Azure Key Vault depuis vos pipelines Azure DevOps

Consommer un Azure Key Vault depuis vos pipelines Azure DevOps

La sécurité n'est pas une option, même dans vos pipelines, voyons comment s'appuyer sur le Key Vault Azure pour manager vos données sensibles.

Scénario

Imaginons ensemble une solution simple où j'ai besoin, depuis un pipeline Azure, d'appeler une API externe utilisant un compte utilisateur.

Pour maximiser la sécurité et afin de partager cette information avec différentes applications nous souhaitons stocker ces éléments dans un Azure Key Vault.

Configuration de l'accès au Key Vault depuis Azure DevOps

Depuis Azure DevOps, nous allons utiliser la fonctionnalité des groupes de variables ou Library dans son interface en anglais:

Depuis cette page, nous allons donc pourvoir ajouter un nouveau groupe, tel que :

Avant de pouvoir lier ce groupe avec un Key Vault, il faudra s'assurer des permissions nécessaire pour le compte utilisé par Azure DevOps.

💡
Voyons ensemble sur le prochain chapitre comment réaliser cette action.

Ajouter les permisssions nécessaires

Pour pouvoir consommer le Key Vault, l'identité utilisée par Azure DevOps devra avoir des permissions permettant la récupération des informations stockées dans ce service.

Comme vous pouvez le voir, sur la capture d'écran suivante, en cas de soucis vous aurez cette alerte :

Pour corriger ce point il suffit d'ajouter au compte ces deux rôles RBAC BuiltIn :

  • Key Vault Reader

  • Key Vault Secrets User

Lorsque les permissions seront bien positionnées vous n'aurez plus d'alertes :

Ajouter les secrets

Maintenant que les permissions sont correctement possitionnées et que vos secrets sont présents dans le Key Vault, vous allez pouvoir les ajouter dans votre groupe de variables en cliquant sur le bouton "Add":

Sélectionner vos secrets puis valider:

Pensez à sauvegarder vos changements en cliquant sur e bouton "Save" présent en haut de page:

Utilisation du groupe de variables

Maintenant que tout est configuré il ne reste plus qu'à voir comment consommer ces secrets depuis un pipeline Azure DevOps.

Le nom du groupe de variable sera à mettre à jour, ici nous allons déclarer l'usage de notre groupe nommé "DEV" :

variables:
- group: "DEV"

Et voici l'exemple complet :

trigger:
- main

pool:
  vmImage: ubuntu-latest
variables:
- group: "DEV"

steps:
- script: |
    echo "$(UsernameAPI):$(PasswordAPI)" >> $(Build.ArtifactStagingDirectory)/secrets.txt
  displayName: 'Create a file with secrets'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/secrets.txt'
    ArtifactName: 'secrets'
    publishLocation: 'Container'

Lors de la première exécution; vous aurez à valider des permissions visible via cette alerte:

Validez les deux permissions requises; pour accéder au service connexion et au groupe de variables:

Une fois exécuté, vous devriez avoir un fichier publié:

Dans la zone de stockage des artifacts:

Et celui-ci contient les secrets d'Azure Key Vault:

💡
Ce pipeline est un démonstateur qui ne doit dans aucun cas être utiliser dans un contexte autre que du test.

Did you find this article valuable?

Support Antoine LOIZEAU by becoming a sponsor. Any amount is appreciated!