Partager via


Définir des variables secrètes

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

Les variables secrètes sont des variables chiffrées que vous pouvez utiliser dans des pipelines sans exposer leur valeur. Utilisez des variables secrètes pour les informations privées telles que les mots de passe, les ID et d’autres données d’identification que vous ne souhaitez pas exposer dans un pipeline. Les variables secrètes sont chiffrées au repos avec une clé RSA de 2 048 bits et elles sont disponibles sur l’agent pour que des tâches et des scripts puissent les utiliser.

Pourquoi les variables secrètes sont importantes : La protection des informations d’identification sensibles dans vos pipelines CI/CD est essentielle. En stockant les secrets en toute sécurité, vous empêchez un accès non autorisé aux ressources sensibles, réduisez le risque d’exposition des informations d’identification dans les journaux de build et maintenez la conformité aux bonnes pratiques de sécurité. Les variables secrètes garantissent que seuls les pipelines et tâches autorisés peuvent accéder aux données sensibles, en protégeant la posture de sécurité de votre organisation.

Les méthodes recommandées pour définir des variables secrètes consistent à utiliser l’interface utilisateur, un groupe de variables et un groupe de variables issu d’Azure Key Vault. Vous pouvez également définir des variables secrètes dans un script avec une commande de journalisation, mais cette méthode n’est pas recommandée, car toute personne qui peut accéder à votre pipeline peut également voir le secret.

Les variables secrètes que vous définissez dans l’interface utilisateur des paramètres de pipeline d’un pipeline sont étendues au pipeline où vous les définissez. Utilisez des groupes de variables pour partager des variables secrètes entre des pipelines.

Variable secrète dans l’interface utilisateur

Définissez des variables secrètes dans l’éditeur de pipeline lorsque vous modifiez un pipeline individuel. Chiffrez et créez un secret de variable de pipeline en sélectionnant l’icône de verrouillage.

Définissez les variables secrètes de la même façon pour YAML et Classic.

Pour définir des secrets dans l’interface web, effectuez ces étapes :

  1. Accédez à la page Pipelines, sélectionnez le pipeline approprié, puis sélectionnez Modifier.
  2. Recherchez les variables définies pour ce pipeline.
  3. Ajoutez ou mettez à jour la variable.
  4. Sélectionnez l’option permettant de conserver ce secret de valeur pour stocker la variable de manière chiffrée.
  5. Enregistrez le pipeline.

Les variables secrètes sont chiffrées au repos avec une clé RSA de 2 048 bits. Les secrets sont disponibles sur l’agent pour être utilisés par les tâches et les scripts. Faites attention aux personnes autorisées à modifier votre pipeline.

Important

Nous nous efforçons de masquer l’affichage des secrets dans la sortie d’Azure Pipelines, mais vous devez tout de même prendre des précautions. N’émettez jamais de secrets comme sortie. Certains systèmes d’exploitation journalisent les arguments de ligne de commande. Ne passez jamais de secrets en ligne de commande. Au lieu de cela, nous vous suggérons de mapper vos secrets dans des variables d’environnement.

Nous ne masquons jamais les sous-chaînes de secrets. Si, par exemple, « abc123 » est défini en tant que secret, « abc » n’est pas masqué dans les journaux. Cela permet d’éviter de masquer les secrets à un niveau trop granulaire, ce qui rendrait les journaux illisibles. Pour cette raison, les secrets ne doivent pas contenir de données structurées. Si, par exemple, « { "foo" : "bar" } » est défini comme secret, « bar » n’est pas masqué dans les journaux.

Contrairement à une variable normale, elles ne sont pas automatiquement déchiffrées en variables d’environnement pour les scripts. Vous devez mapper explicitement les variables secrètes.

Utiliser une variable secrète dans l’interface utilisateur

Pour référencer des variables secrètes dans des pipelines YAML, mappez-les en tant que variables d’environnement. Dans cet exemple, l’interface utilisateur définit deux variables secrètes et SecretOneSecretTwo. La valeur de SecretOne est foo, et la valeur de SecretTwo est bar.

steps:
- powershell: |
      Write-Host "My first secret variable is $env:FOO_ONE"
      $env:FOO_ONE -eq "foo"
  env:
    FOO_ONE: $(SecretOne)
- bash: |
    echo "My second secret variable: $FOO_TWO"
    if [ "$FOO_TWO" = "bar" ]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
  env:
    FOO_TWO: $(SecretTwo) 

Le pipeline génère :

My first secret variable is ***
True
My second secret variable: ***
Strings are equal.

Remarque

