Sécurité des conteneurs dans AKS activé par Azure Arc
S’applique à : AKS sur Azure Local 22H2, AKS sur Windows Server
Cet article décrit différentes méthodes pour sécuriser les conteneurs utilisés pour empaqueter et déployer des applications et éviter d’introduire des vulnérabilités de sécurité dans AKS activé par Azure Arc.
Les conteneurs offrent des avantages opérationnels et de sécurité, car les applications et les services sont séparés dans un environnement. Les conteneurs permettent également de réduire les effets des défaillances du système en raison de leur abstraction, ce qui garantit le temps d’activité, et empêche les attaques susceptibles de compromettre les applications ou les services. Les conteneurs s’exécutent généralement sur une couche abstraite du système d’exploitation hôte, et cette abstraction offre une séparation en plus de l’opportunité d’appliquer un modèle de défense en couches.
Vous pouvez également configurer une sécurité de conteneur continue en sécurisant le pipeline de conteneurs, l’application et l’environnement de déploiement de conteneur. Les sections suivantes décrivent certaines pratiques recommandées pour implémenter la sécurité des conteneurs.
Sécuriser les images
Pour empêcher l’accès non autorisé, hébergez les images sur un registre sécurisé et approuvé. Les images doivent avoir un certificat TLS avec une autorité de certification racine approuvée, et le Registre doit utiliser le contrôle d’accès en fonction du rôle (RBAC) avec une authentification forte. Vous devez ajouter une solution d’analyse d’images pendant la conception de CI/CD pour la création et la livraison de conteneur. La solution d’analyse d’images permet d’identifier les vulnérabilités et les expositions courantes (CVE) et de s’assurer que les images exploitables ne sont pas déployées sans correction.
Renforcer l’environnement hôte
Un aspect important de la sécurité de conteneur est la nécessité de durcir la sécurité des systèmes sur lesquels vos conteneurs s’exécutent, ainsi que la façon dont ils agissent au moment de l’exécution. La sécurité de conteneur doit se concentrer sur la pile entière, y compris votre hôte et les démons. Vous devez supprimer les services de l’hôte qui ne sont pas critiques et vous ne devez pas déployer de conteneurs non conformes dans l’environnement. Ainsi, l’accès à l’hôte peut uniquement se produire via les conteneurs et le contrôle est centralisé sur le démon de conteneur, en supprimant l’hôte de la surface d’attaque. Ces étapes sont particulièrement utiles lorsque vous utilisez des serveurs proxy pour accéder à vos conteneurs, ce qui peut contourner accidentellement vos contrôles de sécurité de conteneur.
Limiter les ressources de conteneur
Lorsqu’un conteneur est compromis, les attaquants peuvent tenter d’utiliser les ressources hôtes sous-jacentes pour effectuer des activités malveillantes. Une bonne pratique est de définir des limites d’utilisation de mémoire et de processeur pour réduire l’impact des violations.
Sécuriser correctement les secrets
Un secret est un objet contenant des informations sensibles qui peuvent avoir besoin d’être transmises entre l’hôte et le conteneur. Par exemple, les mots de passe, les certificats SSL/TLS, les clés privées SSH, les jetons, les chaîne de connexion et d’autres données qui ne doivent pas être transmises en texte brut ou stockées non chiffrées. Vous devez conserver tous les secrets hors des images et les monter via le moteur d’orchestration de conteneur ou un gestionnaire de secrets externes.
Pratiquer l’isolation
Utilisez l’isolation et n’utilisez pas d’utilisateur privilégié ou d’utilisateur racine pour exécuter l’application dans un conteneur. Évitez d’exécuter des conteneurs en mode privilégié, car cela peut permettre à un attaquant d’élever facilement les privilèges si le conteneur est compromis. La connaissance de l’UID (code d’identification unique) et du GID (code d’identification de groupe) de l’utilisateur racine dans un conteneur peut permettre à un attaquant d’accéder aux fichiers écrits par la racine sur la machine hôte et de les modifier. Vous devez aussi utiliser le principe du moindre privilège selon lequel une application a uniquement accès aux secrets dont elle a besoin. Vous pouvez créer un utilisateur d’application pour exécuter le processus d’application.
Déployer le monitoring de la sécurité du runtime
Comme il y a toujours un risque de compromission malgré les précautions contre les attaques sur votre infrastructure, vous devez monitorer en continu et journaliser le comportement de l’application pour empêcher les activités malveillantes et les détecter. Les outils tels que Prometheus fournissent un moyen efficace de surveiller votre infrastructure.