Définir des variables secrètes
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Les variables secrètes sont des variables chiffrées que vous pouvez utiliser dans des pipelines sans exposer leur valeur. Les variables secrètes peuvent être utilisées pour des informations privées comme des mots de passe, des 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.
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 définies dans l’interface utilisateur des paramètres d’un pipeline sont limitées au pipeline où elles sont définies. Vous pouvez utiliser des groupes de variables pour partager des variables secrètes entre des pipelines.
Variable secrète dans l’interface utilisateur
Vous pouvez définir des variables secrètes dans l’éditeur de pipeline lorsque vous modifiez un pipeline individuel. Vous chiffrez et créez un secret de variable de pipeline en sélectionnant l’icône de verrouillage.
Vous définissez les variables secrètes de la même façon pour un pipeline YAML et classique.
Pour définir des secrets dans l’interface web, effectuez ces étapes :
- Accédez à la page Pipelines, sélectionnez le pipeline approprié, puis sélectionnez Modifier.
- Recherchez les variables définies pour ce pipeline.
- Ajoutez ou mettez à jour la variable.
- Sélectionnez l’option permettant de conserver ce secret de valeur pour stocker la variable de manière chiffrée.
- 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
Vous devez mapper une variable secrète en tant que variables d’environnement pour les référencer dans les pipelines YAML. Dans cet exemple, deux variables secrètes sont définies dans l’interface utilisateur, SecretOne
et SecretTwo
. 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
Sélectionnez Pipelines>Bibliothèque>+ Groupe de variables.
Entrez un nom et une description pour le groupe.
Facultatif : Activez le bouton bascule pour lier des secrets à partir d’un coffre de clés Azure en tant que variables. Pour plus d’informations, consultez Utiliser des secrets Azure Key Vault.
Entrez le nom et la valeur de chaque variable à inclure dans le groupe, en choisissant + Ajouter pour chacune d’elles.
Pour sécuriser votre variable, choisissez l’icône en forme de « verrou » à la fin de la ligne.
Lorsque vous avez terminé d’ajouter des variables, sélectionnez Enregistrer.
Les groupes de variables suivent le modèle de sécurité de la bibliothèque.
Lier des secrets à partir d’un coffre de clés Azure Key Vault
Vous pouvez créer des groupes de variables et les lier à un coffre de clés Azure existant, ce qui vous permet de 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. Les exécutions du pipeline qui sont liées au groupe variable récupèrent les dernières valeurs secrètes dans le coffre-fort. Pour plus d’informations, consultez Lier un groupe de variables aux secrets dans Azure Key Vault.
Utiliser la tâche Azure Key Vault
Vous pouvez utiliser la tâche Azure Key Vault pour inclure des secrets dans votre pipeline. Cette tâche permet au pipeline de se connecter à votre coffre de clés Azure et de récupérer des secrets à utiliser en tant que variables de pipeline.
Dans l’éditeur de pipeline, sélectionnez Afficher l’Assistant pour développer le panneau Assistant.
Recherchez
vault
et sélectionnez la tâche Azure Key Vault.
L’option Rendre les secrets accessibles à l’ensemble du travail n’est actuellement pas prise en charge dans Azure DevOps Server 2019 et 2020.
Pour plus d’informations sur la tâche Azure Key Vault, consultez Utiliser des secrets Azure Key Vault dans Azure Pipelines.
Définir une variable secrète dans un script avec des commandes de journalisation
Vous pouvez utiliser la commande de journalisation task.setvariable
pour définir des variables dans des 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 consistent à utiliser l’interface utilisateur, un groupe de variables et un groupe de variables issu d’Azure Key Vault.
Pour définir une variable en tant que script avec une commande de journalisation, vous devez passer 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.
Découvrez-en plus sur la définition et l’utilisation de variables dans des scripts.