Comment protéger vos applications conteneurisées?
Dans notre ère de services infonuagiques émergents, la protection des applications conteneurisées est plus que jamais importante pour vos organisations1. Pourquoi? Parce que la conteneurisation via l’infonuagique est grandement utilisée par un nombre croissant d’entreprises dans le développement de logiciels modernes pour améliorer la vitesse de déploiement, la fiabilité et l’utilisation des ressources. La sécurisation des applications conteneurisées implique une approche multicouche abordant plusieurs facettes de la sécurité de l’infonuagique et de la gestion des conteneurs. En effet, les conteneurs offrent une évolutivité améliorée, une haute disponibilité, une efficacité des ressources, des capacités d’auto-réparation, de la portabilité et bien plus encore. Néanmoins, il est regrettable de constater que les applications conteneurisées via des services infonuagiques introduisent également un éventail de défis particuliers en matière de cybersécurité, lesquels nécessitent des mesures défensives et des approches protectrices. C’est la raison pour laquelle nous nous concentrons sur un tel sujet dans notre Infolettre du mois d’août 2024 ciblant, entre autres, les développeurs de logiciels et les architectes-informaticiens.
[1] Pour les besoins de cette infolettre, le terme « organisation » un est une notion générique qui désigne les « sociétés » et les « PMEs » telles que délimitées dans les dispositions légales du Code canadien du travail (L.R.C. (1985), ch. L-2) et dans la Loi québécoise sur les normes du travail et le Règlement sur les normes du travail, RLRQ c N-1.1, r. 3.
Définitions abrégées exemplifiant la technologie infonuagique et les applications conteneurisées
D’une part, l’infonuagique dénote la disponibilité à la demande de diverses ressources informatiques – telles que le stockage de données, les serveurs et la mise en réseau – par l’intermédiaire d’Internet1. Ainsi, l’infonuagique suppose que vous pouvez accéder à ces ressources informatiques et les utiliser sans avoir à gérer par vous-même le matériel physique. Voici quelques caractéristiques fondamentales de l’infonuagique : (1) libre-service à la demande : les utilisateurs peuvent approvisionner automatiquement les ressources selon leurs besoins; (2) accès au réseau étendu : les ressources sont accessibles par le truchement d’Internet à partir de plusieurs appareils; (3) mise en commun des ressources : les fournisseurs regroupent les ressources pour servir une diversité d’utilisateurs, en les allouant de manière dynamique selon la demande; (4) élasticité rapide : les ressources informatiques peuvent être rapidement augmentées ou réduites selon les besoins; (5) services mesurés : l’utilisation des ressources informatiques est surveillée et facturée en fonction de la consommation. En un mot, l’infonuagique offre de nombreux avantages, notamment des économies de coûts, une augmentation de la vitesse et de l’agilité, une extensibilité illimitée et une valeur stratégique augmentée pour les organisations.
D’autre part, les applications conteneurisées correspondent à des applications logicielles qui fonctionnent au sein des environnements isolés de codes appelés conteneurs. Ces conteneurs regroupent les applications ainsi que toutes leurs dépendances – par exemple : des bibliothèques, des casiers binaires et des fichiers de configuration – dans un seul exécutable léger. Les procédures de conteneurisation des applications permettent un développement plus rapide, plus efficace et plus sécuritaire des applications en divisant et en séparant les fonctionnalités distinctives des dépendances matérielles et d’autres éléments logiciels. De cette façon, les conteneurs peuvent fonctionner sur n’importe quel système d’exploitation hôte et ils sont isolés des autres objets logiciels et matériels – ce qui en fait des outils polyvalents pour la conception et l’assemblage d’applications qui peuvent être créées une fois pour toute, et ensuite exploitées n’importe où2.
[1] Thomas Erl and Eric Monroy. Cloud Computing: Concepts, Technology, Security and Architecture. 2nd Paperback Edition of August 2023, Pearson Publishing PLC, London, England, UK. 608 pages. https://www.pearson.com/en-ca/subject-catalog/p/cloud-computing-concepts-technology-and-architecture-second-edition/P200000009788/9780138052256
[2] Justin Domingus and John Arundel. Cloud Native DevOps with Kubernetes: Building, Deploying and Scaling Modern Applications in the Cloud. 2nd Paperback Edition of April 2022, O’Reilly Media Educational Publisher, Sebastopol, California, USA, 353 pages. https://www.oreilly.com/library/view/cloud-native-devops/9781492040750/
Protégez vos applications conteneurisées de A à Z
La protection du réseau des applications conteneurisées est essentielle pour protéger vos applications contre les cybermenaces et les cyberattaques potentielles. La sécurisation des applications conteneurisées englobe de nombreuses bonnes pratiques de cybersécurité pour garantir l’intégrité, la capacité de déploiement et la sécurité de fonctionnement de vos applications et de votre infrastructure informatique. Vous trouverez ci-dessous un résumé de certaines approches de protection et des meilleures pratiques de cybersécurité pour protéger vos applications conteneurisées:
1 – Sécurité réseau
- Segmentation du réseau : utilisez des politiques réseau pour segmenter et restreindre la communication entre les conteneurs. Des outils comme Calico ou Cilium peuvent vous aider à gérer les politiques réseau dans Kubernetes. Isolez les réseaux de conteneurs les uns des autres et du réseau hôte. Vous pouvez ainsi limiter l’impact d’un conteneur compromis et empêcher les mouvements latéraux des cyberattaquants.
- Réseaux de ponts : il est plus sécuritaire d’utiliser des réseaux de ponts. Au lieu de vous fier aux réseaux de ponts par défaut, créez des réseaux de ponts personnalisés pour mieux gérer la communication des conteneurs.
- Mise en œuvre des politiques réseau : utilisez des politiques réseau pour contrôler la communication entre les conteneurs. Agir de la sorte peut aider à limiter le trafic à ce qui est nécessaire au bon fonctionnement de l’application conteneurisée.
- Utilisation des pares-feux : déployez des pares-feux pour bloquer le trafic indésirable vers vos conteneurs. Cela ajoute une couche de sécurité supplémentaire en filtrant le trafic entrant et sortant.
- Chiffrement du trafic réseau : assurez-vous que tout le trafic réseau entre les conteneurs soit chiffré. Le chiffrement du trafic réseau peut être mis en œuvre de manière proactive et réalisé en utilisant des protocoles tels que Transport Layer Security (TLS 1.3) – Sécurité de la couche transport (SCT 1.3) pour protéger les données en transit.
- Surveillance du trafic réseau : surveillez en permanence le trafic réseau pour détecter des modèles inhabituels ou des cybermenaces potentielles. Des appareils et des outils tels que les systèmes de détection d’intrusion (SDI) peuvent aider à identifier et à intervenir lors des activités suspectes.
- Limitation de l’exposition du réseau : minimisez l’exposition des applications conteneurisées à l’Internet public. Envisagez d’utiliser des réseaux privés virtuels (RPV) pour garantir la sécurité de l’accès au réseau de vos applications conteneurisées.
2 – Chiffrement des données
Les données stockées dans des conteneurs peuvent être chiffrées à l’aide de la norme Advanced Encryption Standard (AES) – Norme de chiffrement avancé (NCA). Souvent, le service est déjà intégré au conteneur. Les données en transit doivent être chiffrées et protégées pour éviter tout accès non autorisé à l’aide de TLS 1.3, avec des chiffrements robustes.
TLS 1.3 est la dernière version du protocole TLS et elle apporte des améliorations de sécurité substantielles pour vous et vos utilisateurs, ce qui est en harmonie avec notre objectif de sécuriser l’Internet.
Plus précisément, TLS 1.3 fournit les bénéfices suivants :
- Des algorithmes de chiffrement et d’échange de clefs modernes, avec la confidentialité de transmission comme charpente structurelle.
- Suppression des chiffrements et des méthodes d’échange de clefs plus anciens et moins sécurisés, ainsi qu’une réduction globale de la complexité du protocole.
- Faible latence de négociation (un aller-retour entre le client et le serveur) pour des négociations complètes, ce qui contribue directement à une bonne expérience de l’utilisateur final.
3 – Sécurité de l’hôte
- Renforcez le système hôte : assurez-vous que le système d’exploitation de l’hôte est renforcé et régulièrement mis à jour. Utilisez des outils comme Lynis ou OpenSCAP pour vérifier la sécurité du système de l’hôte.
- Utilisez un système minimal d’exploitation hôte : envisagez d’utiliser un système d’exploitation minimal optimisé pour les conteneurs comme CoreOS ou Alpine Linux pour réduire la surface d’attaque des cyberattaques.
4 – Sécurité de l’orchestration
- Sécurisez les agglomérats Kubernetes : utilisez le Contrôle d’accès basé sur les attributs (Attribute-Based Access Control (ABAC) pour gérer les autorisations et assurez-vous que les serveurs API Kubernetes sont sécurisés, correctement authentifiés et non accessibles au public.
- Journaux de vérification : activez et examinez régulièrement les journaux de vérification pour Kubernetes et d’autres outils d’orchestration afin de surveiller les activités suspectes.
5 – Sécurité d’exécution des conteneurs
- Principe des moindres privilèges : gérez les conteneurs avec les privilèges minimaux requis. Évitez d’exécuter des conteneurs en tant que racines. Utilisez plutôt des espaces de noms pour que les utilisateurs isolent différents conteneurs
- Application des contextes de sécurité : utilisez des contextes de sécurité et des politiques de sécurité des capsules Kubernetes, ou des fonctionnalités similaires pour appliquer les politiques de sécurité au moment de l’exécution.
- Isolation des conteneurs : utilisez des espaces de noms et des groupes de contrôle (Groupes-C) pour isoler les conteneurs les uns des autres et du système hôte.
- Restriction des privilèges des conteneurs : utilisez et gérez les conteneurs par l’intermédiaire des privilèges restreints. Contournez le fonctionnement des conteneurs en tant que racines. Utilisez plutôt le contexte de cybersécurité pour limiter les autorisations d’accès.
6 – Protection des images de conteneurs
- Utilisation d’images de base renforcées : démarrez votre image avec des images de base officielles et minimales provenant de sources fiables. De plus, assurez-vous que les images sont régulièrement mises à jour et que vous appliquez les correctifs obligatoires.
- Automatisation de l’analyse des vulnérabilités exploitables : en ce qui concerne les vulnérabilités exploitables qui peuvent avoir un impact sur les images de conteneur, effectuez régulièrement une analyse et une gestion automatisées des vulnérabilités tout au long du cycle de vie du conteneur afin de réduire l’exposition de ces images de conteneur. En matière de recherche des vulnérabilités et des mauvaises configurations, des outils adéquats tels que Clair, Docker Bench for Security, ou Trivy peuvent être utilisés pour analyser les images et les inspecter.
- Signature des images : pour garantir que les images ne sont pas altérées ou corrompues, vous pouvez utiliser la signature et la vérification des images (par exemple : Docker Content Trust) ou la fonction de hachage cryptographique.
7 – Gestion de la configuration
- Variables d’environnement : évitez de coder en dur des informations confidentielles dans vos images ou fichiers de configuration. Utilisez des outils de gestion des secrets comme HashiCorp Vault, AWS Secrets Manager, ou Kubernetes Secrets.
- Fichiers de configuration : examinez et sécurisez les fichiers de configuration, y compris ceux utilisés par les outils d’application d’orchestration tels que Kubernetes. Assurez-vous qu’ils ne contiennent pas de données confidentielles ou de paramètres non sécurisés.
- Identification et correction des erreurs de configuration : afin de prévenir les erreurs de configuration, surveillez et vérifiez régulièrement les configurations de vos conteneurs pour vous assurer qu’elles respectent les meilleures pratiques en matière de cybersécurité.
8 – Surveillance et journalisation
- Journalisation à distance : collectez et analysez les journaux au moyen d’une pile distincte des conteneurs, séparé de l’environnement d’exécution des conteneurs et des plateformes d’orchestration pour détecter et enquêter sur les incidents de cybersécurité.
- Observabilité : utilisez des outils de surveillance pour garder un œil sur les performances et la sécurité de vos conteneurs. Cela vous aidera à détecter et à réduire les cybermenaces. Des outils comme Prometheus, Grafana, Falco et ELK Stack peuvent être convenables.
- Configuration de la surveillance en temps réel : utilisez des outils de journalisation, de surveillance et d’alerte pour détecter et répondre aux cyber-incidents en temps réel.
9 – Pratiques de sécurité automatisées
- Sécurité CI/CD : intégrez des contrôles de sécurité dans votre pipeline CI/CD pour détecter les vulnérabilités dès le début du processus de développement avec des solutions comme GitHub Advanced Security.
- Automatisez les correctifs : mettez en œuvre des outils automatisés pour gérer les correctifs et les mises à jour de vos images de conteneur, de vos dépendances et de votre infrastructure. Appliquez les concepts de la spécification Supply-Chain Levels for Software Artifacts (SLSA). Déployez progressivement des pistes pour une amélioration continue.
10 – Conteneurs jetables à durée de vie courte
- Architecture de micro-services : créez des applications précises et spécialisées à fonction unique ou à processus unique. Ces applications en conteneurs sont plus faciles à créer, tester, déployer, mettre à jour et surveiller. En outre, elles permettront aux équipes de développer et de déployer leurs services de manière indépendante.
- Arrêtez et faites évoluer les processus de manière dynamique en fonction de la charge de travail et de la demande : concevez vos applications de micro-services pour qu’elles soient éphémères et qu’elles soient lancées à la demande pour une évolutivité graduelle et une résilience améliorée. L’arrêt constant des micro-services à durée de vie courte facilite les mises à jour et décourage les cyberattaques persistantes et les tentatives de pirates informatiques de s’implanter au sein de votre environnement.
11 – Intervention face aux incidents, sensibilisation et formation
- Manuels et procédures : en ce qui concerne les environnements conteneurisés, développez des manuels et des procédures pour la Planification de l’intervention face aux incidents (PII) et effectuez régulièrement des exercices de cybersécurité pour tester votre intervention face aux incidents de cybersécurité relatifs aux applications conteneurisées.
- Sensibilisation de votre équipe : assurez-vous que votre équipe est consciente et suit les meilleures pratiques en matière de sécurité des conteneurs et reste à jour avec les dernières tendances et outils de sécurité.
12 – Gestion sécurisée des secrets
- Stockez en toute sécurité les informations secrètes et les données client confidentielles telles que les clefs API et les mots de passe.
- Utilisez des outils tels que Kubernetes Secrets ou HashiCorp Vault.
13 – Adoption de la réalisation devancée des tests
Les réalisations devancées des tests sont des approches des tests logiciels et des tests systèmes dans lesquelles les tests sont effectués plus tôt dans le cycle de vie (c’est-à-dire déplacés vers la gauche par rapport au calendrier ou déroulement chronologique du projet).
- Intégrez la cybersécurité dès le début du processus de développement des applications conteneurisées.
- Veillez à ce que les contrôles sécuritaires de la cybersécurité fassent partie du pipeline CI/CD.
Conclusion
Les entreprises ont de plus en plus recours aux applications conteneurisées via l’infonuagique pour les opérations quotidiennes de leurs activités. Cependant, les faiblesses du réseau infonuagique peuvent être néfastes pour les entreprises utilisant des applications conteneurisées. Par conséquent, que peuvent faire vos entreprises pour contrecarrer et freiner la prolifération potentielle des vulnérabilités du réseau infonuagique, et comment l’avenir pourrait-il dérouler? Les projections futures pour la protection des applications conteneurisées évoluent en toute rapidité, notamment avec plusieurs tendances et innovations1 prometteuses à l’horizon, lesquelles sont résumées comme suit :
- Modèles de sécurité avec vérifications systématiques : cette approche ne suppose aucune confiance inhérente au sein du réseau hôte et du réseau pont, et impose une authentification et une autorisation strictes pour chaque demande d’accès. Une telle stratégie est particulièrement pertinente pour les applications et environnements conteneurisés de technologie infonuagique au sein desquels la sécurité traditionnellement enracinée dans le périmètre est moins efficace et plus exposée aux piratages informatiques et autres cyberattaques.
- Sécurité résultant de la réalisation devancée des tests : l’intégration des pratiques de sécurité au début du cycle de vie du développement des logiciels permet d’identifier et d’amoindrir les vulnérabilités avant qu’elles n’atteignent la production. Cette approche réduit la surface d’attaque cybernétique et garantit que la cybersécurité est un élément essentiel du processus de développement logiciel.
- Automatisation et IA améliorées : les outils d’automatisation et les solutions générées par l’IA deviennent de plus en plus complexes, permettant ainsi une surveillance continuelle, la détection des cybermenaces et l’intervention face aux incidents. Ces technologies peuvent aider à gérer la complexité de la sécurité des conteneurs et à répondre aux cybermenaces en temps réel.
- Outils de sécurité de source libre : l’essor des outils de source libre comme Trivy et Falco offre des options accessibles et puissantes pour la sécurité des conteneurs. Ces outils offrent des fonctionnalités telles que l’analyse des vulnérabilités, la sécurité d’exécution et les contrôles de conformité.
- Sécurité d’orchestration améliorée : à mesure que les plateformes d’orchestration de conteneurs comme Kubernetes continuent d’évoluer, elles intègrent des fonctionnalités de sécurité plus robustes. Celles-ci incluent de meilleurs paramètres de sécurité par défaut, un renforcement du Contrôle d’accès basé sur les rôles (CABR) et des politiques améliorées régissant les réseaux.
- Informatique confidentielle : cette technologie émergente vise à protéger les données confidentielles utilisées en effectuant des calculs dans un Environnement d’exécution sécurisé (EES) fondé sur le matériel informatique. L’informatique confidentielle peut ajouter une couche de sécurité supplémentaire pour les tâches et charges de travail confidentielles qui fonctionnent à l’intérieur des applications conteneurisées.
En approuvant, en adoptant et en exploitant les meilleures pratiques et technologies de cybersécurité brièvement expliquées dans cette Infolettre du mois d’août 2024, vos organisations peuvent mieux protéger leurs applications conteneurisées contre l’évolution des cybermenaces relatives à la sécurité de l’infonuagique.
[1] Dave Wreski. LinuxSecurity. The Future of Container Security: Trends and Open-Source Tools to Watch. The 13th of July 2024. https://linuxsecurity.com/features/future-of-container-security
Ressources et références bibliographiques
- Thomas Erl and Eric Monroy. Cloud Computing: Concepts, Technology, Security and Architecture. 2nd Paperback Edition of August 2023, Pearson Publishing PLC, London, England, UK. 608 pages.
https://www.pearson.com/en-ca/subject-catalog/p/cloud-computing-concepts-technology-and-architecture-second-edition/P200000009788/9780138052256 - Justin Domingus and John Arundel. Cloud Native DevOps with Kubernetes: Building, Deploying and Scaling Modern Applications in the Cloud. 2nd Paperback Edition of April 2022, O’Reilly Media Educational Publisher, Sebastopol, California, USA, 353 pages.
https://www.oreilly.com/library/view/cloud-native-devops/9781492040750/ - Nills Franssen, Shivakumar Gopalakrishnan and Gunther Lenz. Hands-On Kubernetes on Azure: Use Azure Kubernetes Service to Automate Management, Scaling, and Deployment of Containerized Application. 3rd Paperback Edition of May 2021, Packt Publishing Ltd., Birmingham, England, UK. 528 pages.
https://www.packtpub.com/en-us/product/hands-on-kubernetes-on-azure-third-edition-9781801079945 - Bruno Dossantos. Containerization and Beyond: Unlock the Power of Docker to Build, Deploy and Scale Modern Applications. June 2023 Paperback Edition. Independently Published via Amazon Kindle Direct Publishing. 512 pages.
https://www.amazon.ca/Mastering-Docker-Containerization-Beyond-Applications/dp/B0C6W39PMS - Nitti Aggarwal. CloudThat Technologies. Karnataka, India. Docker Networking: Exploring Bridge, Host, and Overlay Modes. The 21st of March 2024.
https://www.cloudthat.com/resources/blog/docker-networking-exploring-bridge-host-and-overlay-modes - LoadForge. Optimizing Advanced Network Configuration for High-Performance Docker Containers – LoadForge Guides.
https://loadforge.com/guides/advanced-network-configuration-for-high-performance-docker-containers - UNRepo. Step-by-Step Tutorials for Seamless Skill Development.Working with Network Bridges – Tutorial.
https://www.unrepo.com/docker/working-with-network-bridges-tutorial - Dave Wreski. LinuxSecurity. The Future of Container Security: Trends and Open-Source Tools to Watch. The 13th of July 2024.
https://linuxsecurity.com/features/future-of-container-security
Contributions
Nous remercions en particulier le Conseil national de recherches du Canada (CNRC) pour son soutien financier par le biais de son Programme d’aide à la recherche industrielle (PARI).
Auteur: Pierre Tremblay et Al.
Éditeur en chef : Alan Bernardi
Rédacteur professionnel & traducteur-réviseur certifié: Ravi Jay Gunnoo (C.P.T. ISO 17100)