Le cauchemar des hackers : une infrastructure sans secrets
Dans le monde de la cybersécurité, gérer les secrets est un véritable casse-tête. Imaginez un coffre-fort rempli de mots de passe, de clés d'API et de certificats... C'est ce qui fait saliver les cybercriminels ! Lors de la WAX CONF 2024, Thibault Lengagne a partagé son parcours vers une infrastructure "Zero-Creds" (sans secrets), où ces précieux trésors disparaissent comme par magie. Prêts pour le tour de magie ?
Contexte et solution Zero-Creds
D'après Verizon, 49% des cyberattaques exploitent le vol de secrets. Oui, vos mots de passe et clés peuvent être utilisés bien après avoir été volés, comme un vieux film qui repasse à la télé. Mais si on pouvait construire un monde sans secrets à long terme, réduisant ainsi les occasions de se faire hacker ? Eh bien, Thibault dit que c'est possible !
Il a proposé une série de gadgets technologiques pour nous débarrasser de ces secrets encombrants :
- SSO (Single Sign-On) et OIDC (OpenID Connect) pour une authentification centralisée sans se souvenir de mille et un mots de passe. Un seul suffit !
- Cloud IAM (Identity and Access Management) et Workload Identity pour une gestion des identités et des accès super sécurisés et intégrés.
- Vault credential brokering et Just-in-Time access pour une gestion dynamique et éphémère des accès. Adieu les mots de passe éternels !
Mécanismes et outils pour la rotation des secrets
Tourner, tourner, c’est la clé ! Thibault a montré comment automatiser la rotation et la gestion des secrets :
- Vault pour stocker vos secrets en sécurité et les distribuer en douce aux applications qui en ont besoin.
- SOPS (Secrets OPerationS) pour chiffrer les secrets directement dans le code source. On ajoute une couche de sécurité, ni vu ni connu.
- External-secrets pour référencer les secrets nécessaires depuis un secret store, sans se casser la tête.
Avantages d'une approche Zero-credentials
Passer au modèle Zero-Creds, c’est un peu comme passer à la vitesse lumière :
- Réduction du risque d'attaque de 60%. Plus de revente de secrets volés et des hackers obligés de laisser des traces ! Ils en pleurent déjà.
- Facilitation du développement. Moins de complexité, plus de fun ! Vos développeurs vous remercieront.
- Conformité et sécurité renforcées par design, avec des audits d'accès simplifiés et des procédures d'urgence plus efficaces. Tout le monde y gagne !
Limites rencontrées ?
Bon, tout n'est pas rose dans le monde Zero-Creds. Il y a des défis, notamment avec les vieilles applis qui n'aiment pas les nouveaux systèmes d'authentification comme le SSO. Mais pas de panique ! L’intégration de technologies comme Boundary ou des adaptations spécifiques pour ces dinosaures IT peut sauver la mise.
En éliminant les secrets à long terme, nous pouvons sécuriser nos environnements et simplifier la vie des équipes de développement. Alors, prêts à dire adieu aux secrets et à tourner une nouvelle page dans la lutte contre les cyberattaques ? Let's go Zero-Creds !
Guide de survie d'une application HA sur un cluster Kubernetes mutualisé
Bienvenue dans l'univers dynamique de l'observabilité et de la haute disponibilité ! François Berthault a partagé ses deux ans d'expériences palpitantes avec une plateforme d'observabilité "homemade" sur un cluster Kubernetes mutualisé. Ce guide de survie regorge de conseils pratiques pour maintenir des performances au top dans un environnement partagé.
Le stack d'observabilité de François
Il a démarré fort en présentant sa stack d'observabilité, la pièce maîtresse de toute infrastructure Kubernetes qui se respecte :
- Logs : Quickwit, Elastic et Kibana sont les champions pour une gestion fluide et efficace des journaux d'événements.
- Métrologie : Victoria Metrics, Prometheus, et Grafana Mimir surveillent rigoureusement les métriques, avec alertes et monitoring de précision.
- Traces et APM : Des systèmes de tracing pour suivre chaque requête à la trace et identifier les moindres soucis de performance.
Profiling et stress testing : à l'épreuve des balles
Pour des applications aussi solides qu'un roc, François utilise des techniques de profiling avancées :
- Stress testing avec k6 et du chaos engineering via Chaoskube et Litmus, pour tester la résilience en saturant les ressources comme les disques et la RAM.
- Kyverno pour du Static Application Security Testing (SAST) sur les manifests Kubernetes, assurant une sécurité proactive.
Maîtriser la gestion des ressources
Dans un cluster mutualisé, la gestion des ressources est cruciale. Voici comment s'y prendre :
- Evictions de pods : Analyse des évictions pour optimiser la stabilité des applications.
- Memory et CPU limits : Limites strictes pour garantir une allocation équilibrée des ressources et éviter la contention.
- Quality of Service (QoS) : Politiques QoS pour prioriser les workloads critiques et assurer des performances optimales.
Des déploiements smooth comme jamais
François a des astuces de pro pour des déploiements sans accroc :
- Canary releases et blue-green deployments : pour tester les nouvelles versions en production sans stress.
- Keda pour Horizontal Pod Autoscaler (HPA) : Utilisation de métriques personnalisées pour une scalabilité dynamique basée sur la performance réelle des applications.
Ajustements dynamiques et API Kubernetes
Il explore aussi des solutions de pointe pour une gestion des ressources au top :
- Vertical Pod Autoscaler (VPA) : Avec une politique de redimensionnement "InPlace", les ressources sont ajustées sans redémarrer les pods.
- API Kubernetes : Surveillance intégrée des métriques CPU et RAM pour une gestion réactive et précise des charges de travail.
Conclusion : vers une observabilité proactive
Pour conclure, il insiste sur l'importance de l'observabilité et de la gestion proactive dans les environnements Kubernetes mutualisés. Observer, investiguer, comprendre, implémenter, et partager : ce cycle permet de maintenir des performances et une disponibilité optimale, tout en contribuant à l'évolution continue de l'écosystème Kubernetes. Grâce à ce guide de survie, vous êtes prêt à affronter les défis futurs avec assurance et expertise !
Check-Up des pipelines CI/CD : vers un pipeline idéal
Thomas Boni nous invite à explorer le développement et l'optimisation des pipelines CI/CD, soulignant l'importance de la fonctionnalité, de la sécurité, de la maintenabilité, et de l'observabilité. Ce parcours est jalonné par des stratégies éprouvées, des erreurs communes, et des leçons précieuses.
Fondamentaux du CI/CD
Thomas rappelle les principes de base du CI/CD, cruciaux pour comprendre les enjeux et les objectifs de l'optimisation des pipelines. Le Continuous Integration/Continuous Deployment est essentiel pour l'automatisation des tests, l'intégration, et le déploiement des applications.
Retour d'expérience
Un REX pertinent mentionné concernait la mise en place d'un pipeline CI/CD chez un client. La création d'un fichier .gitlab-ci.yml semble simple en surface, mais exige une compréhension profonde de nombreux aspects :
- Apprentissage de la syntaxe spécifique à l'outil.
- Identification des tâches automatisables sans intervention humaine.
- Sélection des outils et des images appropriées.
- Tests des jobs et assurance de la qualité des résultats.
Audits et erreurs courantes
Thomas a souligné l'importance d'auditer les pipelines pour identifier les failles de sécurité et les pratiques non optimales, telles que :
- Copier-coller le même code de pipeline dans plusieurs projets sans documentation adéquate.
- Réaction inappropriée à des vulnérabilités critiques (par exemple, commenter le job CI au lieu de résoudre le problème).
- Gestion inadéquate des authentifications, comme l'exposition de tokens dans les fichiers de configuration.
- Utilisation imprudente de nouvelles dépendances, en optant pour des images Docker non vérifiées et potentiellement dangereuses.
Pour remédier à ces défis, Thomas plusieurs stratégies ont été proposées :
- Création de templates centralisés, versionnés, documentés, et paramétrables pour les différents langages et frameworks.
- Utilisation de variables CI/CD ou, idéalement, d'un service externe de gestion des secrets pour sécuriser l'accès et l'utilisation des informations sensibles.
- Établissement d'une registry whitelist pour garantir que seules les images vérifiées et sécurisées sont utilisées.
- Simplification des workflows et référencement précis des versions pour toutes les dépendances externes.
- Audits réguliers des pipelines pour maintenir les standards de sécurité et de performance.
En conclusion, Thomas présente l'outil R2DevOps, conçu pour aider les équipes à respecter les meilleures pratiques de sécurité et de performance dans leurs pipelines CI/CD. Il mentionne également les ressources essentielles telles que l'OWASP Top Ten CI/CD Security Risks, les CIS Benchmarks, les directives NIS2, et les normes SLSA pour guider les développements futurs.
Cette présentation nous a offert un aperçu précieux des défis et des solutions dans l'optimisation des pipelines CI/CD. En suivant ses conseils et en implémentant les meilleures pratiques proposées, les organisations peuvent non seulement améliorer l'efficacité de leurs pipelines mais aussi renforcer significativement leur sécurité.
Gestion des clusters Kubernetes sans Internet : stratégies et outils
Christophe Jauffret a abordé un défi courant mais complexe : opérer des clusters Kubernetes dans des environnements avec accès internet restreint ou inexistant. Cette situation est fréquente dans des contextes d'entreprise où la sécurité et la conformité réglementaire dictent des restrictions sévères sur la connectivité réseau.
Dans beaucoup d'entreprises, l'accès à Internet n'est pas une donnée acquise. Les contraintes telles que les firewalls, les proxies, les DMZ, et les ACL créent un environnement où chaque ressource réseau doit être soigneusement planifiée et justifiée. D’où l'importance d'adapter les outils et les pratiques pour assurer une gestion efficace des clusters Kubernetes dans ces conditions.
Outils et stratégies pour la gestion sans Internet
Au cours de sa prise de parole, Christophe a présenté plusieurs solutions et outils pour faciliter la gestion des clusters Kubernetes sans connexion internet directe :
- Container Runtime et Registry : Adapter les runtimes de conteneurs et utiliser des registries internes pour gérer localement les images et les configurations.
- Crane et Skopeo : Utiliser des outils comme Crane pour vérifier où les images sont stockées et éviter les problèmes liés à l'utilisation de CDN. Skopeo peut être utilisé pour synchroniser des registries Docker publics avec un registry interne, facilitant la gestion des images dans un environnement airgap.
- Policy Management avec Kyverno : Configurer Kyverno pour valider et modifier les requêtes en temps réel, et pour automatiser la gestion des policies, y compris la redirection des requêtes vers des registries locaux.
Sécurité et conformité
Les règles de sécurité sont cruciales dans les environnements restreints :
- Filtrage de destination et proxies réseau : Établir des règles strictes pour le filtrage des destinations et configurer les proxies au niveau des runtimes de conteneurs pour assurer une communication sécurisée et contrôlée.
- Authentication et DMZ : Mettre en place des stratégies d'authentification pour les utilisateurs et configurer les zones démilitarisées pour protéger les réseaux internes.
Exemples pratiques
Christophe a partagé plusieurs exemples de mise en œuvre de ces outils et stratégies :
- Harbor : Utiliser Harbor comme registry local pour gérer les images de conteneurs dans un environnement airgap, permettant une synchronisation efficace et sécurisée des images nécessaires.
- Streaming d'images avec stargz-snapshotter : Pour les grandes images Docker, l'utilisation de techniques comme le streaming multipart avec stargz-snapshotter réduit significativement le temps de téléchargement des images, optimisant ainsi les performances dans des environnements à bande passante limitée.
La gestion des clusters Kubernetes sans accès Internet direct est complexe mais gérable grâce à l'adoption de stratégies et d'outils adaptés. Les solutions présentées par Christophe Jauffret offrent des moyens pratiques pour surmonter les défis de sécurité, de conformité, et de performance dans des environnements hautement restreints.
VM ou Bare Metal : Où exécuter vos workloads Kubernetes ?
Avantages et inconvénients de VM et Bare Metal
Performance :
- Bare Metal : Offre généralement de meilleures performances globales car il n'y a pas d'hyperviseur qui consomme des ressources. Cela est particulièrement avantageux pour les applications gourmandes en ressources.
- VM : Peut présenter des performances légèrement réduites en raison de l'overhead de l'hyperviseur, mais permet une plus grande flexibilité et efficacité dans la gestion des ressources.
Mise à l'échelle :
- Bare Metal : La mise à l'échelle peut être plus coûteuse et lente, car elle nécessite souvent l'acquisition de matériel supplémentaire et une configuration manuelle.
- VM : Permet une mise à l'échelle plus rapide et flexible grâce à la création rapide de nouvelles instances VM sans nécessité d'investissement matériel immédiat.
Coût :
- Selon une étude de Principled Technologies pour VMware, bien que l'utilisation de VM implique un surcoût dû à l'hyperviseur, elle peut également permettre une consolidation des ressources, réduisant le nombre de serveurs physiques nécessaires, ainsi que les coûts associés à la maintenance et au hosting.
Sécurité :
- Bare Metal : Moins de couches logicielles signifie potentiellement moins de vecteurs d'attaque, mais cela peut aussi signifier moins de possibilités de segmentation.
- VM : Offre de meilleures opportunités pour la ségrégation des charges de travail. La séparation virtuelle des clusters peut réduire l'impact d'une CVE (Common Vulnerabilities and Exposures) en limitant les risques à des instances VM spécifiques plutôt qu'à l'ensemble du serveur physique.
Gestion au quotidien
- Maintenance et Opérations Continues (MCO) : Les VM peuvent offrir une gestion simplifiée grâce à des outils de gestion d'hyperviseur, permettant des mises à jour de firmware et des patches de sécurité sans perturber l'ensemble du système.
- Déploiement de Clusters Kubernetes : Les VM permettent un déploiement plus rapide des clusters grâce à la possibilité de dupliquer des configurations et de déployer de nouvelles instances sans intervention physique.
Gauthier Leblanc conclut que le choix entre VM et Bare Metal pour Kubernetes dépend largement des besoins spécifiques de l'entreprise en termes de performance, de coût, de sécurité, et de gestion. Les VM offrent flexibilité, facilité de gestion, et une meilleure isolation pour la sécurité, tandis que le Bare Metal peut être préférable pour les applications nécessitant les performances les plus élevées. La décision finale doit être guidée par une évaluation soigneuse des besoins spécifiques et des résultats des tests spécifiques à l'environnement et aux workloads envisagés.
Conclusion
Alors que nous levons le rideau sur cette édition de la WAX, les idées et les innovations partagées continuent de résonner, nous préparant à aborder avec audace les défis technologiques à venir. Ces conférences nous invitent à une réflexion profonde :
Comment pouvons-nous continuer à innover tout en assurant la sécurité et la performance dans un monde où les menaces évoluent aussi rapidement que les technologies ?
Alors que nous anticipons les futurs chapitres de notre secteur, restons engagés à transformer ces défis en de nouvelles frontières d'opportunités.
Un grand merci à l'équipe des Filles et des Garçons de la Tech pour une organisation impeccable. Bravo pour cet événement mémorable et enrichissant !
Lionel GAIROARD
Practice Leader DevSecOps