Guide pour débutants sur la sécurité des conteneurs
Plus que jamais, les équipes DevOps utilisent des conteneurs, sans donner la priorité à leur sécurité. Voici ce que vous devez savoir sur la sécurité des conteneurs.
Les conteneurs économes en ressources et hautement portables s'imposent comme le choix de prédilection dans le développement de logiciels modernes. À compter de 2023, plus de 70 % des entreprises exécutent plus de deux applications conteneurisées, selon le cabinet d'études de marché Gartner.
Les conteneurs ont toutefois des inconvénients, en particulier en matière de sécurité. L'enquête Global DevSecOps 2022 de GitLab a révélé que seulement 64 % des professionnels de la sécurité disposaient à l'époque d'un plan de sécurité pour les conteneurs et que de nombreuses équipes DevOps n'avaient pas prévu de mettre en places d'autres technologies logicielles de pointe, y compris le cloud-native/serverless, les API et les microservices.
Pour les équipes DevOps, la solution consiste à contrôler en amont et à intégrer les pratiques de sécurité à chaque étape du processus de développement logiciel. Voici un guide étape par étape pour aider les équipes à atteindre cet objectif.
Un conteneur est une unité légère qui contient tous les composants nécessaires à l'exécution d'une application, tels que le code de l'application, le runtime, les bibliothèques et les configurations. La sécurité des conteneurs fait référence aux mesures et aux pratiques prises dans le but d'assurer leur sécurité et leur intégrité. La sécurité des conteneurs s'applique à tout, des applications à l'intérieur des conteneurs à l'infrastructure sur laquelle elles s'exécutent. La sécurité et la qualité des images de base sont essentielles pour s'assurer que toutes les images dérivées proviennent d'une source fiable. Développez la sécurité de votre pipeline de conteneurs en rassemblant des images fiables, en gérant l'accès à l'aide d'un registre privé, en intégrant les tests de sécurité, en automatisant le déploiement et en protégeant en permanence votre infrastructure. Le durcissement de la configuration des conteneurs fait référence au processus consistant à utiliser des outils d'analyse des conteneurs pour détecter les vulnérabilités possibles et à les résoudre pour réduire au maximum le risque d'attaque.
Une sécurité robuste des conteneurs réduit le risque de déploiement d'un conteneur contenant une faille de sécurité ou un code malveillant dans un environnement de production.
La sécurité des conteneurs diffère des méthodes de sécurité traditionnelles en raison de la complexité et du dynamisme accrus de l'environnement des conteneurs. En termes simples, il y a beaucoup plus de pièces mobiles et différents risques de sécurité.
Bien que les conteneurs semblent se comporter comme de petites machines virtuelles (MV), ce n'est en réalité pas le cas. Ils nécessitent donc une stratégie de sécurité différente. Le trafic entre les applications d'un conteneur ne traverse pas la sécurité du réseau périmétrique. Il doit toutefois être surveillé pour détecter tout trafic malveillant entre les applications et leurs images. Votre outil d'orchestration peut être utilisé pour définir des stratégies de sécurité pour les processus et les ressources. Cependant, une stratégie de sécurité complète est plus exigeante.
Les images du conteneur définissent ce qui s'exécute dans chaque conteneur. Les développeurs doivent s'assurer que les images ne contiennent pas de vulnérabilités de sécurité ou de code compromis. Ils doivent également éviter de créer des images contenant des éléments superflus pour réduire au maximum la surface d'attaque du conteneur. Les outils d'analyse et de validation des images de conteneur peuvent être utilisés pour interdire les images qui ne sont pas fiables, mais cette fonctionnalité est souvent désactivée par défaut. Les images peuvent également être scannées après leur création pour détecter les images dépendantes qui pourraient également présenter des vulnérabilités.
Contrairement aux VM, plusieurs conteneurs peuvent s'exécuter sur le même système d'exploitation et une attaque peut se produire à n'importe quel niveau. Un système d'exploitation hôte vulnérable met en danger ses conteneurs ; à son tour, un conteneur vulnérable peut ouvrir une voie d'attaque vers le système d'exploitation hôte. Appliquez l'isolation des conteneurs par namespaces pour limiter l'interaction entre le conteneur et le noyau du système d'exploitation hôte, et automatisez les correctifs pour vous aligner sur les versions de correctif fournisseur. Le système d'exploitation doit également être aussi simple que possible, sans composants inutiles, tels que des applications ou des bibliothèques qui ne sont pas réellement nécessaires pour exécuter votre outil d'orchestration.
L'orchestration des conteneurs les coordonne et les gère, ce qui permet aux applications conteneurisées d'évoluer et de prendre en charge des milliers d'utilisateurs. Votre outil d'orchestration peut avoir ses propres fonctionnalités de sécurité prêtes à l'emploi. Si c'est le cas, cela vous permet de créer des règles pour que Kubernetes les applique automatiquement à tous les pods du cluster. Ce type de fonctionnalité de base est utile, mais ne constitue toutefois qu'un premier pas vers un ensemble de stratégies plus robustes.
Comme les conteneurs peuvent être répartis sur plusieurs systèmes et fournisseurs de services cloud, la gestion des accès revêt une importance encore plus grande. Les secrets, qui comprennent les clés d'API, les identifiants de connexion et les tokens, doivent être gérés de manière rigoureuse pour garantir que l'accès aux conteneurs est limité aux utilisateurs privilégiés. L'accès des utilisateurs peut également être défini par un contrôle d'accès basé sur les rôles, ce qui vous permet de limiter l'accès selon les besoins.
Après le déploiement, l'activité des conteneurs doit être surveillée et les équipes doivent être en mesure de détecter toute menace à la sécurité et d'y répondre. Nordcloud suggère de surveiller les comportements suspects tels que les appels réseau, les appels API et les tentatives de connexion inhabituelles. Les équipes doivent avoir des étapes d'atténuation prédéfinies pour les pods et être en mesure d'isoler le conteneur sur un autre réseau, de le redémarrer ou de l'arrêter jusqu'à ce que la menace soit identifiée. Cette démarche peut fournir une couche de sécurité supplémentaire contre les logiciels malveillants.
Les fournisseurs de services cloud jouent également un rôle en sécurisant le matériel sous-jacent et les réseaux de base utilisés pour fournir des services cloud. Toutefois, les utilisateurs partagent toujours cette responsabilité, tout en assumant les autres responsabilités (accès aux applications, configuration des applications et application des correctifs, application de correctifs au système et accès au système).
En 2017, le département américain du Commerce a publié son Application Container Security Guide (guide relatif à la sécurité des conteneurs d'application). Bien que ce guide date de quelques années, les équipes qui adoptent des conteneurs peuvent toujours bénéficier des recommandations suivantes :
-
Adapter la culture opérationnelle et les processus techniques de l'entreprise pour soutenir la nouvelle façon de développer, d'exécuter et d'assister les applications rendues possibles par les conteneurs : l'adoption de conteneurs peut perturber votre culture et vos méthodologies de développement existantes. Il est également possible que vos pratiques actuelles ne soient pas directement applicables dans un environnement conteneurisé. Encouragez, éduquez et formez votre équipe à repenser sa façon de coder et de fonctionner.
-
Utilisez des systèmes d'exploitation hôtes optimisés pour exécuter des conteneurs au lieu de ceux à usage général pour réduire les surfaces d'attaque : un système d'exploitation hôte optimisé pour exécuter des conteneurs est un système d'exploitation minimaliste conçu pour exécuter uniquement des conteneurs. L'utilisation de ces systèmes d'exploitation réduit considérablement les surfaces d'attaque, ce qui réduit les chances que vos conteneurs soient compromis.
-
** Regroupez uniquement les conteneurs ayant le même objectif, la même sensibilité aux données et la même exposition aux menaces sur un seul noyau de système d'exploitation hôte pour permettre une défense en profondeur supplémentaire :** cn parle alors de segmentation des conteneurs. En regroupant les conteneurs de cette manière, il est plus difficile pour un attaquant d'étendre les éléments potentiellement compromis à d'autres groupes. La probabilité que les éléments compromis soient détectés et contenus est également plus élevée.
-
Adoptez des outils et des processus de gestion des vulnérabilités dédiés à la sécurité des conteneurs pour les images afin d'éviter les attaques : les outils traditionnels fonctionnent selon de nombreuses hypothèses qui ne correspondent pas à un modèle conteneurisé. Ils sont donc souvent incapables de détecter les vulnérabilités dans les conteneurs. Les entreprises doivent adopter des outils et des processus pour valider et faire respecter les normes de conformité en appliquant les meilleures pratiques de configuration sécurisée des images, y compris la création de rapports centralisés, la surveillance de chaque image et la prévention de l'exécution d'images qui ne sont pas conformes.
-
Envisagez d'utiliser des contre-mesures basées sur le matériel pour fournir une base à l'informatique de confiance : étendez les pratiques de sécurité à tous les niveaux de la technologie des conteneurs en basant la sécurité sur du matériel de confiance, tel que le module TPM (Trusted Platform Module).
-
Utilisez des outils de défense du runtime compatibles avec les conteneurs : déployez et utilisez une solution de sécurité dédiée aux conteneurs capable de surveiller leur environnement et de détecter avec précision des activités anormales et malveillantes qui s'y produisent.
Découvrez le vocabulaire spécifique et mettez-vous à l'œuvre.
Explorez les bases de la sécurité DevSecOps.
Commencez à utiliser DevSecOps avec GitLab.
Lancez-vous dès maintenant
Découvrez comment la plateforme DevSecOps unifiée de GitLab peut aider votre équipe.