Les services connection Azure DevOps jouent un rôle crucial dans la gestion et l’automatisation des déploiements et des opérations dans Azure DevOps. Dans ce billet, nous allons explorer en profondeur la sécurité des services connection Azure DevOps, en mettant l’accent sur les bonnes pratiques et les considérations clés pour renforcer la sécurité de vos pipelines et de votre environnement DevOps.
Introduction aux services connection Azure DevOps
Les services connection Azure DevOps permettent aux pipelines d’accéder à des ressources externes telles que des abonnements Azure, des référentiels Git, des services cloud, des registres Docker, etc. Ils fournissent les informations d’identification et les autorisations nécessaires pour que les pipelines puissent interagir avec ces ressources de manière sécurisée.
Cependant, les utilisateurs peuvent exploiter les privilèges des services connections pour effectuer des opérations non autorisées sur les ressources externes : création/suppression des services Azure, modifications des ressources, etc.
Nous allons explorer différentes approches pour améliorer la sécurité et protéger les services connection Azure DevOps. Nous allons nous intéresser entre autres :
- Aux permissions des pipelines
- Aux approbateurs
- Aux contrôles de branches
- Aux Required templates
Permissions des pipelines
L’une des premières considérations en matière de sécurité des services connection Azure DevOps est la gestion des autorisations des pipelines. Il est essentiel de définir des permissions granulaires pour chaque pipeline afin de limiter l’accès aux ressources et aux fonctionnalités uniquement aux utilisateurs, pipelines et projets autorisés. Cela peut être réalisé en attribuant des rôles appropriés aux utilisateurs et en configurant des autorisations basées sur le principe du moindre privilège.
Vous devez donc vous assurer que l’accès au service connection par les pipelines se fasse uniquement sur demande et que seuls les administrateurs/personnes autorisés soient capables d’approuver la demande.
Cette configuration se fait dans la page Sécurité du service connection. À partir de cette page, vous avez également une visibilité sur les utilisateurs, pipelines et projets qui ont accès au service connection.
Les approbateurs
Les approbateurs sont une fonctionnalité importante pour renforcer la sécurité des pipelines. Ils permettent de définir des validations supplémentaires avant qu’un pipeline ne puisse être utilisé. En configurant des approbateurs pour les déploiements critiques ou sensibles, vous pouvez garantir qu’un processus de validation humaine est effectué avant toute action importante, réduisant ainsi les risques d’erreurs ou d’actions non autorisées.
La configuration se fait à partir de la page Approvals and checks du service connection.
Une fois la configuration effectuée, toute exécution de pipeline qui utilise le service connection doit être approuvée au préalable avant de s’exécuter :
Le Contrôle des branches
Le contrôle des branches est une autre mesure de sécurité essentielle pour les services connection Azure DevOps. En définissant des stratégies de contrôle des branches, vous pouvez restreindre l’utilisation des pipelines à des branches spécifiques et valider les politiques de branches ont été mises en place.
Le branch control ci-dessous permet que le service connection soit utilisé uniquement par les branches main de chaque dépôt de code source. Par ailleurs, ces branches doivent être protégées par les politiques de branches permettant d’effectuer uniquement des fusions via des pull request.
Ainsi, tout code qui n’a pas été révisé par un autre développeur et fusionné dans la branche main ne pourra pas utiliser le service connection.
Required Template
Azure DevOps offre la possibilité d’implémenter des pipelines qui héritent d’autres pipelines via les modèles extends. Si plusieurs pipelines de votre entreprise ont la même structure. Exemple : presque toutes les applications sont des applications ASP.NET qui sont déployées dans Azure App Service.
Vous pouvez donc utiliser des modèles pour définir la structure commune et permettre à chaque pipeline d’hériter de ces derniers.
Il est possible via les Required Template des services connection de bloquer l’utilisation du service connection pour tout pipeline qui n’est pas conforme et n’utilise pas les modèles mis en place.
Tout pipeline qui essaie d’utiliser le service connection sans étendre au préalable le modèle requis échouera :
En conclusion, la sécurité des services connection Azure DevOps est un aspect crucial de la gestion des pipelines et des opérations dans Azure DevOps. En mettant en œuvre les bonnes pratiques et les fonctionnalités de sécurité disponibles, telles que les permissions granulaires, les approbateurs, le contrôle des branches et les modèles requis, vous pouvez renforcer la sécurité de vos pipelines et protéger efficacement votre environnement Azure DevOps contre les menaces potentielles.