La plateforme Kubernetes permet de déployer des applications facilement. Cependant, pour sécuriser une application déployée sur un Kubernetes, il est nécessaire de réaliser quelques configurations supplémentaires.
Dans cet article, nous allons voir quelles sont les bonnes pratiques de déploiement des applications sur un cluster Kubernetes EKS.
Lorsque l'on déploie des applications sur un cluster Kubernetes EKS, on peut avoir accès à différents informations telles que :
Dans ces cas là, nous allons avoir besoin de s'authentifier auprès d'AWS pour pouvoir accéder à ces services. Nous pourrions ajouter les informations de connexion via des secrets Kubernetes et automatiser l'accès à ces configurations ou mots de passes au lancement du Pod (avec un script shell par exemple). Cependant, cela ne serait pas la manière la plus sécurisée d'accéder et d'utiliser les configurations.
À la place, nous allons mettre en place le schéma ci-dessous :
Dans ce schéma on peut voir :
Nous déployons une application dans le namespace application
Lors du déploiement nous définissons un secret
et une resource customisée nommée SecretProviderClass
(ajouté lors que l'on installe le CSI driver). Cette resource customisée définit quel secret (hébergé sur l'AWS secret Manager) nous voulons avoir.
Cette ressource va utiliser un service account Kubernetes pour accéder au secret. En background, ce service account a les roles IAM d'accès à un role IAM.
Précédemment, une policy IAM a été attachée à ce role IAM permettant à celui-ci d'accéder au ressources AWS nécessaires (par exemple un secret dans le service managé AWS Secrets Manager).