Sécurisation d’Azure Pipelines

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

Azure Pipelines pose des défis de sécurité uniques. Vous pouvez utiliser un pipeline pour exécuter des scripts ou déployer du code dans des environnements de production. Toutefois, vous souhaitez vous assurer que vos pipelines CI/CD n’ouvrent pas la voie à l’exécution de code malveillant. Vous souhaitez également vous assurer que seul le code que vous envisagez de déployer est déployé. La sécurité doit être équilibrée ; pour ce faire, les équipes doivent bénéficier de la flexibilité et de la puissance dont elles ont besoin pour exécuter leurs propres pipelines.

Notes

Azure Pipelines fait partie d’une collection d’Azure DevOps Services, dont tous les services sont basés sur la même infrastructure sécurisée dans Azure. Pour comprendre les principaux concepts relatifs à la sécurité pour tous les services Azure DevOps Services, consultez Aperçu de la protection des données Azure DevOps et Sécurité et identité Azure DevOps.

Traditionnellement, les organisations assuraient la sécurité par le biais de verrous draconiens. Des restrictions strictes en matière d’accès et d’utilisation étaient appliquées pour le code, les pipelines et les environnements de production. Dans les petites organisations comprenant quelques utilisateurs et projets, la gestion de ce schéma d’organisation était relativement simple. Toutefois, cela n’était pas le cas des organisations de plus grande taille. Lorsque de nombreux utilisateurs ont un accès contributeur au code, il faut « supposer une violation ». Le fait de supposer une violation consiste à adopter un comportement comme si une personne mal intentionnée a un accès contributeur à une partie (sinon l’intégralité) des référentiels.

Dans ce cas, l’objectif est d’empêcher cette personne mal intentionnée d’exécuter du code malveillant dans le pipeline. Le code malveillant peut voler des secrets ou endommager des environnements de production. Un autre objectif est d’empêcher l’exposition latérale à d’autres projets, pipelines et référentiels du pipeline compromis.

Les pipelines YAML offrent la meilleure sécurité pour vos Azure Pipelines. Contrairement aux pipelines de build et de mise en production classiques, les pipelines YAML :

  • peuvent être soumis à une révision du code. Les pipelines YAML ne diffèrent pas des autres éléments de code. Vous pouvez empêcher les intervenants malveillants d’introduire des étapes malveillantes dans vos pipelines en utilisant des demandes de tirage pour fusionner les modifications. Les stratégies de branche en facilitent la configuration.
  • assurent la gestion des accès aux ressources. Les propriétaires de ressources décident si un pipeline YAML peut accéder à une ressource ou non. Cette fonctionnalité de sécurité contrôle les attaques telles que le vol d’un autre référentiel. Les approbations et les vérifications assurent un contrôle d’accès pour chaque exécution de pipeline.
  • prennent en charge les paramètres de runtime. Les paramètres de runtime vous permettent d’éviter un grand nombre de problèmes de sécurité liés aux variables, comme l’injection d’arguments.

Cette série d’articles décrit les recommandations pour vous aider à mettre en place un pipeline CI/CD basé sur YAML sécurisé. Elle aborde également les domaines pour lesquels vous pouvez faire des compromis entre la sécurité et la flexibilité. Lorsque vous parcourez cette série d’articles, il est supposé que vous connaissiez Azure Pipelines, les principales constructions de sécurité Azure DevOps, et Git.

Rubriques abordées :