Azure Pipelines fait un effort pour masquer des secrets lors de l’émission de données dans des journaux de pipeline. Vous pouvez donc voir des variables supplémentaires et des données masquées dans des sorties et des journaux qui ne sont pas définis en tant que secrets.

Pour obtenir un exemple plus détaillé, consultez Définir des variables.

Définir une variable secrète dans un groupe de variables

Vous pouvez ajouter des secrets à un groupe de variables ou lier des secrets à partir d’un coffre de clés Azure existant.

Créer des groupes de variables

  1. Sélectionnez Pipelines>Bibliothèque>+ Groupe de variables.

    Capture d’écran de la page Bibliothèque avec le bouton Ajouter un groupe de variables mis en surbrillance.

  2. Entrez un nom et une description pour le groupe.

  3. Facultatif : déplacez le commutateur pour lier des secrets d’un coffre de clés Azure en tant que variables. Pour plus d’informations, consultez Utiliser des secrets Azure Key Vault.

  4. Entrez le nom et la valeur de chaque variable à inclure dans le groupe, en choisissant + Ajouter pour chacune d’elles.

  5. Pour sécuriser votre variable, choisissez l’icône de verrouillage à la fin de la ligne.

  6. Lorsque vous avez terminé d’ajouter des variables, sélectionnez Enregistrer.

    Capture d’écran du bouton Enregistrer dans la page de création de groupe de variables montrant le groupe de variables terminé prêt à être enregistré.

Les groupes de variables suivent le modèle de sécurité de la bibliothèque.

Vous pouvez créer des groupes de variables et les lier à un coffre de clés existant. Vous pouvez donc mapper les secrets stockés dans le coffre de clés. Seuls les noms des secrets sont mappés vers le groupe de variables, pas les valeurs des secrets. Le pipeline exécute ce lien vers le groupe de variables et extrait les dernières valeurs secrètes du coffre. Pour plus d’informations, consultez Lier un groupe de variables aux secrets dans Azure Key Vault.

Utiliser la tâche Azure Key Vault

Utilisez la tâche Azure Key Vault pour inclure des secrets dans votre pipeline. À l’aide de cette tâche, votre pipeline peut se connecter à votre coffre de clés et récupérer des secrets à utiliser comme variables de pipeline.

  1. Dans l’éditeur de pipeline, sélectionnez Afficher l’Assistant pour développer le panneau Assistant.

  2. Recherchez vault et sélectionnez la tâche Key Vault.

    Capture d’écran du panneau Assistant de tâches avec les résultats de recherche du coffre-fort affichant l’option de tâche Azure Key Vault.

Pour plus d’informations sur la tâche Key Vault, consultez Utiliser les secrets Azure Key Vault dans Azure Pipelines.

Définir une variable secrète dans un script à l’aide de commandes de journalisation

Utilisez la task.setvariable commande de journalisation pour définir des variables dans les scripts PowerShell et Bash. Cette méthode est le moyen le moins sécurisé d’utiliser des variables secrètes, mais peut être utile pour le débogage. Les méthodes recommandées pour définir des variables secrètes se trouvent dans l’interface utilisateur, dans un groupe de variables et dans un groupe de variables à partir de Key Vault.

Avertissement

Risque de sécurité : la définition de variables secrètes dans des scripts à l’aide de commandes de journalisation est intrinsèquement moins sécurisée. Toute personne ayant accès à votre définition de pipeline, aux journaux de génération ou au code source peut voir la commande de journalisation et exposer potentiellement le secret. Utilisez cette méthode uniquement à des fins de débogage dans des environnements sécurisés et approuvés. Préférez toujours la configuration basée sur l’interface utilisateur, les groupes de variables ou l’intégration d’Azure Key Vault pour les scénarios de production.

Pour définir une variable en tant que script à l’aide d’une commande de journalisation, passez l’indicateur issecret .

Lorsque la valeur de issecret est définie sur true, la valeur de la variable est enregistrée comme secret et masquée dans des journaux.

Remarque

Azure Pipelines fait un effort pour masquer des secrets lors de l’émission de données dans des journaux de pipeline. Vous pouvez donc voir des variables supplémentaires et des données masquées dans des sorties et des journaux qui ne sont pas définis en tant que secrets.

Définissez la variable secrète mySecretVal.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"

Obtenez la variable secrète mySecretVal.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
    echo $(mySecretVal)

Sortie de variable secrète dans Bash.

Capture d’écran de la sortie de la variable Bash.

Pour plus d’informations, consultez le paramètre et l’utilisation de variables dans des scripts.