Sécurisation d’Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Pipelines présente des défis de sécurité distincts . Bien que les pipelines vous permettent d’exécuter des scripts ou de déployer du code dans des environnements de production, il est essentiel de les empêcher de devenir des canaux pour du code malveillant. L’équilibrage de la sécurité avec la flexibilité et la puissance requises par les équipes de développement est essentiel.
Remarque
Azure Pipelines fait partie d’une suite d’Azure DevOps Services, toutes basées sur une infrastructure sécurisée au sein d’Azure. Pour obtenir une compréhension complète des concepts de sécurité dans tous les services Azure DevOps, nous vous recommandons d’afficher les ressources suivantes :
Traditionnellement, les organisations appliquent la sécurité par le biais de verrouillages stricts. Les environnements de code, de pipelines et de production sont confrontés à des restrictions d’accès sévères. Bien que cette approche fonctionne bien dans les petites organisations avec des utilisateurs et des projets limités, les grandes organisations font face à une réalité différente. Avec de nombreux contributeurs ayant accès au code, le principe de « supposer une violation » devient crucial. Il s’agit de fonctionner comme si un adversaire possède un accès contributeur aux référentiels, nécessitant une vigilance accrue.
Pour atteindre les objectifs de sécurité, tenez compte des points suivants :
Empêcher l’exécution de code malveillant :
- Vérifiez que vos pipelines sont configurés pour empêcher l’exécution non autorisée de code malveillant, ce qui inclut les tâches suivantes :
- Restreindre l’accès aux secrets et informations d’identification sensibles.
- Validez les paramètres d’entrée et les arguments pour empêcher le comportement inattendu.
- Passez en revue et auditez régulièrement les scripts de pipeline pour les risques de sécurité potentiels.
- Implémentez des pratiques de sécurité telles que :
- Utilisez des requêtes paramétrables dans des scripts pour empêcher l’injection SQL.
- Échappement de caractères spéciaux dans les arguments pour éviter l’injection de commandes de l’interpréteur de commandes.
- Limitez les autorisations pour les connexions de service de pipeline.
- Envisagez d’utiliser des pipelines YAML, qui fournissent un contrôle précis sur l’exécution et sont moins sujets aux risques de sécurité.
- Vérifiez que vos pipelines sont configurés pour empêcher l’exécution non autorisée de code malveillant, ce qui inclut les tâches suivantes :
Atténuer l’exposition latérale :
- Isolez les pipelines pour empêcher le déplacement latéral dans les projets et référentiels de votre organisation.
- Limitez l’accès aux seuls référentiels et ressources nécessaires pour chaque pipeline.
- Surveillez l’activité du pipeline et configurez des alertes pour un comportement suspect.
- Passez en revue et mettez à jour les autorisations pour réduire l’exposition régulièrement.
Utilisez des pipelines YAML :
- Les pipelines YAML offrent les avantages suivants en termes de sécurité :
- Définissez explicitement les étapes et les dépendances du pipeline.
- Contrôle de version pour les définitions de pipeline.
- Effacer la visibilité de la configuration du pipeline.
- Risque réduit de mauvaises configurations accidentelles.
- Révision du code et demandes de tirage :
- Traitez les pipelines YAML comme n’importe quel autre code.
- Appliquez les demandes de tirage pour fusionner les modifications afin d’empêcher les étapes malveillantes.
- Utilisez des stratégies de branche pour configurer ce processus de révision.
- Gestion de l’accès aux ressources :
- Les propriétaires de ressources contrôlent si un pipeline YAML peut accéder à des ressources spécifiques.
- Cette fonctionnalité de sécurité empêche les attaques telles que le vol d’un autre dépôt.
- Les approbations et les vérifications fournissent un contrôle d’accès pour chaque exécution du pipeline.
- Paramètres d’exécution :
- Les paramètres d’exécution permettent d’éviter les problèmes de sécurité liés aux variables, telles que l’injection d’arguments.
- Envisagez de migrer des pipelines existants au format YAML pour améliorer la sécurité et la maintenance.
- Les pipelines YAML offrent les avantages suivants en termes de sécurité :
La sécurité est un processus continu, et les évaluations et mises à jour régulières sont essentielles. Les pipelines YAML offrent la meilleure sécurité pour vos Azure Pipelines.
Les articles suivants décrivent les recommandations pour vous aider à développer un pipeline YAML sécurisé :