Les fondamentaux de la sécurité d’Azure Bicep
Mark Johnson
13 décembre 2022
0 minutes de lectureCet article a été rédigé par l’ambassadeur Snyk Mark Johnson (@tazmainiandevil). Découvrez Snyk de l’intérieur en devenant ambassadeur Snyk.
Azure Bicep gagne chaque jour en popularité et devient rapidement le remplaçant des modèles Azure Resource Manager (ARM). Dans cet article, je vais passer en revue quelques fondamentaux de sécurité liés à l’utilisation de Bicep. Si vous ne connaissez pas Bicep, je vous recommande de consulter la documentation Microsoft Learn pour en savoir plus.
Ne stockez pas de secrets dans le code source
Nous savons tous qu’il faut éviter de stocker des secrets dans le code source, mais il est très facile d’en laisser accidentellement dans des fichiers, surtout lorsque vous testez vos configurations Bicep en local.
Voici quelques moyens d’éviter de valider des secrets dans le code source :
Transmettez les paramètres en ligne de commande.
Utilisez un fichier JSON de paramètres ignoré par le système de contrôle de version. Par exemple, ajoutez-le à votre fichier
.gitignoresi vous utilisez Git.
Sécurisez les entrées
Transmettre des paramètres de l’extérieur, c’est une chose, mais comment s’assurer que les secrets sont protégés et ne s’affichent pas dans les sorties ? Bicep fournit un décorateur @secure pour les paramètres de type String et Object. Par exemple :
Attention aux sorties
Ajouter des sorties à vos modules Bicep est très utile, mais il y a quelques points à prendre en compte. Si vous définissez une sortie qui ressemble à un secret, Bicep vous avertit que vous exposez potentiellement des secrets. La sortie suivante, qui contient une chaîne de connexion à un compte de stockage, déclencherait cet avertissement :
Cependant, si la valeur était d’abord affectée à une variable avant d’être attribuée à la sortie, aucun avertissement ne s’afficherait et il serait facile de ne pas le remarquer.
Voyons maintenant ce qui se passe lorsqu’une ressource de compte de stockage est déployée sur Azure avec la configuration suivante :
Toutes les sorties définies dans Bicep sont visibles sous Déploiements pour le groupe de ressources dans lequel les ressources ont été déployées :

En examinant les sorties de StorageDeploy, nous constatons que la chaîne de connexion affiche la clé du compte en texte brut :

Cela signifie que toute personne autorisée à consulter les ressources dans le portail Azure peut voir ces sorties. Pour maintenir une bonne posture de sécurité, il est recommandé de ne pas renvoyer de secrets dans les sorties Bicep.
Espérons que Bicep prendra en charge à l’avenir le décorateur @secure pour les sorties, afin de permettre de renvoyer des secrets en toute sécurité.
Secrets provenant de ressources
Si renvoyer des secrets depuis Bicep pose problème, comment récupérer des secrets d’un module à l’autre ? Une option consiste à accéder à une ressource existante à l’aide du mot-clé existing. Par exemple :
Cette chaîne de connexion pourrait ensuite être utilisée comme entrée pour une autre ressource.
Secrets provenant de Key Vault
Récupérer des ressources existantes est une façon d’obtenir des secrets, mais il est également possible d’utiliser Key Vault pour les récupérer.
Remarque : assurez-vous que la configuration d’accès à Key Vault autorise l’accès via « Azure Resource Manager pour le déploiement de modèles ».

Les coffres Key Vault sont accessibles comme dans la section précédente, à l’aide du mot-clé existing. Notez toutefois que la méthode getSecret ne peut être utilisée que pour affecter une valeur à un paramètre de module doté du décorateur @secure :
Analyser la sécurité de Bicep
L’analyse de l’infrastructure as code (IaC) gagne en popularité, et il est réjouissant de constater que l’on cherche à détecter les problèmes de sécurité le plus tôt possible. Snyk propose une CLI gratuite qui permet d’effectuer des analyses IaC en local, selon des normes de sécurité et de conformité. Elle ne prend pas directement en charge le format Bicep, mais permet d’analyser les modèles ARM vers lesquels Bicep est compilé.
Pour compiler Bicep en ARM, vous devez avoir installé la CLI Bicep. Pour commencer à utiliser la CLI Snyk, créez un compte gratuit, puis installez la CLI Snyk avec npm. Si Node.js est installé en local, vous pouvez l’installer en exécutant la commande suivante :
Une fois l’installation et la configuration terminées, vous pouvez exécuter la commande suivante :
Cette commande génère un fichier JSON portant le même nom que le fichier Bicep. Vous pouvez ensuite lancer l’analyse Snyk avec la commande suivante :
Pour conclure
La sécurité est un enjeu auquel nous devons tous penser. Même si la cible évolue constamment, plus nous apprenons, plus nous pouvons contribuer à protéger nos ressources. J’espère que cet article vous a été utile et vous a apporté des pistes pour sécuriser vos configurations Bicep.
Une sécurité IaC pensée pour les développeurs
Snyk sécurise votre infrastructure en tant que code, du cycle de développement logiciel à l’exécution dans le cloud, grâce à un moteur unifié de politiques sous forme de code. Chaque équipe peut ainsi développer, déployer et exploiter ses applications en toute sécurité.



