Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
In DevOps Dernière mise à jour : 26 juillet 2023
Partager sur:
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Les conteneurs dans DevOps ne sont pas un nouveau concept. Ce sont des bacs à sable virtuels avec tous les outils nécessaires pour exécuter des microservices, y compris de grandes applications.

Vous pouvez considérer les conteneurs comme des systèmes de packaging qui vous permettent (en tant que développeur) de stocker tout ce dont vous avez besoin pour exécuter une application, par exemple, les runtimes et les codes binaires, à partir d'un point centralisé.

Les conteneurs aident les développeurs à déplacer des applications d'un environnement à un autre (comme expédier une application d'une machine locale vers un environnement virtuel ou la déplacer de la phase initiale à la phase de production), éliminant tous les problèmes liés aux différents logiciels et paramètres de configuration dans les développeurs et la production. fin.

Statista Un rapport sur la technologie des conteneurs montre que 50 % des organisations mondiales ont adopté l'orchestration des conteneurs. Bien que cette technologie ait augmenté son adoption en raison de ses avantages, les conteneurs pourraient ouvrir une passerelle pour les attaques de cybersécurité s'ils ne sont pas contrôlés.

Détails CVE, la source de données par excellence sur les failles de sécurité, a enregistré 62 vulnérabilités adaptées à Docker au moment d'écrire ces lignes. Cela n'appelle-t-il pas les meilleures pratiques des développeurs pour résoudre ces pièges et protéger les conteneurs pour des processus DevOps réussis ?

Cet article détaille le concept de sécurité des conteneurs, met en évidence quelques défis et vous guide sur les meilleures pratiques à adopter lors de l'utilisation de la technologie des conteneurs.

Qu'est-ce que la sécurité des conteneurs ?

YouTube vidéo

La sécurité des conteneurs est un processus continu qui utilise des protocoles de sécurité (outils et politiques) pour protéger les conteneurs et leurs environnements contre les menaces potentielles.

Si elles ne sont pas cochées, les menaces peuvent endommager votre application, son infrastructure, ses temps d'exécution, ses bibliothèques système, son système d'exploitation et son noyau, entre autres fonctionnalités.

Étant donné que les conteneurs sont disponibles de manière transitoire (momentanément) et sont également destinés aux déploiements et à la mise à l'échelle dynamiques, il est nécessaire d'avoir une sécurité automatisée et à chaque étape du cycle de vie du développement logiciel (SDLC).

A lire également: Introduction à Kubernetes Kops pour les débutants

Quels sont les défis de la sécurité des conteneurs ?

YouTube vidéo

Bien que les conteneurs aient de nombreuses récompenses (comme l'accélération de la livraison de logiciels), ils ne sont pas à l'abri des défis, principalement parce qu'ils ont besoin de mesures de sécurité (ils manquent de capacités d'auto-sécurité).

En effet, les conteneurs accèdent au matériel via un système d'exploitation (OS) hébergé. Cela signifie qu'un seul conteneur peut avoir plusieurs images de conteneur sous-jacentes introduisant une portée plus large pour les surfaces d'attaque, ce qui présente certains défis.

La première est Configuration incorrecte du conteneur, où les développeurs oublient de personnaliser et d'utiliser des configurations de conteneur par défaut qui présentent des pièges tels que certains ports exposés et non sécurisés qui peuvent ne pas être idéaux pour votre application, des informations d'identification divulguées telles que des mots de passe et des jetons d'authentification, et l'émission excessive d'autorisations pour les runtimes de conteneur (lorsqu'il est exécuté en tant que root ). Lorsqu'elles ne sont pas remplacées, ces configurations par défaut offrent des possibilités d'attaques.

Suivant est vulnérabilité de l'infrastructure des conteneurs. Ici, les packages intégrés au conteneur, tels que le code d'application, les bibliothèques et les configurations, ou ceux du système d'exploitation hôte, introduisent des vulnérabilités. La sensibilité peut être introduite à n'importe quelle étape du cycle de vie d'une application, par exemple, lorsque des dépendances externes sont intégrées dans une image de conteneur, des bibliothèques open source sont installées dans le cadre de l'application, des images de base de conteneur provenant de registres de conteneurs et d'hôtes tiers. qui sont exploitables via les réseaux et les terminaux.

