Installer plusieurs contrôleurs Snyk Kubernetes dans un même cluster Kubernetes
Pas Apicella
15 août 2022
0 minutes de lectureKubernetes fournit une interface qui facilite l’exécution de systèmes distribués. Il prend en charge la mise à l’échelle et le basculement de vos applications, propose des modèles de déploiement et bien plus encore. En matière de sécurité, ce sont les équipes qui déploient des workloads dans le cluster Kubernetes qui doivent déterminer lesquels surveiller pour répondre aux exigences de sécurité de leurs applications.
Mais que se passerait-il si chaque équipe pouvait contrôler les images de conteneurs analysées et les workloads concernés ? Plusieurs équipes pourraient déployer des workloads dans Kubernetes, chacune ayant ses propres exigences en matière de surveillance. Pour répondre au mieux à ce besoin, chaque équipe peut configurer sa propre intégration Snyk Kubernetes et surveiller les workloads qui la concernent. Voyons comment procéder.
Présentation de l’intégration Snyk Kubernetes
Snyk s’intègre à Kubernetes pour vous permettre d’importer et de tester en continu vos workloads en cours d’exécution, afin d’identifier les vulnérabilités dans les images sous-jacentes ainsi que les configurations susceptibles de réduire leur niveau de sécurité. Une fois les workloads déployés, Snyk continue de les surveiller pour détecter les expositions à de nouvelles vulnérabilités et tout autre problème de sécurité, à mesure que de nouveaux conteneurs sont déployés ou que la configuration des workloads évolue.

Diagramme de l’architecture de l’intégration Kubernetes
Comment installer plusieurs contrôleurs Snyk dans un même cluster Kubernetes
Passons à la partie pratique ! Nous allons vous guider pas à pas pour configurer plusieurs contrôleurs Snyk dans un même cluster Kubernetes. Voici les étapes à suivre :
Configurer des espaces de noms distincts
Créer une organisation Snyk pour chaque espace de noms
Installer et configurer
snyk monitorpour le premier espace de noms (apples)Installer et configurer
snyk monitorpour le deuxième espace de noms (bananas)Vérifier que les workloads déployés sont automatiquement importés par le biais de la policy
Déployer des workloads dans bananas, qui seront importés automatiquement à l’aide d’un fichier de policy Rego
Prérequis
Vous devez disposer d’un compte Snyk Business ou Enterprise pour utiliser l’intégration Kubernetes. Si vous n’en avez pas, vous pouvez démarrer un essai gratuit de notre offre Business. Même si vous ne souhaitez pas essayer par vous-même, nous vous encourageons à poursuivre votre lecture (en passant les blocs de code) pour découvrir comment installer et gérer plusieurs contrôleurs Snyk dans un même cluster Kubernetes.
Un cluster Kubernetes, tel qu’AKS, EKS, GKE, Red Hat OpenShift ou toute autre distribution prise en charge.
Étape 1 : configurer des espaces de noms distincts
Pour cette démonstration, j’utilise un service Azure AKS comme cluster Kubernetes. Nous allons y installer deux contrôleurs Snyk, chacun dans son propre espace de noms : l’un dans l’espace de noms apples et l’autre dans l’espace de noms bananas, comme l’illustre le schéma ci-dessous.

Créez les espaces de noms comme indiqué ci-dessous :
Étape 2 : créer une organisation Snyk pour chaque espace de noms
En utilisant des organisations Snyk distinctes, nous séparons l’analyse des workloads. Les équipes produit peuvent ainsi disposer de leur propre organisation et mieux contrôler l’analyse de leurs workloads et de leurs images. Vous pouvez utiliser la même organisation avec chacun des contrôleurs Snyk déployés, mais nous allons ici les séparer. Dans les deux cas, les workloads apparaîtront avec un libellé que nous définirons lors de l’installation des contrôleurs Snyk.

Nos nouvelles organisations
Une pour l’espace de noms apples :

