Un bref guide sur la sécurisation des conteneurs à grande échelle

29-01-2019 / Michael Wojcikiewicz

Les conteneurs ont changé la façon dont nous exécutons les applications, permettant d’augmenter grandement leur vitesse, leur évolutivité et leur efficacité. Ils sont une forme de virtualisation de système d’exploitation combinée à un empaquetage de logiciels d’application permettant d’assembler et d’exécuter des applications par des méthodes portables, réutilisables et automatisables. Depuis que Kubernetes, le système d’orchestration de conteneurs, a été mis en libre accès en 2015, le paysage des technologies infonuagiques natives a explosé parallèlement à une adoption commerciale étendue.

Mais les technologies de conteneurs se sont développées à un rythme tel que leur sécurité n’a souvent pas eu le temps de suivre. En conséquence, de nombreux professionnels de la cybersécurité ont affirmé que la croissance rapide et la prolifération des conteneurs d’applications avaient entraîné de nombreux problèmes de sécurité. La sécurité des conteneurs est souvent perçue comme une eau trouble, et plus de 60% des entreprises qui utilisent des conteneurs à des fins de développement et de test citent la sécurité comme un obstacle majeur à l’adoption de conteneurs en production. Les conteneurs n’ont pas la longévité des machines virtuelles et ne semblent donc pas avoir autant de bonnes pratiques éprouvées pour maintenir la sécurité.

Mais vous pouvez sécuriser votre pipeline à grande échelle avec des conteneurs si vous modifiez votre approche de la sécurité. Les pratiques traditionnelles de sécurisation des machines virtuelles ne s’appliquent pas aux environnements conteneurisés. Comparés aux machines virtuelles, les conteneurs ont beaucoup plus d’instances, changent plus rapidement et ont une mise en réseau beaucoup plus éphémère. Par exemple, les conteneurs changent fréquemment d’adresses IP, ce qui signifie qu’ils ne peuvent pas être sécurisés par des techniques traditionnelles reposant sur les adresses IP statiques généralement utilisées dans les serveurs de machines virtuelles ou sans système d’exploitation (« bare metal »). La sécurité doit donc être repensée dans les environnements conteneurisés.

En 2017, l’Institut national des normes et de la technologie (NIST) a publié le Guide de sécurité des conteneurs d’applications. Il décrit les problèmes de sécurité potentiels liés à l’utilisation de conteneurs et fournit des recommandations.

Transférez à gauche

Les conteneurs encouragent le transfert de la responsabilité des opérations vers le développement. Cette stratégie est nécessaire pour les pipelines dynamiques d’intégration continue et de livraison continue (CI/CD) qui sont caractéristiques des pratiques DevOps. Les conteneurs sont construits directement à partir d’images créées par les développeurs, qui sont responsables de l’application des correctifs dans les images et fournissent de nouvelles versions des images à exécuter. Repenser la sécurité des conteneurs signifie d’intégrer les opérations au développement à l’aide d’une boucle de rétroaction continue.

L’approche DevSecOps–la philosophie d’intégration de la sécurité dans les processus de DevOps–augmentera la sécurité opérationnelle en permettant à celle-ci de devenir aussi portable que les conteneurs protégés. Cette approche encouragera l’adoption de techniques et d’outils libres capables de fonctionner sur plusieurs plate-formes et environnements. Les configurations de compilation sécurisées sont automatisées afin de rester cohérentes tout au long de la conception, des tests et du déploiement. La sécurité des conteneurs signifie que la sécurité doit faire partie intégrante de tous les cycles de version au lieu d’être une préoccupation secondaire que l’équipe d’opérations devra reprendre en main en cours de route.

Réduisez les surfaces d’attaque

Les applications conteneurisées contiennent plus d’instances que les applications roulant sur des machines virtuelles. Cette surface d’attaque plus large signifie qu’il existe beaucoup plus de vulnérabilités pouvant être exploitées par des pirates. Ces surfaces d’attaque peuvent être réduites en remplaçant les systèmes d’exploitation génériques par des équivalents spécifiques aux conteneurs, comme CoreOS, qui désactivent les services et fonctionnalités non nécessaires à l’exécution des conteneurs. Comme le système d’exploitation est tout en bas de la pile technologique, toute défaillance de votre système d’exploitation aura un impact sur tous les conteneurs et applications exécutées sur les machines hôtes. Construisez petit, construisez peu et ne construisez que ce dont vous avez besoin.