Visibilité sur les charges de travail des conteneurs est l'un des plus grands défis des conteneurs. Cela est dû à la nature hautement dynamique des conteneurs qui empêche les outils de surveillance de localiser les conteneurs en cours d'exécution et d'inspecter leur comportement sur le réseau. Une meilleure visibilité empêche les violations et améliore le temps de réponse à l'incidence le cas échéant.

De plus, le conteneur est susceptible si une phase du pipeline CI/CD n'est pas sécurisée, soit sur le code d'application, soit sur l'infrastructure de charge de travail du conteneur. Bien qu'il soit courant pour les développeurs d'aborder la sécurité à la fin du cycle de vie d'une application, l'administrer à chaque étape du développement protège vos applications de ce revers.

Quels outils peuvent résoudre les problèmes de sécurité des conteneurs ?

Vous pouvez vous assurer que vos solutions d'entreprise déployées sont sécurisées en appliquant la sécurité et l'intégrité des conteneurs à l'aide d'outils de sécurité. Ces outils recherchent les vulnérabilités et les surveillent en permanence à la recherche d'attaques, de bogues ou de tout problème.

Que vous recherchiez outils de sécurité des conteneurs open source ou un type commercialisé, tous serviront le même objectif. Ils fonctionnent tous en auditant votre infrastructure de conteneurs et en s'exécutant contre les vulnérabilités et expositions courantes (CVE).

Voici quelques outils que vous pouvez essayer : Pingsafe Editors Choice, Datadog Cloud SIEM, Anchore, Sophos Cloud-Native Security, Bitdefender GravityZone, Sysdig secure, Aqua Security et RedHat Advanced Cluster Security for Kubernetes.

A lire également: 11 scanners de sécurité des conteneurs pour trouver des vulnérabilités

Les meilleures pratiques pour la sécurité des conteneurs

Malgré les défis posés ci-dessus en matière de sécurité des conteneurs, voici une ventilation des meilleures conventions que vous pouvez mettre en œuvre pour optimiser la sécurité des conteneurs à toutes les étapes du cycle de vie de l'application.

Securing Your Images

Vous utilisez des images de conteneur pour créer des conteneurs. La moindre mauvaise configuration ou action malveillante peut déclencher des vulnérabilités dans les conteneurs en production. Vous pouvez contrer cela en :

  • Utiliser des images dignes de confiance – Lorsque vous ne créez pas vos images à partir de zéro, vous optez toujours pour travailler avec des images provenant de sources fiables. Les dépôts publics comme Docker Hub ont des images, y compris celles avec malware et mauvaise configuration.
  • Y compris les composants nécessaires uniquement – S'il y a des composants dont votre application n'a pas besoin, il serait préférable de les supprimer. Par exemple, le système UNIX présente naturellement 'awk' et "sed” binaires.
  • Inclure votre application dans l'image du conteneur – Une image de conteneur contient un sous-ensemble du système d'exploitation (OS) et de l'application en cours d'exécution. Pour chaque outil et bibliothèque extraits du conteneur, il s'agit d'une menace potentielle. Il serait préférable d'inclure l'application dans l'image du conteneur pour résoudre ce problème. Cela se fait via un binaire compilé statiquement avec toutes les dépendances requises.

Automating Scans for Vulnerability and Management

YouTube vidéo

L'analyse et la gestion régulières des vulnérabilités de votre conteneur et de vos hôtes permettent de détecter les vulnérabilités à n'importe quelle étape du cycle de vie de l'application.

Dans ce cas, vous pouvez activer l'analyse du code pour détecter les bogues et les tests de sécurité des applications statiques (SAST) pour trouver les vulnérabilités dans votre code d'application. Une analyse de composition logicielle (SCA) peut fournir une visibilité sur les composants logiciels open source générant une nomenclature logicielle qui peut être recoupée avec des vulnérabilités open source documentées.

De plus, la numérisation d'image analyse le contenu et le processus de création d'image de votre conteneur pour la sensibilité. Avec des outils comme Clair, vous pouvez rechercher les vulnérabilités connues. Vous pouvez également utiliser des tests de sécurité dynamiques des applications (DAST), qui signalent les risques de sécurité en fonction du comportement du conteneur. Les outils DAST peuvent également effectuer une analyse de l'hôte, où vous inspectez les composants de l'hôte du conteneur (noyau de l'hôte et système d'exploitation) pour une mauvaise configuration.