Une pour l’espace de noms bananas :

Une fois créées, vous devriez voir deux organisations vides dans l’application Snyk. Nous les utiliserons bientôt.


Pour chaque organisation, activez l’intégration Kubernetes en sélectionnant l’onglet Integrations, puis Kubernetes et enfin Connect. Suivez ensuite les instructions Snyk sur Kubernetes pour terminer la configuration.
Notez les Integration IDs de l’intégration Kubernetes de chaque organisation Snyk : vous en aurez bientôt besoin. Pour récupérer l’Integration ID Kubernetes, cliquez sur l’icône organization settings dans la barre de navigation supérieure de Snyk, puis accédez à Integrations dans la barre latérale et sélectionnez l’intégration Kubernetes, comme indiqué ci-dessous.

Étape 3 : installer et configurer snyk monitor pour l’espace de noms apples
Maintenant que nos organisations et nos intégrations sont configurées et connectées à notre cluster, nous pouvons configurer Snyk Monitor depuis un terminal.
Nous allons créer un fichier pour nous abonner aux événements de workloads, définir les critères de nos abonnements, installer le chart Helm de Snyk pour la surveillance Kubernetes, puis configurer et démarrer le moniteur.
Créer le fichier de registre
Dans un terminal, créez un répertoire pour l’organisation apples, puis accédez-y :
Créez un fichier nommé workload-events.rego contenant le texte suivant, en remplaçant <APPLES_INTEGRATION_ID> par l’Integration ID de l’intégration Kubernetes de l’organisation apples.
Dans la policy Rego ci-dessous, nous demandons au contrôleur Snyk d’importer ou de supprimer uniquement les workloads de l’espace de noms apples, à condition que leur type ne soit ni CronJob ni Service. Pour en savoir plus sur les différents types de workloads, consultez la documentation Snyk.
workload-events.rego
Ajouter les charts Helm Snyk à votre dépôt
Accédez à votre environnement Kubernetes et exécutez la commande suivante pour ajouter le dépôt Snyk Charts à Helm. Nous en aurons besoin pour installer ce chart Helm.
Créer la configuration de Snyk Monitor et déployer le chart Helm
Un secret Kubernetes nous permet d’exécuter le moniteur sans exposer d’identifiants en texte brut. Dans ces étapes, nous allons créer et utiliser ce secret lors du déploiement de la configuration de l’organisation apples.
Créez le secret snyk-monitor pour l’espace de noms apples, en remplaçant <APPLES_INTEGRATION_ID> par l’ID de l’intégration Kubernetes de l’application Snyk pour apples. Dans cette démonstration, nous utilisons Docker Hub public pour notre registre de conteneurs, qui ne nécessite pas d’identifiants pour accéder aux images publiques. Pour en savoir plus sur l’utilisation de registres de conteneurs privés, consultez la documentation du contrôleur Snyk.
Créez ensuite une configmap pour stocker le fichier de policy Rego qui permettra à snyk-monitor de déterminer ce qu’il faut importer ou supprimer automatiquement de l’espace de noms apples :
Installez ensuite snyk-monitor dans l’espace de noms apples, en remplaçant <APPLES_INTEGRATION_ID> par l’ID d’intégration de l’application Snyk pour apples dans la commande :
Remarque :Le libellé « AKS K8s - Apples » vous permettra de retrouver les workloads importés dans l’interface Snyk, comme vous le verrez bientôt.
Enfin, vérifiez que tout fonctionne (cette commande suppose que jq est installé ; sinon, omettez la partie | jq de l’instruction) :
À ce stade, un contrôleur Snyk portant un nom unique est installé dans l’espace de noms apples. Nous verrons plus loin comment ce contrôleur importe automatiquement les workloads en fonction de notre configuration, au fur et à mesure de leur déploiement dans l’espace de noms apples du cluster Kubernetes. Pour l’instant, si vous actualisez la page des projets de l’organisation apples, vous remarquerez peut-être que Snyk Monitor lui-même a été analysé : c’est parce que nous lui avons demandé d’analyser les workloads de type Deployment dans l’espace de noms apples.