Adoptez pour les images des outils et des processus gérant les vulnérabilités spécifiques aux conteneurs

Adoptez des outils qui encouragent l’approche de compilation basée sur un pipeline et respectent la nature immuable des conteneurs. Les outils spécifiques aux conteneurs, tels que Microscanner (scanner de vulnérabilité d’image gratuit offert par Aqua Security), seront plus en mesure de comprendre le trafic des réseaux distribués et d’appliquer les politiques de sécurité. Ils ne feront aucune hypothèse sur la durabilité de l’hôte, les mécanismes et fréquences de mise à jour des applications, les fournisseurs de nuages spécifiques, les systèmes d’exploitation de l’hôte, les topologies de réseau ou les environnements d’exécution susceptibles de changer. Repenser la sécurité des environnements conteneurisés implique de surmonter les incohérences dans l’outillage et d’éviter les solutions étroites. Les processus d’une organisation et les outils qu’elle utilise doivent soutenir les nouvelles méthodes de développement, d’exécution et de support des applications rendues possibles par la conteneurisation.

Regroupez les conteneurs par sensibilité relative et limitez les accès aux réseaux ouverts

Les conteneurs sont mieux répartis mais moins isolés que les machines virtuelles. Les conteneurs appartenant à des réseaux ouverts peuvent accéder les uns aux autres ainsi qu’à leurs hôtes. À partir du moment où un conteneur est exploité, tous les autres conteneurs de son noyau sont également compromis. Le rayon de déflagration des brèches peut être minimisé en isolant les conteneurs groupés en fonction de leur sensibilité relative sur différents noyaux du système d’exploitation hôte. Pour réduire ce rayon de déflagration encore plus ou empêcher complètement les exploitations, la sécurité réseau de Kubernetes et les politiques de sécurité des pods peuvent empêcher l’accès aux réseaux ouverts. Les solutions commerciales, telles que le CSP d’Aqua, peuvent le faire en limitant le comportement du réseau, les exécutables et l’accès aux fichiers.

Automatisez les configurations d’exécution

Vous pouvez grandement faciliter la surveillance en créant des normes pour chaque type d’exécution de conteneur et en automatisant leur configuration. Les repères CIS pour Docker et Kubernetes fournissent des conseils sur les bonnes pratiques spécifiques aux conteneurs. L’outil libre kube-bench automatise les tests de conformité en utilisant les repères CIS de Kubernetes. Cette approche vous permettra de réagir aux vulnérabilités plus rapidement et avec un fardeau opérationnel moindre. Cela devrait être une extension naturelle du transfert à gauche de la responsabilité dans la mesure où cela fait partie de l’automatisation des opérations dans la phase de développement.

Les conteneurs ne sont pas moins sécurisés que les machines virtuelles, mais leur sécurité peut nécessiter des processus et outils complètement différents. La sécurité doit faire partie d’une pratique plus large de DevOps qui déplace la responsabilité vers la gauche, réduit les surfaces d’attaque, utilise des outils spécifiques aux conteneurs, regroupe les conteneurs et automatise autant que possible.

Concevoir vos déploiements autour de bonnes pratiques spécifiques aux conteneurs est essentiel pour sécuriser votre application conteneurisée. Cette approche vous donnera des possibilités de sécuriser vos pipelines de livraison de logiciels à grande échelle et de mieux aligner vos pratiques opérationnelles avec les objectifs spécifiques à votre organisation.

Les certifications, comme le SOC 2, peuvent ouvrir la voie à des procédures d’audit suffisantes pour détecter et résoudre les vulnérabilités. Outre les bonnes pratiques de DevOps, cela peut donner à votre organisation tout ce qui est nécessaire pour protéger vos conteneurs des pirates informatiques.

Pour doter vos équipes des compétences techniques et des processus opérationnels nécessaires pour tirer parti des opportunités de sécurité offertes par la conteneurisation, découvrez nos ateliers DevOps. Pour comprendre où se trouvent vos équipes techniques avec leurs processus et outils de sécurité, laissez les processus certifiés SOC-2 de CloudOps vous guider dans la bonne direction grâce à une plate-forme DevOps et à une évaluation des pratiques. New call-to-action