Considérations relatives à la sécurité pour les plateformes DevOps
La sécurité doit toujours être une priorité dans les plateformes de développement cloud, comme Azure DevOps et GitHub. Microsoft met à jour et maintient la sécurité de l’infrastructure cloud sous-jacente, mais il vous appartient de passer en revue et de configurer les meilleures pratiques de sécurité pour vos propres organisations Azure DevOps et instances GitHub.
Tenez compte des zones de sécurité critiques suivantes, que vous déployiez des environnements via l’infrastructure en tant que code dans des pipelines d’intégration continue et de déploiement continu (CI/CD), ou déployiez du code sur vos applications hébergées dans Azure.
Restreindre l’accès aux outils DevOps
Suivez le principe du moindre privilège en utilisant le contrôle d’accès en fonction du rôle (RBAC) via Microsoft Entra ID. Donnez aux utilisateurs et aux services la quantité minimale d’accès nécessaire à vos plateformes DevOps pour exercer leurs fonctions métier. Pour plus d’informations, consultez les articles suivants :
- Connecter votre organisation à Microsoft Entra ID
- Intégration de l’authentification unique Microsoft Entra à GitHub Enterprise Cloud
- Meilleures pratiques relatives à la sécurité DevOps
Après avoir établi Microsoft Entra ID comme plan de gestion des identités, suivez les meilleures pratiques pour gérer les attributions de rôles Azure DevOps avec les appartenances aux groupes Microsoft Entra. Vous pouvez attribuer des rôles Azure DevOps à des groupes Microsoft Entra et ajuster l’appartenance Microsoft Entra d’un utilisateur pour modifier ou supprimer son accès Azure DevOps.
Utilisez la gestion des droits d’utilisation Microsoft Entra ID pour créer des packages d’accès qui permettent aux utilisateurs Microsoft Entra ID d’accéder aux ressources nécessaires pour effectuer leurs tâches.
Vous pouvez également utiliser Microsoft Entra Privileged Identity Management pour l’accès juste-à-temps pour promouvoir des personnes aux rôles d’administrateur Azure DevOps pendant une période donnée.
Gérez la sécurité dans Azure DevOps à l’aide de groupes de sécurité, de stratégies et de paramètres au niveau de l’organisation, du projet ou de l’objet Azure DevOps. Si possible, envisagez de désactiver l’héritage des autorisations dans Azure DevOps.
Restreindre l’accès au référentiel et aux branches
Limitez l’accès au référentiel, les autorisations et la création de branches pour protéger votre code et vos environnements contre les modifications indésirables ou malveillantes. Limitez l’accès aux référentiels à l’aide de groupes de sécurité dans Azure DevOps. Limitez les utilisateurs autorisés à lire et à mettre à jour le code dans vos branches en définissant des autorisations de branche.
Restreindre l’accès au pipeline et aux autorisations
Le code malveillant peut voler des données commerciales et des secrets, et endommager les environnements de production. Implémentez des garde-fous pour empêcher le déploiement de code malveillant dans le pipeline. En limitant l’accès et en implémentant des garde-fous, vous pouvez également empêcher l’exposition latérale à d’autres projets, pipelines et référentiels à partir de tout pipeline compromis.
Envisagez de suivre une approche incrémentielle pour sécuriser vos pipelines YAML. Pour plus d’informations, consultez Planifier la sécurisation de vos pipelines YAML.
Sélectionner l’agent DevOps en fonction des besoins de sécurité
Vous pouvez utiliser des agents hébergés par Microsoft ou auto-hébergés pour alimenter Azure DevOps et les pipelines GitHub. Il existe des compromis pour chaque type d’agent.
Avec les agents hébergés par Microsoft, vous n’avez pas besoin de vous soucier des mises à niveau ou de la maintenance. Avec les agents auto-hébergés, vous disposez d’une plus grande flexibilité pour implémenter des garde-fous de sécurité. Vous contrôlez le matériel de l’agent, le système d’exploitation et les outils installés.
Consultez Agents Azure Pipelines pour examiner les différences entre les types d’agents et identifier les considérations de sécurité potentielles.
Utiliser des connexions de service sécurisées et étendues
Dans la mesure du possible, utilisez une connexion de service pour déployer du code d’infrastructure ou d’application dans un environnement Azure. La connexion de service doit disposer d’un accès limité au déploiement pour des ressources ou groupes de ressources Azure spécifiques, afin de réduire les surfaces d’attaque potentielles. Envisagez également de créer des connexions de service distinctes pour les environnements de développement, de test, d’assurance qualité et de production.
Utiliser un magasin de secrets
Ne codez jamais en dur les secrets et ne les ajoutez pas à la documentation auxiliaire dans vos référentiels. Les personnes malveillantes analysent les référentiels, en recherchant les données confidentielles exposées à exploiter. Configurez un magasin de secrets, comme Azure Key Vault, et référencez le magasin dans Azure Pipelines pour récupérer en toute sécurité des clés, des secrets ou des certificats. Pour plus d’informations, consultez Sécuriser le pipeline et le workflow CI/CD. Vous pouvez également utiliser des secrets Key Vault dans des workflows GitHub Actions.
Utiliser des stations de travail DevOps renforcées pour générer et déployer du code
Les équipes de plateforme et de développement disposent souvent de privilèges élevés sur la plateforme Azure ou sur d’autres services comme Azure DevOps et GitHub. Cet accès augmente considérablement la surface d’attaque potentielle. Implémentez des garde-fous pour sécuriser tous les points de terminaison et stations de travail que vous utilisez pour développer et déployer du code.
Utilisez des stations de travail d’administration sécurisées renforcées (SAW) pour déployer toutes les modifications apportées aux environnements à haut risque et de production. Pour plus d’informations, consultez Sécuriser les points de terminaison avec la confiance zéro.
Effectuer une analyse et des tests de sécurité
Que vous déployiez du code d’application ou de l’infrastructure en tant que code, implémentez les meilleures pratiques et contrôles DevSecOps dans vos pipelines. Intégrez la sécurité dès le début de votre parcours CI/CD pour éviter les violations de sécurité coûteuses plus tard. Créez une stratégie pour implémenter l’analyse du code statique, les tests unitaires, l’analyse des secrets et l’analyse des packages/dépendances dans vos pipelines.
Les outils de sécurité d’entreprise, comme Microsoft Defender pour le cloud, peuvent s’intégrer aux outils DevOps. Par exemple, Defender pour le cloud peut identifier les images conteneur vulnérables dans vos workflows CI/CD. Pour GitHub Actions et les référentiels, utilisez GitHub Advanced Security pour l’analyse du code et des secrets et la révision des dépendances.
Passez régulièrement en revue les événements d’audit pour surveiller et réagir aux modèles d’utilisation inattendus par les administrateurs et d’autres utilisateurs. Vous pouvez accéder à, filtrer et exporter les journaux d’audit pour votre organisation Azure DevOps. Pour le stockage à long terme et l’interrogation détaillée des journaux, créez un flux d’audit dans un espace de travail Azure Monitor Log Analytics ou dans un système SIEM (Security Information and Event Management) comme Microsoft Sentinel.