Étape 4 : installer et configurer snyk monitor pour l’espace de noms bananas
Créez un répertoire nommé bananas, puis accédez-y :
Créez ensuite un fichier nommé workload-events.rego contenant le texte suivant, et remplacez <BANANAS_INTEGRATION_ID> par l’ID de l’intégration Kubernetes de l’application Snyk pour bananas :
Créez ensuite le secret snyk-monitor pour l’espace de noms bananas, en remplaçant BANANAS_INTEGRATION_ID par l’ID de l’intégration Kubernetes de l’application Snyk pour bananas :
Créez ensuite une configmap pour stocker le fichier de policy Rego qui permettra à snyk-monitor de déterminer ce qu’il faut importer ou supprimer automatiquement de l’espace de noms bananas :
Installez snyk-monitor dans l’espace de noms bananas, en remplaçant ¤BANANAS_INTEGRATION_ID> par l’ID de l’intégration Kubernetes de l’application Snyk pour bananas :
Enfin, vérifiez que tout fonctionne :
Étape 5 : vérifier que les workloads déployés sont automatiquement importés par le biais de la policy
Nous allons maintenant déployer des workloads dans l’espace de noms apples pour vérifier qu’ils sont importés automatiquement. Commençons par une application Spring Boot que nous allons déployer dans Kubernetes comme indiqué ci-dessous.
Créez un fichier nommé springbootemployee-K8s.yaml contenant les éléments suivants :
Déployez-le ensuite :
Après quelques minutes, vérifiez que le workload a été analysé et automatiquement importé dans l’organisation Snyk apples, comme demandé au contrôleur Snyk dans l’espace de noms apples.

Étape 6 : déployer des workloads dans bananas — importation automatique à l’aide du fichier de policy Rego
Créez un fichier nommé snyk-boot-web-deployment.yaml contenant les éléments suivants :
Déployez-le comme suit :
Après environ 3 minutes, vérifiez que le workload a été analysé et automatiquement importé dans l’organisation Snyk bananas de l’application Snyk, comme demandé au contrôleur Snyk dans l’espace de noms bananas.

Bonus : consulter les journaux des contrôleurs Snyk
La configuration Kubernetes et les fichiers YAML peuvent être délicats. Si vous rencontrez des problèmes lors de la configuration de vos moniteurs, il peut être utile de consulter les journaux de chaque contrôleur Snyk, comme dans les exemples de commandes ci-dessous :
Contrôleur Snyk Apples
Contrôleur Snyk Bananas
Récapitulatif
Dans cet article, nous avons montré comment déployer plusieurs contrôleurs Snyk dans un même cluster Kubernetes, chacun surveillant son propre espace de noms. Les contrôleurs communiquent avec l’API Kubernetes pour déterminer quels workloads (par exemple Deployment, ReplicationController, CronJob, etc., comme indiqué dans le fichier de policy Rego) sont exécutés sur le cluster, trouver les images qui leur sont associées et les analyser directement sur le cluster pour détecter les vulnérabilités.
N’hésitez pas à essayer ces étapes sur votre propre cluster Kubernetes. Pour cela, démarrez un essai gratuit de l’offre Snyk Business.
Ressources pour en savoir plus
Maintenant que vous savez à quel point il est facile de configurer l’intégration Kubernetes avec Snyk, voici quelques liens utiles pour vous lancer dans la sécurisation de vos conteneurs.
Comment configurer Snyk Container pour importer ou supprimer automatiquement des projets de workloads Kubernetes
Apprenez Rego avec l’excellent cours de formation de Styra
Sécurisez votre infrastructure dès la source
Snyk automatise la sécurité et la conformité de l’IaC dans vos workflows, et détecte les ressources dont la configuration a dérivé ou qui sont manquantes.



