Qu'est-ce que la sécurité des conteneurs ?
La sécurité des conteneurs se concentre sur la protection des registres de conteneurs, les systèmes centralisés de stockage et de distribution des images du conteneur. Les registres de conteneurs jouent un rôle central dans l'écosystème des conteneurs, en garantissant l'intégrité et la sécurité des applications conteneurisées. Une bonne sécurité des conteneurs implique l'utilisation de registres de confiance, la mise en œuvre d'un contrôle d'accès rigoureux, la surveillance des vulnérabilités et la sécurisation du serveur d'hébergement. En outre, elle exige de refuser les connexions non sécurisées et de supprimer les images périmées. En donnant la priorité à la sécurité du registre des conteneurs, les organisations peuvent protéger leurs environnements conteneurisés et maintenir la confiance des utilisateurs et des clients.
La sécurité des conteneurs expliquée
La sécurité des conteneurs se concentre sur un élément essentiel de l'écosystème des conteneurs : le registre des conteneurs. Dans le récit plus large de la sécurité des conteneurs, le registre joue le rôle de gardien des images du conteneur, les éléments constitutifs des applications conteneurisées. Le registre des conteneurs est donc plus qu'une simple unité de stockage. Il s'agit plutôt d'un point nodal où l'intégrité des images d'application est à la fois maintenue et distribuée.
Comprendre les registres de conteneurs
Dans un environnement conteneurisé , comme vous le savez, les applications avec leurs dépendances sont progicialisées dans des conteneurs, ce qui les rend portables et faciles à déployer sur les différentes plateformes. Les registres de conteneurs servent ce processus en fournissant un emplacement où les images du conteneur peuvent être versionnées, récupérées et déployées de manière cohérente.
Le registre des conteneurs est donc un système centralisé de stockage et de distribution des images du conteneur. Le registre permet aux développeurs et aux équipes d'exploitation de stocker, de gérer et de partager des images de conteneurs, qu'ils utiliseront pour créer et déployer des applications conteneurisées et des microservices.
Registres publics et privés
Les organisations peuvent utiliser une combinaison de registres de conteneurs publics et privés pour gérer leurs images du conteneur, ainsi que d'autres artefacts.
Les registres publics, tels que Docker Hub et GitHub Container Registry, une sous-fonction de GitHub Packages, offrent une vaste collection d'images open-source que les organisations peuvent utiliser comme base pour leurs applications. Ces registres sont généralement accessibles à tous, ce qui permet aux développeurs de trouver et d'utiliser facilement des images prédéfinies.
Mais les organisations ont souvent des exigences spécifiques et des logiciels propriétaires qui nécessitent l'utilisation de registres privés.
Figure 1 : Registre des conteneurs / référentiel public ou privé
Les registres de conteneurs privés, tels que Azure Container Registry, Amazon Elastic Container Registry et Google Container Registry, fournissent des environnements sécurisés et contrôlés pour le stockage et la gestion d'images propriétaires et d'artefacts connexes. Ces registres ne sont accessibles qu'aux utilisateurs autorisés au sein de l'organisation afin de garantir la sécurité des informations sensibles et des images personnalisées.
En utilisant une combinaison de registres publics et privés, les organisations peuvent tirer parti des avantages des images open-source tout en conservant le contrôle de leurs logiciels propriétaires. Cette double approche permet aux organisations d'optimiser leurs flux de gestion des conteneurs et de rationaliser le processus de déploiement.
Composants de la sécurité des conteneurs
Étant donné que le registre est au cœur du fonctionnement d'un environnement conteneurisé - et que les organisations peuvent facilement avoir des dizaines de milliers d'images qui y sont stockées - la sécurisation du registre fait partie intégrante de l' intégrité du cycle de vie du développement logiciel.
Les vulnérabilités peuvent compromettre plus que l'application. Un attaquant tirant parti d'une configuration erronée pourrait obtenir un accès non autorisé au système CI/CD et se déplacer latéralement pour accéder au système d'exploitation sous-jacent. Ils pourraient potentiellement manipuler des flux CI/CD légitimes, obtenir des jetons sensibles et passer à l'environnement de production où l'identification d'un identifiant exposé pourrait leur permettre d'entrer dans le réseau de l'organisation.
Article connexe: Anatomie d'une attaque sur le pipeline d'approvisionnement du cloud
La sécurité du registre commence par l'utilisation de registres et de bibliothèques de confiance. La surveillance constante de l'évolution des vulnérabilités est fondamentale, tout comme la sécurisation du serveur d'hébergement et la mise en œuvre de politiques d'accès substantielles. Une sécurité adéquate du registre devrait interdire les connexions non sécurisées, signaler ou supprimer les images périmées et appliquer des restrictions strictes en matière d'authentification et d'autorisation.
Examinons ces mesures plus en détail.
Promouvoir l'intégrité des images et des artefacts dans CI/CD
La compréhension des risques associés aux images et aux artefacts souligne l'importance de mettre en œuvre des contrôles rigoureux pour garantir leur intégrité. Envisagez de mettre en œuvre les stratégies suivantes.
Refuser les connexions non sécurisées
Bien que les registres publics puissent permettre un accès anonyme aux images du conteneur, vous devez maintenir des connexions sécurisées afin d'éviter les attaques de type "man-in-the-middle", les manipulations non autorisées et l'accès non autorisé à des informations sensibles.
Pour refuser les connexions non sécurisées, configurez vos systèmes pour qu'ils n'acceptent que les protocoles sécurisés tels que HTTPS ou les connexions cryptées TLS. Commencez par obtenir et installer un certificat SSL/TLS valide auprès d'une autorité de certification (AC) de confiance pour votre domaine. Ensuite, mettez à jour la configuration de votre serveur ou de votre service pour imposer l'utilisation de HTTPS ou de TLS, en désactivant les protocoles non sécurisés comme HTTP. En fonction de votre configuration, il peut s'agir d'ajuster les paramètres de votre serveur web (par exemple, Nginx, Apache), de l'équilibreur de charge ou de l'application. Pensez également à utiliser des fonctions de sécurité telles que HSTS (HTTP Strict Transport Security) pour demander aux navigateurs de toujours utiliser des connexions sécurisées lorsqu'ils accèdent à votre site ou à votre service.
Supprimer les images périmées
Établissez une politique pour définir les images périmées (images datant de plus d'un certain temps ou inutilisées pendant une certaine période) et utilisez des outils de registre ou des API pour répertorier et filtrer les images en fonction de cette politique. Par exemple, dans Docker Registry, utilisez l'API Docker Registry pour récupérer les métadonnées des images et filtrer par la date du dernier ajout ou par l'étiquette. Dans d'autres registres, des API ou des outils CLI similaires peuvent être disponibles. Une fois que vous avez identifié les images périmées, utilisez les commandes ou les API appropriées pour les supprimer, en veillant à respecter les meilleures pratiques du registre en matière de collecte des déchets.
Éviter les problèmes d'IAM dans les registres tiers
La gestion des identités et des accès (IAM) est cruciale pour les organisations, en particulier dans les systèmes de gestion du contrôle des sources (SCM) comme GitHub, où les référentiels stockent des codes et des actifs précieux. Une IAM inadaptée peut entraîner des risques de sécurité dans le pipeline CI/CD. Pour optimiser la sécurité et la gouvernance des référentiels, les organisations peuvent utiliser l'authentification unique (SSO) et le système de gestion des identités interdomaines (SCIM) pour gérer les contrôles d'accès. Le SSO n'est toutefois disponible que pour GitHub Enterprise, ce qui expose les autres licences à des risques.
Pour atténuer les problèmes liés aux adresses électroniques privées dans les comptes GitHub, aux comptes GitHub fantômes et à un désengagement incomplet, appliquez l'authentification à deux facteurs (2FA), établissez un protocole d'accueil avec des comptes d'entreprise dédiés et tenez un inventaire des comptes d'utilisateurs. Pour les organisations utilisant le SSO, la mise en œuvre du SCIM garantit le déprovisionnement automatique des utilisateurs et élimine l'accès par le biais d'identifiants périmés. La prise en compte des risques liés à l'IAM permet de protéger les référentiels, l'écosystème CI/CD et de maintenir un niveau de sécurité élevé dans tous les systèmes.
Article connexe: Les 3 principaux risques liés à l'IAM dans votre organisation GitHub
Employer des restrictions d'authentification et d'autorisation suffisantes
Les identités bénéficiant de plus d'autorisations que nécessaire pour le référentiel ouvrent des possibilités d'escalade des privilèges et peuvent entraîner des modifications de code non autorisées, une altération du processus de construction et l'accès à des données sensibles. L'automatisation peut aider à valider les contrôles d'accès, à vérifier les autorisations des utilisateurs et à identifier les vulnérabilités potentielles, ce qui permet aux organisations d'adopter des mesures proactives de routine, telles que :
- Analyser et cartographier toutes les identités dans l'écosystème de l'ingénierie. Pour chaque identité, mappez constamment le fournisseur d'identité, les permissions accordées et les permissions utilisées. Veillez à ce que l'analyse couvre toutes les méthodes d'accès aux programmes.
- Suppression des autorisations inutiles pour chaque identité dans les différents systèmes de l'environnement.
- Fixer un délai acceptable pour la désactivation ou la suppression des comptes périmés. Désactivez et supprimez les identités qui dépassent cette période d'inactivité.
- Cartographier tous les collaborateurs externes et aligner leur identité sur le principe du moindre privilège. Dans la mesure du possible, accordez des autorisations assorties d'une date d'expiration pour les comptes humains et programmatiques.
- Interdire aux employés d'accéder aux SCM, aux CI ou à d'autres plateformes CI/CD en utilisant leurs adresses électroniques personnelles ou des adresses provenant de domaines n'appartenant pas à l'organisation. Surveillez les adresses non-domaines dans différents systèmes et supprimez les utilisateurs non conformes.
- Interdire aux utilisateurs de s'enregistrer eux-mêmes dans les systèmes et accorder des autorisations en fonction de la nécessité.
- Éviter d'accorder des autorisations de base dans un système à tous les utilisateurs et à de grands groupes avec des comptes d'utilisateurs attribués automatiquement.
- Créer des comptes dédiés à chaque contexte spécifique, par opposition à l'utilisation de comptes partagés, et accorder l'ensemble exact des exigences requises pour le contexte donné.
Mise en œuvre du stockage sécurisé
Créez un référentiel sécurisé et infalsifiable pour stocker les artefacts. Activez le versionnage pour conserver un historique des modifications des artefacts et mettez en œuvre une surveillance en temps réel pour suivre et alerter en cas d'activité suspecte. En cas d'artefacts compromis, configurez le système de manière à faciliter le retour à des versions antérieures connues.
Effectuer des contrôles de validation de l'intégrité du développement à la production
Mettre en œuvre des processus et des technologies permettant de valider l'intégrité des ressources tout au long de la chaîne de livraison des logiciels. Lorsque les développeurs génèrent une ressource, ils doivent la signer à l'aide d'une infrastructure de signature de ressources externe. Avant de consommer une ressource dans les étapes suivantes du pipeline, vérifiez son intégrité auprès de l'autorité de signature.
Signature du code
Les solutions SCM offrent la possibilité de signer les commits avec une clé unique pour chaque contributeur, empêchant ainsi les commits non signés de progresser dans le pipeline.
Logiciel de vérification des artefacts
Les outils conçus pour signer et vérifier le code et les artefacts, tels que Sigstore de la Fondation Linux, peuvent empêcher les logiciels non vérifiés de progresser dans le pipeline.
Détection des dérives de configuration
Mettez en œuvre des mesures pour détecter les dérives de configuration, telles que les ressources dans les environnements cloud qui ne sont pas gérées à l'aide d'un modèle infrastructure-as-code signé. De telles dérives pourraient indiquer des déploiements à partir de sources ou de processus non fiables.
Utiliser la signature cryptographique
Utilisez une infrastructure à clé publique (PKI) pour signer cryptographiquement les artefacts à chaque étape du pipeline CI/CD. Cette pratique permet de valider les signatures auprès d'une autorité de certification de confiance avant de les utiliser. Configurez votre pipeline CI/CD pour qu'il rejette les artefacts dont les signatures ne sont pas valides ou manquantes afin de réduire les risques de déployer des ressources altérées ou des modifications non autorisées.
N'utilisez que des images du conteneur sécurisées
Les images du conteneur peuvent contenir des vulnérabilités que les attaquants peuvent exploiter pour obtenir un accès non autorisé au conteneur et à son hôte. Pour éviter cela, utilisez des images du conteneur sûres et fiables provenant de sources réputées et scannez-les régulièrement. Lorsque vous déployez un conteneur à partir d'un registre public, il est particulièrement important de commencer par analyser le conteneur à la recherche de logiciels malveillants et de vulnérabilités.
Appliquer la validation multi-sources
Adoptez une stratégie de validation multisource qui vérifie l'intégrité des artefacts à l'aide de diverses sources, telles que les sommes de contrôle, les signatures numériques et les algorithmes de hachage sécurisés, ainsi que les référentiels de confiance. Maintenez les algorithmes cryptographiques et les clés à jour pour préserver leur efficacité.
Validation des ressources par des tiers
Les ressources tierces incorporées dans les pipelines de construction et de déploiement, comme les scripts exécutés pendant le processus de construction, doivent faire l'objet d'une validation rigoureuse. Avant d'utiliser ces ressources, calculez leur empreinte et comparez-la à l'empreinte officielle fournie par le fournisseur de ressources.
Intégrer l'analyse de sécurité
Le pipeline CI/CD ne doit utiliser que du code vérifié (approuvé par la production) lors de la création d'images. Incorporez des outils d'analyse des vulnérabilités - ainsi que l'analyse de la composition des logiciels (SCA) et les tests statiques de sécurité des applications (SAST) - dans le pipeline CI/CD pour garantir l'intégrité des images avant de les pousser vers le registre à partir duquel le déploiement de la production les tirera. Veillez également à respecter les meilleures pratiques. Ne créez pas d'images, par exemple, avant d'avoir supprimé tous les composants logiciels, bibliothèques, fichiers de configuration, secrets, etc. qui ne sont pas nécessaires.
En adoptant une approche conservatrice et prudente, les équipes pourront remédier aux vulnérabilités dès le début du processus de développement et maintenir un niveau élevé de qualité du code tout en réduisant le risque d'incidents de sécurité. Choisissez une solution de numérisation d'images du conteneur capable de s'intégrer à tous les types de registres. Les plateformes telles que Prisma Cloud offrent aux administrateurs une solution de numérisation d'images flexible et unique.
Sandbox d'analyse d'images
L'utilisation d'un sandbox d'analyse d'images améliorera votre stratégie de sécurité des conteneurs pendant le développement et le déploiement d'applications conteneurisées, en vous permettant de tirer et d'exécuter en toute sécurité des images du conteneur qui contiennent éventuellement des progiciels obsolètes et vulnérables et des logiciels malveillants intégrés à partir de référentiels externes.
Les capacités du bac à sable vous permettront d'analyser les comportements anormaux suspects des conteneurs, tels que les cryptominers, l'analyse des ports, les binaires modifiés et les modifications des modules du noyau, dans un environnement contrôlé. Vous pouvez mettre en évidence des risques et identifier des dépendances suspectes enfouies dans votre chaîne d'approvisionnement en logiciels que l'analyse statique n'aurait pas permis d'identifier.
- Capturez le profil détaillé du temps de fonctionnement du conteneur.
- Évaluer le risque d'une image
- Intégrer l'analyse dynamique dans votre flux de travail
Établir des politiques de validation et un calendrier d'audit
Pour garantir une validation correcte de l'intégrité des images et des artefacts, les organisations doivent établir des politiques claires qui définissent les processus de validation. Une fois établi, vérifiez régulièrement la conformité avec les politiques internes afin d'identifier et de traiter les faiblesses, ainsi que les domaines de non-conformité. Une surveillance et une analyse constantes permettront de détecter les anomalies et les activités non autorisées.
Liste de contrôle de la sécurité du registre des conteneurs en bref
- Utiliser des registres et des bibliothèques de confiance
- Sécuriser le serveur d'hébergement et mettre en œuvre des politiques d'accès robustes
- Mise en œuvre de restrictions suffisantes en matière d'authentification et d'autorisation
- Mettre en place un système de stockage sécurisé pour les artefacts
- Effectuer des contrôles de validation de l'intégrité tout au long du processus CI/CD
- Utiliser la signature cryptographique
- Appliquer la validation multi-sources
- Valider les ressources tierces
- Intégrer l'analyse de sécurité dans le pipeline CI/CD.
- Établir des politiques de validation et des calendriers d'audit réguliers
FAQ sur le registre des conteneurs
Un Pipeline CI/CD automatise les étapes permettant de faire passer un logiciel du contrôle de version aux mains des utilisateurs finaux. Elle englobe l'intégration continue (CI) et le déploiement continu (CD), automatisant ainsi le processus de livraison de logiciels et de changements d'infrastructure. Le pipeline comprend généralement des étapes telles que la compilation du code, les tests unitaires, les tests d'intégration et le déploiement. Cette automatisation garantit que le logiciel est toujours dans un état déployable, ce qui facilite les cycles de mise à jour rapide et fiable des logiciels. Les pipelines CI/CD sont essentiels aux pratiques DevOps, car ils permettent aux équipes de fournir des modifications de code plus fréquemment et de manière plus fiable.
- SCM aide à maintenir la cohérence et la traçabilité du code utilisé pour créer des images du conteneur, ce qui permet aux développeurs d'identifier facilement la version spécifique du code utilisée pour créer une image du conteneur.
- SCM permet aux développeurs de collaborer sur le code, en s'assurant que les images du conteneur construites et stockées dans le registre répondent aux exigences de qualité de l'organisation.
- Les outils SCM améliorent le flux de travail en s'intégrant aux pipelines CI/CD et en automatisant le processus de construction, de test et de poussée des images du conteneur vers le registre.
Un webhook est une méthode permettant d'augmenter ou de modifier le comportement d'une page web ou d'une application web à l'aide de rappels personnalisés. Ces rappels peuvent être maintenus, modifiés et gérés par des utilisateurs et des développeurs tiers qui n'ont pas nécessairement accès au code source de la page web ou de l'application. Dans le cloud computing et DevOps, les webhooks sont utilisés pour déclencher des flux de travail automatisés, tels que les Pipelines CI/CD, lorsque des événements spécifiques se produisent dans un référentiel ou un environnement de déploiement. Les webhooks permettent des notifications en temps réel et des réactions automatiques aux événements, ce qui améliore l'automatisation et l'intégration entre les services et les outils cloud.
Notary est un outil open-source qui fournit un cadre pour la publication et la vérification des signatures de contenu, telles que les images du conteneur. Il met en œuvre les spécifications de The Update Framework (TUF) pour la diffusion sécurisée de contenus et de mises à jour. Notary garantit que le contenu reçu par l'utilisateur correspond exactement à l'intention de l'éditeur, ce qui permet d'éviter les modifications non autorisées.
Le notaire est généralement utilisé avec Docker Content Trust pour signer et vérifier les images Docker.