Bien que les mesures ci-dessus soient adoptées dans le processus continu du cycle de vie d'un conteneur, vous pouvez adopter la philosophie du "décalage vers la gauche". Cela signifie mettre en œuvre la sécurité dès le début de votre cycle de vie de développement. Un bon outil si vous choisissez cette approche est Anecdote.

Securing Container Registries

Les registres de conteneurs sont un moyen centralisé efficace de stocker des images et de les distribuer. Souvent, les organisations auront des milliers d'images stockées dans des registres publics ou privés. Il existe plusieurs mesures pour s'assurer que tous les membres de l'équipe et les collaborateurs utilisent des images sans vulnérabilité.

Tout d'abord, la mise en place d'un contrôle d'accès des utilisateurs (pour les registres privés) établit qui peut publier et accéder aux images. Bien qu'il s'agisse d'une mesure de sécurité de base, elle empêche les personnes non autorisées de publier, modifier ou supprimer vos images.

La mesure suivante consiste à signer vos images, ce qui lie chaque image à la personne qui l'a signée, ce qui rend difficile la substitution d'une image à une image compromise. Vous pouvez utiliser le Trust du contenu Docker techniques pour ajouter des signatures numériques aux données envoyées et reçues des registres. Enfin, rappelez-vous que numérisation de vos images (en continu) aide à détecter toute vulnérabilité critique.

Monitoring Containers

Vous pouvez optimiser la visibilité sur les charges de travail des conteneurs grâce à des outils d'observabilité. Les outils doivent être capables de surveiller et de tester les vulnérabilités de tous les composants et d'activer la journalisation en temps réel des événements pour les environnements conteneurisés.

Les outils d'observabilité détectent les menaces en auditant les métriques et les journaux de tous les composants de la pile de conteneurs et en analysant les anomalies. Avec cette approche, vous êtes en mesure de corriger les erreurs de configuration immédiatement lorsqu'elles sont identifiées.

Pour collecter des mesures d'utilisation des ressources, utilisez des outils tels que cAdvisor ou kube-state-metrics. Pour surveiller l'activité des conteneurs et les performances de vos clusters, utilisez des outils comme Grafana ou Prometheus.

Si vous souhaitez analyser le trafic réseau entre les conteneurs, utilisez Wireshark ou tcpdump. Si vous êtes sur un service Kubernetes géré comme (AKS), utilisez Azure Monitor pour suivre les ressources et les menaces de sécurité.

De plus, Azure Log Analytics peut collecter et analyser vos ressources AKS. Si vous choisissez Amazon EKS, Amazon CloudTrail est bon pour la journalisation et la surveillance ; utilisez Amazon Cloud Watch.

Implementing Network Security

Les mesures de contrôle de la sécurité du réseau peuvent aider à protéger contre l'accès non autorisé aux conteneurs. Le critère utilisé ici est la segmentation du réseau qui isole les conteneurs, les limitant à l'accès aux seuls services nécessaires.

Si vous exécutez vos applications conteneurisées sur Kubernetes, vous pouvez utiliser les stratégies réseau K8s pour configurer le trafic de pod entrant et sortant dans les clusters. Ceci, à son tour, limite le trafic à des pods spécifiques en fonction des étiquettes.

La sécurité de la couche de transport (TLS) peut être augmentée pour la communication des pods. Vous pouvez opter pour les techniques TLS ou Secure Sockets Layer (SSL) pour une communication sécurisée entre le serveur API et les autres composants. Les équilibreurs de charge sont une bonne solution si vous souhaitez également limiter l'entrée de trafic dans vos clusters.

Si vos clusters disposent de microservices, vous pouvez garantir un trafic sécurisé via outils de maillage de services comme Meshery or Linkerd. Enfin, sécurisez votre réseau si vous utilisez un prodder cloud pour héberger vos clusters.

Si vous utilisez Azure Kubernetes Service (AKS), utilisez des groupes de sécurité réseau (NSG) pour la gestion du trafic. Si vous êtes sur Amazon Elastic Kubernetes Service (EKS), la meilleure solution serait les groupes de sécurité Amazon Virtual Private Cloud (VPC).

