Contexte et choix de l’infrastructure Cloud
Lenstra a été contactée par une société de services financiers cherchant à améliorer ses mesures de sécurité lors de sa migration vers le Cloud. Cette transition a donné lieu à une infrastructure hybride dans laquelle les applications ont été déployées sur des clusters Kubernetes sur site et dans le Cloud. Pour gérer en toute sécurité les secrets de production dans ce nouvel environnement, la société a utilisé HashiCorp Vault. Grâce à elle, chaque projet d'application s'est vu attribuer son propre espace de noms Vault, garantissant une isolation et une sécurité strictes. Malgré ses avantages en termes de sécurité, le déploiement de cette solution a paradoxalement entrainé de nouvelles problématiques.
Les défis engendrés par la migration Cloud :
• Intégration manuelle : les déploiements Kubernetes devaient être intégrés manuellement à HashiCorp Vault par chaque équipe de développement, soit via l'intégration directe de l'application, soit en exécutant un sidecar Vault parallèlement à l'application.
• Augmentation du temps de développement : le processus manuel a entraîné des efforts redondants, car chaque équipe répétait des tâches similaires.
• Configurations incohérentes : différentes équipes ont abordé l'intégration de manière légèrement différente, ce qui a entraîné des incohérences au sein de l'organisation.
• Risque accru de mauvaises configurations : ces incohérences ont augmenté la probabilité de mauvaises configurations, compromettant potentiellement à la fois la sécurité et l'efficacité.
L’objectif de Lenstra :
Améliorer le processus d'intégration pour maximiser la productivité tout en minimisant le risque de mauvaises configurations.
Les solutions envisagées pour faciliter la synergie de l’environnement existant vers le système Coud :
• Agent Injector : automatise l'injection des agents Vault dans les pods Kubernetes, prend en charge la création de modèles, les secrets dynamiques et la plupart des méthodes d'authentification. Il garantit qu'aucun secret durable n'est stocké en dehors de Vault, tous les secrets étant écrits sur des volumes en mémoire éphémères.
• Vault Secrets Operator : intègre HashiCorp Vault au système de gestion des secrets natif de Kubernetes, offrant une excellente expérience utilisateur aux développeurs. Cependant, il synchronise les secrets Vault avec Kubernetes, qui agit comme un cache local de cluster durable, ce qui compromet potentiellement la sécurité en stockant les secrets en dehors de Vault.
• Vault CSI Provider : gère les secrets sous forme de volumes dans Kubernetes, offrant une méthode standardisée et efficace pour gérer les secrets. Cependant, il manque actuellement de prise en charge de la mise en cache, de la rotation des secrets et de la création de modèles de secrets.
Sélection du meilleur outil pour favoriser la transition Cloud sans perte de sécurité
Notre objectif n'était pas seulement d'améliorer l'expérience des développeurs, mais également de maintenir les mêmes normes de sécurité en garantissant que les secrets ne soient pas stockés en dehors de HashiCorp Vault. Cette exigence excluait l'opérateur Vault Secrets : Kubernetes ne prend actuellement pas en charge les secrets éphémères et les enregistre dans le magasin etcd. Après les tests, nous avons déterminé que l'Agent Injector était la solution la plus adaptée. Il s'agit d'un outil mature qui prend en charge la création de modèles de secrets et offre une excellente expérience utilisateur, ce qui en fait le meilleur choix pour nos besoins.
En résumé
En automatisant l'intégration entre HashiCorp Vault et Kubernetes à l'aide de l'Agent Injector, nous espérons obtenir une livraison logicielle plus rapide, des configurations cohérentes et un risque réduit de mauvaises configurations tout en maintenant les normes de sécurité actuelles. Nous surveillons également les nouvelles fonctionnalités de l'intégration de Vault et Kubernetes, dans l'espoir d'améliorer encore l'expérience des développeurs. Par exemple, la prise en charge de la rotation des secrets dans le pilote CSI Secrets Store, actuellement en version alpha, devrait être incluse dans une future version de Kubernetes.