Reducing Surface Attacks

Minimiser la surface des attaques présente deux avantages ; une vitesse de service accrue et une réduction du risque de failles de sécurité.

À l'aide d'une construction en plusieurs étapes, vous pouvez créer des images légères avec une petite attaque de surface et un temps de démarrage et des performances améliorés. Il existe plusieurs solutions pour ce faire. Si vous utilisez Linux, vous pouvez utiliser Alpine Linux, BusyBox ou Tiny Core Linux.

Pour Ubuntu, il y a Ubuntu Minimal. Vous pouvez également utiliser Scratch, une image Docker spéciale - essentiellement un conteneur ouvert, pour créer des images minimalistes dès le départ.

Limiting Container Privileges

Le principe employé ici consiste à fournir une autorisation minimale pour effectuer une tâche donnée. Lorsque les conteneurs sont exécutés en tant que root, ils accordent à un utilisateur divers privilèges d'opération tels que l'installation de packages ou la puissance d'opération de lecture-écriture sur votre système d'exploitation.

Le risque est que les attaquants puissent tirer parti de l'augmentation de la puissance de l'exécution du conteneur en cas de compromission. Cela étant, il existe deux solutions viables. Vous pouvez exécuter des conteneurs en mode sans racine ou limiter les capacités du noyau LINUX à celles nécessaires à la charge de travail du conteneur.

Managing Secrets Safely

YouTube vidéo

Vos fichiers de configuration de conteneur et de docker doivent être exempts de secrets. Les secrets incluent les certificats, les mots de passe, les clés d'interface de programme d'application (API) et les jetons. Et bien qu'il s'agisse de la meilleure pratique, vous verrez souvent ces secrets codés en dur dans le processus de génération ou les images de code source.

Dans de tels cas, les données sensibles pénètrent dans des conteneurs et sont mises en cache dans des couches de conteneurs intermédiaires même lorsque les conteneurs ont été supprimés. Dans de tels cas, la meilleure approche consiste à déployer une solution de gestion des secrets comme AWS Secrets Manager et Voûte pour stocker et gérer les informations d'identification secrètes.

Empowering Your Team

Responsabiliser-votre-équipe

En tant que dernière mesure de sécurité, il est crucial de former votre équipe aux meilleures pratiques de sécurité. Cela signifie que tous les membres de votre équipe peuvent identifier et répondre aux menaces de sécurité.

Un bon moyen d'y parvenir est d'ajouter la sécurité des conteneurs à votre équipe onboarding processus. Offrir une formation pratique, un apprentissage continu et des évaluations de sécurité régulières permet à votre équipe DevOps de se démarquer en la dotant des dernières tendances en matière de sécurité.

Réflexions finales

La sécurité des conteneurs est un processus continu crucial de la cycle de vie du développement logiciel. La meilleure approche pour cette requête consiste à intégrer la sécurité directement du code de l'application à l'environnement d'exécution du conteneur, au système d'exploitation hôte et à l'infrastructure réseau sous-jacente.

Vous pouvez y parvenir en suivant un plan stratégique impliquant la vérification des conteneurs et en n'utilisant que ceux provenant de sources fiables. Entreprenez le durcissement des conteneurs pour vous assurer qu'ils ne disposent que des services nécessaires. Instaurez des méthodes de journalisation faciles à mettre en œuvre via des outils de surveillance. Segmentez votre réseau afin que les conteneurs soient séparés de l'infrastructure globale.

Signez toujours vos images pour valider l'entrée et la sortie des données via vos services. De plus, vous devriez avoir des analyses et des tests de pénétration réguliers pour vérifier les vulnérabilités et prendre immédiatement des mesures correctives. Et à mesure que le paysage technologique évolue, restez toujours à jour avec les dernières pratiques de sécurité.

Ensuite, consultez comment automatiser la sécurité.

  • John Walter
    Auteur
    John Walter est un ingénieur électricien et électronique passionné par le développement de logiciels et la technologie blockchain. Il aime apprendre de nouvelles technologies et éduquer la communauté en ligne à leur sujet. Il est également organiste classique.
Merci à nos commanditaires
Plus de bonnes lectures sur DevOps
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.
    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder