Introduction
Kubescape est un outil open source Kubernetes développé par Armosec utilisé pour l’analyse des risques, la conformité en matière de sécurité, la visualisation des RBAC et la numérisation des vulnérabilités des images. De plus, Kubescape est capable de scanner les manifestes Kubernetes pour détecter les problèmes de configuration potentiels qui exposent vos déploiements au risque d’attaque. Il peut également scanner les chartes Helm, détecter les violations des RBAC (contrôle d’accès basé sur les rôles), effectuer des calculs de score de risque et afficher les tendances des risques au fil du temps.
Fonctionnalités clés de Kubescape :
- Détecter les mauvaises configurations Kubernetes et fournir une assistance à la remédiation via le Portail Cloud Armosec.
- Analyse des risques et tendances au fil du temps via le Portail Cloud Armosec.
- Inclut plusieurs cadres de conformité en matière de sécurité, tels que ArmoBest, NSA, MITRE et les meilleures pratiques Devops.
- Prise en charge de la gestion des exceptions, permettant aux administrateurs Kubernetes de marquer les niveaux de risque acceptables.
- S’intègre à divers outils tels que Jenkins, les workflows Github, Prometheus, etc.
- Numérisation des images – numérise les images pour les vulnérabilités et permet de voir, trier et filtrer facilement (quelle vulnérabilité patcher en premier).
- Simplifie la complexité des RBAC en fournissant un graphique visuel facile à comprendre qui montre la configuration des RBAC dans votre cluster.
Kubescape peut être exécuté de différentes manières :
- Par le biais de l’interface en ligne de commande (CLI). C’est la manière préférée de l’exécuter dans des scripts et diverses automatisations, y compris les pipelines CI/CD. Les résultats peuvent être téléchargés sur le portail cloud d’Armosec pour analyse.
- En tant que tâche planifiée (cronjob) à l’intérieur de votre cluster Kubernetes. Dans ce mode, Kubescape surveille constamment votre cluster Kubernetes pour détecter les changements et télécharge les résultats de l’analyse sur le portail cloud d’Armosec. Cette fonctionnalité ne fonctionne que si vous déployez les composants de cluster Armo dans votre cluster DOKS.
- Par le biais de l’interface web du portail cloud d’Armosec. Vous pouvez déclencher l’analyse de configuration, l’analyse d’images, afficher et inspecter les règles RBAC, personnaliser les frameworks, etc. Cette fonctionnalité ne fonctionne que si vous déployez les composants de cluster Armo dans votre cluster DOKS.
- À l’intérieur de votre IDE Visual Studio Code. De cette façon, vous pouvez repérer rapidement les problèmes dès les premières étapes du développement.
Kubescape utilise différents frameworks pour détecter les configurations incorrectes, tels que :
Kubescape est-il gratuit ?
Oui, l’outil et l’édition communautaire sont gratuits pour toujours, sauf l’implémentation du backend du portail cloud et peut-être certaines autres fonctionnalités avancées. Il y a aussi une limitation sur le nombre maximum de nœuds de travail que vous pouvez scanner par cluster (jusqu’à 10). La rétention des données des rapports de scan est limitée à un mois dans le portail cloud d’Armo.
Voir les plans tarifaires pour plus d’informations.
Kubescape est-il open source ?
Oui, l’outil l’est certainement. Vous pouvez visiter la page d’accueil GitHub d’Armo pour trouver plus de détails sur chaque implémentation de composant. L’implémentation du backend du portail cloud n’est pas open source.
Dans ce guide, vous utiliserez Kubescape pour effectuer une analyse des risques pour la chaîne d’approvisionnement de vos applications Kubernetes (images de conteneurs, manifestes YAML Kubernetes). Ensuite, vous apprendrez comment prendre les mesures appropriées pour remédier à la situation. Enfin, vous apprendrez comment intégrer Kubescape dans un pipeline CI/CD pour analyser les vulnérabilités dès les premières étapes du développement.
Table des matières
- Introduction
- Exigences
- Étape 1 – Se familiariser avec l’interface en ligne de commande Kubescape
- Étape 2 – Se familiariser avec le portail cloud Armosec
- Étape 3 – Configuration des analyses automatiques de Kubescape pour DOKS
- Étape 4 – Utilisation de Kubescape pour analyser les vulnérabilités de configuration Kubernetes dans un pipeline CI/CD
- Étape 5 – Investigation des résultats d’analyse de Kubescape et correction des problèmes signalés
- Étape 6 – Déclenchement automatique du flux de travail CI/CD de Kubescape
- Étape 7 – Activation des notifications Slack pour la surveillance continue
- Conclusion
- Ressources supplémentaires
Prérequis
Pour effectuer toutes les étapes de ce guide, vous aurez besoin de :
- A working
DOKS
cluster runningKubernetes version >=1.21
that you have access to. For additional instructions on configuring a DigitalOcean Kubernetes cluster, see: How to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS). - A DigitalOcean Docker Registry. A free plan is enough to complete this tutorial. Also, make sure it is integrated with your DOKS cluster as explained here.
- Kubectl CLI pour l’interaction avec
Kubernetes
. Suivez ces instructions pour vous connecter à votre cluster aveckubectl
etdoctl
. - Helm, pour installer Kubescape dans le cluster Kubernetes.
- Kubescape CLI pour interagir avec le scanner de vulnérabilités Kubescape.
- A free Armosec Cloud Portal account used to periodically publish scan results for your Kubernetes cluster to a nice dashboard. Also, the Armosec portal web interface helps you with investigations and risk analysis.
- A Slack workspace you own, and a dedicated Slack app to get notified of vulnerability scan issues reported by Kubescape.
Étape 1 – Découverte de l’interface en ligne de commande Kubescape
Vous pouvez analyser manuellement les vulnérabilités via l’interface de ligne de commande kubescape
. La CLI kubescape est conçue pour être utilisée dans divers scripts et automatisations. Un exemple pratique est dans un pipeline CI/CD mis en œuvre à l’aide de différents outils tels que Tekton, Jenkins, GitHub Workflows, etc.
Kubescape est conçu pour analyser l’ensemble d’un cluster Kubernetes à partir de zéro (charges de travail, conteneurs, etc.). Si nécessaire, vous pouvez limiter les analyses à un espace de noms spécifique également. D’autres fonctionnalités incluent l’analyse des hôtes (nœuds de travail), l’analyse des référentiels locaux ou distants (par exemple, GitHub), la détection de configurations incorrectes dans les manifestes YAML Kubernetes ou les charts Helm. Divers cadres peuvent être sélectionnés via la commande framework
, tels que ArmoBest, NSA, MITRE, etc.
Lorsque la CLI kubescape est invoquée, elle téléchargera (ou mettra à jour) la base de données des vulnérabilités connues sur votre machine locale. Ensuite, elle démarrera le processus de balayage et signalera les problèmes dans un format spécifique. Par défaut, il affichera un tableau récapitulatif en utilisant la sortie standard ou la console. Kubescape peut également générer des rapports dans d’autres formats, tels que JSON, HTML, SARIF, etc.
Vous pouvez choisir de pousser les résultats vers le Portail Cloud Armosec via le drapeau --submit
pour stocker et visualiser ultérieurement les résultats de l’analyse.
Remarque : Il n’est pas obligatoire de soumettre les résultats de l’analyse au portail cloud Armosec. Le gros avantage de l’utilisation du portail est la visibilité car il vous donne accès à un tableau de bord où vous pouvez vérifier tous les rapports d’analyse et le score de risque global. Il vous aide également à long terme avec des enquêtes et des indications de remédiation.
Quelques exemples à essayer avec la CLI Kubescape :
-
Numérisez l’ensemble d’un cluster Kubernetes et générez un rapport de synthèse dans la console (sortie standard):
-
Utilisez un espace de noms spécifique uniquement pour le balayage:
-
Exclure des espaces de noms spécifiques du balayage:
-
Numérisez un espace de noms spécifique et soumettez les résultats au portail cloud Armosec:
-
Effectuer une analyse de cluster à l’aide d’un framework spécifique (par exemple, NSA) :
Kubescape est capable de scanner les hôtes de votre cluster Kubernetes (ou nœuds de travailleurs) pour les vulnérabilités du système d’exploitation. Pour activer cette fonctionnalité, vous devez passer le drapeau --enable-host-scan
à la CLI de kubescape. Lorsque ce drapeau est activé, kubescape déploie des capteurs
dans votre cluster. Les capteurs sont créés à l’aide de DaemonSets Kubernetes qui déploient des Pods sur chaque nœud de votre cluster pour rechercher des vulnérabilités connues. Une fois le processus de balayage terminé, les capteurs sont supprimés de votre cluster (ainsi que les ressources Kubernetes associées).
La CLI de Kubescape fournit des pages d’aide pour toutes les options disponibles. La commande suivante peut être utilisée pour afficher la page d’aide principale :
La sortie ressemble à ceci :
Chaque commande (ou sous-commande) de la CLI de kubescape a également une page d’aide associée qui peut être accédée via kubescape [commande] --aide
.
Veuillez visiter la page officielle de la documentation de la CLI de Kubescape pour plus d’exemples.
Étape 2 – Découverte du portail cloud Armosec
Armosec fournit un joli portail basé sur le cloud où vous pouvez télécharger les résultats de votre analyse Kubescape et effectuer une analyse des risques. C’est assez utile car vous voudrez visualiser et inspecter chaque rapport d’analyse, prendre les mesures appropriées pour remédier à la situation, puis relancer l’analyse pour vérifier les résultats. Avoir une bonne représentation visuelle pour chaque rapport et le score de risque associé vous aide à long terme dans les investigations et les itérations nécessaires pour résoudre les problèmes de sécurité signalés.
Vous pouvez créer un compte gratuitement limité à 10 nœuds de travail et 1 mois de rétention des données, ce qui devrait être suffisant dans la plupart des cas (par exemple, pour les besoins de test ou de développement). Vous pouvez en savoir plus sur la création du compte cloud kubescape
sur la page de documentation officielle.
Une fois le compte créé, un identifiant d’utilisateur unique est généré que vous pouvez utiliser pour télécharger les résultats de l’analyse pour ce compte spécifique. Par exemple, vous pouvez avoir une automatisation spécifique telle qu’un pipeline CI/CD où vous devez télécharger les résultats de l’analyse, d’où la nécessité de l’identifiant d’utilisateur associé pour distinguer entre plusieurs locataires.
Analyse du score de risque et tendances
Pour chaque rapport de scan téléchargé sur votre compte cloud Armosec, un nouvel enregistrement d’historique est ajouté contenant la liste des problèmes trouvés et le score de risque associé. De cette façon, vous pouvez obtenir des tendances et les graphiques associés montrant l’évolution du score de risque au fil du temps. De plus, une liste des problèmes de sécurité les plus importants est également générée dans le tableau de bord principal.
La photo ci-dessous illustre ces fonctionnalités :
Compréhension de la valeur du score de risque Kubescape
À chaque scan, Kubescape vérifie vos ressources pour les risques potentiels de sécurité en utilisant des contrôles internes. Un Contrôle Kubescape est un concept utilisé par l’outil kubescape
pour désigner les tests utilisés en interne pour vérifier un aspect particulier de votre cluster (ou des ressources en cours de scan). En allant plus loin, un cadre est une collection de contrôles ou de tests utilisés en interne pour scanner votre/vos ressource(s) particulière(s) pour des problèmes. Ainsi, selon le cadre que vous utilisez, une suite différente de vérifications est effectuée (néanmoins, certains tests partagent des éléments en commun). Enfin, en fonction du facteur de risque associé à chaque test, le score final est calculé.
Le score final est un nombre positif compris entre 0 et 100%. Une valeur plus basse indique le meilleur score, tandis qu’une valeur plus élevée indique le pire. Donc, si vous voulez être du bon côté, vous devriez viser la valeur la plus basse possible. En pratique, un score de risque égal ou inférieur à 30% devrait être un bon point de départ.
Assistance à la Remédiation des Problèmes de Sécurité Signalés
Une autre fonctionnalité utile fournie par le portail cloud Armosec est l’assistance à la remédiation des problèmes de sécurité. Cela signifie que vous recevez une recommandation sur la façon de résoudre chaque problème de sécurité trouvé par le scanner kubescape. C’est très important car cela simplifie le processus et clôt la boucle pour chaque itération que vous devez effectuer pour corriger chaque problème de sécurité signalé.
L’image ci-dessous illustre ce processus plus clairement:
Pour chaque problème de sécurité signalé, une icône d’outil de clé à molette est affichée, sur laquelle vous pouvez cliquer pour obtenir de l’assistance en matière de remédiation:
Ensuite, une nouvelle fenêtre s’ouvre, vous donnant des détails sur chaque objet Kubernetes affecté, mis en évidence en vert:
Vous pouvez cliquer sur chaque contrôle tel que C-0018
, C-0030
, C-0086
, etc. et examiner les problèmes mis en évidence. Vous recevrez des suggestions sur la façon de résoudre chaque problème de sécurité. Il ne reste plus qu’à suivre les indications et à corriger chaque problème de sécurité.
Déclenchement des analyses de cluster depuis l’interface Web
Le portail cloud d’Armo offre la possibilité de déclencher des analyses de cluster depuis l’interface Web si le graphique Helm des composants cloud d’Armo est déployé dans votre cluster DOKS (discuté dans l’étape suivante). La configuration ainsi que l’analyse d’image peuvent être déclenchées via un seul clic sur un bouton dans le portail. Pour que cette fonctionnalité fonctionne, vous devez attendre que les composants cloud d’Armo aient terminé l’analyse de votre cluster en arrière-plan, et télécharger les résultats.
Le déclenchement d’une analyse de configuration se fait en accédant à la page d’analyse de configuration et en cliquant sur le bouton Analyser. L’image ci-dessous montre comment accomplir cette tâche :
Vous pouvez également définir ou modifier l’horaire actuel pour l’analyse automatique si vous le souhaitez en cliquant sur le bouton Planifier dans la fenêtre contextuelle qui apparaît après avoir cliqué sur le bouton Analyser. Utilisant la même fenêtre, vous pouvez sélectionner quels cadres de contrôle utiliser pour l’analyse. L’image ci-dessous montre comment accomplir les tâches :
Étape 3 – Configuration des analyses automatiques Kubescape pour DOKS
Kubescape peut être configuré pour analyser automatiquement l’ensemble de votre cluster Kubernetes à un intervalle de temps spécifique, ou chaque fois qu’une nouvelle image d’application est déployée. Vous devez déployer les Composants de Cluster Armo dans votre cluster Kubernetes en utilisant Helm pour obtenir cette fonctionnalité. Un compte Portail Cloud Armosec est également nécessaire pour télécharger et inspecter les résultats.
Le chart Helm Armo installe des tâches cron qui déclenchent une analyse de vulnérabilité à la fois pour l’ensemble du cluster Kubernetes et pour les images de conteneurs. Chaque intervalle de tâche cron est configurable dans le fichier des valeurs Helm.
Approvisionnement des Composants de Cluster Armo pour DOKS
Étapes pour déployer kubescape
dans votre cluster Kubernetes en utilisant Helm :
- Ajoutez le référentiel
Helm
et répertoriez lescharts
disponibles :
La sortie ressemble à ce qui suit :
Remarque : Le chart d’intérêt est armo/armo-cluster-components
, qui installera les composants Armo dans votre cluster Kubernetes. Veuillez visiter la page du référentiel armo-helm pour plus de détails sur ce chart.
- Obtenez votre identifiant utilisateur Armo à l’aide de la CLI Kubescape (nécessaire à l’étape suivante) :
L’output ressemble à ceci :
Remarque :
Si vous n’avez jamais utilisé la CLI kubescape
pour soumettre les résultats d’analyse au portail cloud d’Armosec, la commande ci-dessus ne fonctionnera pas. Dans ce cas, vous devez vous connecter au portail et obtenir l’identifiant du compte de là, comme expliqué ici.
- Installez les composants de cluster Armo Kubescape à l’aide de
Helm
– un espace de nomsarmo-system
dédié sera également créé (assurez-vous de remplacer les espaces réservés<>
en conséquence) :
–create-namespace \
Remarque :
Une version spécifique du diagramme Helm armo-cluster-components
est utilisée. Dans ce cas, 1.7.15
a été sélectionné, ce qui correspond à la version 1.7.15
de la version des composants du cluster Armo (voir la sortie de Étape 1.
). Il est recommandé, en général, de verrouiller une version spécifique. Cela permet d’avoir des résultats prévisibles et permet le contrôle de version via Git
.
Maintenant, vérifiez si tous les déploiements des composants de cluster Armo sont opérationnels :
L’output ressemble à ceci :
Tous les composants du cluster Armo devraient être opérationnels.
- Enfin, après quelques minutes, vous devriez pouvoir voir vos rapports d’analyse de cluster disponibles dans le portail cloud, tels que :
- Résultats de l’analyse de la configuration :
- Résultats de l’analyse de l’image :
Résultats du visualiseur RBAC :
Pour plus d’informations, veuillez consulter la page de balayage de vulnérabilité du cluster dans la documentation officielle.
Ajustement des valeurs Helm pour le graphique des composants du cluster Armo
Vous pouvez modifier le comportement du graphique des composants du cluster Armo en éditant le fichier des valeurs Helm fourni dans ce guide.
- Les paramètres suivants peuvent être modifiés :
- Intervalles de balayage via les valeurs
armoScanScheduler
etarmoKubescapeScanScheduler
.
Nouveau déclencheur de balayage d’image via la valeur triggerNewImageScan
.
La liste complète des valeurs pouvant être personnalisées selon vos besoins est disponible dans le fichier des valeurs du graphique Helm officiel.
Pour appliquer les modifications, vous devez mettre à niveau la version actuelle du graphique Helm via (veuillez vous assurer de remplacer les espaces réservés <>
en conséquence):
Comment bénéficier de l’intégration d’un outil de balayage de conformité de sécurité dans votre pipeline CI/CD et éviter les situations désagréables dans un environnement de production ?
Tout commence au niveau fondamental, là où débute le développement logiciel. En général, vous voudrez utiliser un environnement dédié pour chaque étape. Ainsi, dans les premières phases de développement où le code de l’application change très souvent, vous devriez utiliser un environnement de développement dédié (appelé généralement l’environnement inférieur). Ensuite, l’application se raffine de plus en plus dans l’environnement de QA, où les équipes de QA effectuent des tests manuels et/ou automatisés. Ensuite, si l’application obtient l’approbation de l’équipe de QA, elle est promue vers les environnements supérieurs, tels que la mise en scène, et enfin en production. Dans ce processus, où l’application est promue d’un environnement à un autre, un pipeline dédié s’exécute, qui analyse en continu les artefacts de l’application et calcule le score de risque de sécurité. Si le score ne répond pas à un seuil spécifique, le pipeline échoue immédiatement et la promotion des artefacts de l’application vers la production est arrêtée dans les premières phases.
Ainsi, l’outil d’analyse de sécurité (par exemple, kubescape) agit comme un gardien, empêchant les artefacts non désirés dans votre environnement de production dès les premières étapes de développement. De la même manière, les pipelines des environnements supérieurs utilisent kubescape
pour permettre ou interdire aux artefacts de l’application d’entrer dans la phase finale de production.
Implémentation du flux de travail CI/CD GitHub Actions
À cette étape, vous apprendrez à créer et à tester un pipeline CI/CD avec une analyse de vulnérabilité intégrée via les flux de travail GitHub. Pour apprendre les fondamentaux de l’utilisation des actions GitHub avec Kubernetes de DigitalOcean, référez-vous à ce tutoriel.
Le pipeline fourni dans la section suivante construit et déploie l’application game-2048-example à partir du dépôt kubernetes-sample-apps de DigitalOcean.
- À un niveau élevé, le exemple de workflow CI/CD fourni dans le dépôt Kubernetes-sample-apps est composé des étapes suivantes:
- Étape de construction et de test de l’application – construit les principaux artefacts de l’application et exécute les tests automatisés.
- Étape de scan Kubescape – scanne les vulnérabilités connues dans les manifestes YAML Kubernetes associés à l’application. Il agit comme une porte, et l’état final du pipeline (réussite/échec) dépend de cette étape. En cas d’échec, une notification Slack est également envoyée.
- Étape de construction et de publication de l’image de l’application – construit et tague l’image de l’application en utilisant le dernier SHA de commit git. Ensuite, l’image est poussée vers DOCR.
Étape de déploiement de l’application – déploie l’application sur Kubernetes (DOKS).
Le diagramme ci-dessous illustre chaque tâche du pipeline et les étapes associées avec les actions (seule la configuration pertinente est montrée):
- Remarque :
- Dans le cas de projets basés sur
kustomize
, il est préférable de rendre le manifeste final via la commandekubectl kustomize </chemin/vers/fichier/kustomization_>
afin de capturer et d’analyser tout (y compris les ressources distantes). D’autre part, il peut être difficile d’identifier quelle ressource Kubernetes doit être patchée. Cela est dû au fait que le fichier de manifeste résultant est composé de toutes les ressources à appliquer. C’est ainsi que fonctionne Kustomize : il rassemble tous les fragments de configuration de chaque superposition et les applique sur une base pour construire le composé final.
Vous pouvez également indiquer à Kubescape
de balayer le dossier entier où vous gardez vos configurations kustomize
(le guide actuel repose sur cette approche). De cette manière, il est plus facile d’identifier quelle ressource doit être corrigée dans votre référentiel. Les ressources distantes utilisées par kustomize doivent être corrigées en amont. De plus, les secrets Kubernetes et les ConfigMaps générés via kustomize
ne sont pas capturés.
Comment échouer le pipeline si un certain niveau de conformité à la sécurité n’est pas atteint?
La CLI de Kubescape fournit un indicateur nommé --fail-threshold
à cette fin. Cet indicateur est corrélé avec le score de risque global calculé après chaque analyse. Vous pouvez faire échouer ou réussir le pipeline en fonction de la valeur de seuil et arrêter le déploiement de l’application si les conditions ne sont pas remplies.
L’image ci-dessous illustre le flux pour le pipeline CI/CD exemple utilisé dans ce guide :
- Veuillez suivre les étapes ci-dessous pour créer et tester le flux de travail GitHub CI/CD de
kubescape
fourni dans le référentiel GitHub kubernetes-sample-apps : - 1. Forkez le référentiel GitHub kubernetes-sample-apps.
SLACK_WEBHOOK_URL
– contient votre URL de webhook entrant Slack utilisée pour les notifications de scan Kubescape.- Accédez à l’onglet Actions de votre dépôt forké et sélectionnez le workflow Exemple CI/CD Kubescape Game 2048 :
A new entry should appear in below list after clicking the Run Workflow green button. Select the running workflow to observe pipeline progress:
Cliquez sur le bouton Exécuter le workflow et laissez les valeurs par défaut :
Le pipeline échouera et s’arrêtera lorsque le job kubescape-nsa-security-check sera exécuté. Cela est prévu car la valeur seuil par défaut de 30
pour le score de risque global est inférieure à la valeur souhaitée. Vous devriez également recevoir une notification Slack avec des détails sur l’exécution du workflow :
À l’étape suivante, vous apprendrez à examiner le rapport de scan de kubescape
pour corriger les problèmes, réduire le score de risque et réussir le pipeline.
Étape 5 – Examiner les résultats du scan Kubescape et corriger les problèmes signalés
Chaque fois que le seuil de la valeur du score de risque n’est pas atteint, le flux de travail GitHub game-2048 échouera et une notification Slack sera envoyée avec des détails supplémentaires.
Le flux de travail game-2048 effectue une vérification de sécurité (le scan d’image locale n’est pas pris en charge) – vérifications de configuration incorrecte des manifestes Kubernetes. Le travail kubescape-nsa-security-check est utilisé à cette fin. La commande kubescape
équivalente utilisée est – kubescape scan framework nsa /chemin/vers/projet/kubernetes/manifests
.
Le snippet ci-dessous montre la logique principale du travail kubescape-nsa-security-check:
–soumettre –compte=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}
La configuration ci-dessus indique à la CLI de kubescape de démarrer une nouvelle analyse pour tous les manifestes Kubernetes présents dans le répertoire kustomize/
en utilisant le framework NSA. Il spécifie également le niveau de seuil à utiliser via le drapeau -t, et pour soumettre les résultats finaux au portail cloud Armo (le drapeau –submit en conjonction avec –acount).
Ainsi, réduire la valeur du score de risque et passer le flux de travail consiste à enquêter et à corriger les problèmes signalés par le travail kubescape-nsa-security-check. Ensuite, vous apprendrez comment traiter les problèmes de sécurité signalés par ce travail.
A new browser window opens showing in detail each control and description. You will also be presented with required actions to remediate the issue (highlighted in green color):
Pour vérifier le rapport d’état, vous pouvez cliquer sur le lien des résultats de l’analyse kubescape reçu de la notification Slack. Ensuite, cliquez sur le bouton d’analyse REPOSITORIES SCAN dans le menu de gauche du portail cloud Armo. Maintenant, cliquez sur l’entrée kubernetes-sample-apps de la liste :
Après avoir recueilli toutes les informations du rapport d’analyse, vous pouvez modifier le fichier deployment.yaml de votre référentiel (situé dans le sous-dossier game-2048-example/kustomize/resources
). Les corrections sont déjà en place, il vous suffit de décommenter les dernières lignes du fichier. Le fichier deployment.yaml
final devrait ressembler à ce qui suit :
# Remplacez les placeholders `<>` par vos informations de registre Docker
- Note :
Les suggestions C-0055 ont été omises dans cet exemple pour des raisons de simplicité. Vous pouvez en savoir plus sur le mode de calcul sécurisé dans Kubernetes ici. - Qu’est-ce qui a changé ? Les correctifs de sécurité suivants ont été appliqués :
readOnlyRootFilesystem
– exécute l’image du conteneur en lecture seule (ne peut pas modifier les fichiers aveckubectl exec
dans le conteneur).runAsNonRoot
– s’exécute en tant qu’utilisateur non root défini par la directive USER du Dockerfile du projet game-2048.
allowPrivilegeEscalation
– en définissant allowPrivilegeEscalation sur false, cela garantit qu’aucun processus enfant d’un conteneur ne peut obtenir plus de privilèges que son parent.
capabilities.drop
– Pour rendre les conteneurs plus sécurisés, vous devez leur attribuer le moins de privilèges nécessaires pour fonctionner. En pratique, vous supprimez tout par défaut, puis ajoutez les capacités requises étape par étape. Vous pouvez en savoir plus sur la sécurité des conteneurs dans cet article écrit par Armosec.
A few final checks can be performed as well on the Kubernetes side to verify if the reported issues were fixed:
- Enfin, validez les modifications pour le fichier deployment.yaml et poussez-les sur la branche principale. Après avoir déclenché manuellement le flux de travail, il devrait se terminer avec succès cette fois-ci :
- Vérifiez si le déploiement game-2048 a un système de fichiers en lecture seule (immuable) en écrivant le fichier index.html de l’application :
Vérifiez si le conteneur s’exécute en tant qu’utilisateur non root (devrait imprimer un nombre entier différent de zéro – par exemple, 1000
):
Vérifiez si le conteneur s’exécute en tant qu’utilisateur non root (devrait imprimer un nombre entier différent de zéro – par exemple, 1000
):
Si toutes les vérifications passent, vous avez appliqué avec succès les recommandations de sécurité requises.
Il existe des situations où vous ne voulez pas que le score de risque final soit affecté par certains problèmes signalés que votre équipe considère comme sûrs à ignorer. Kubescape offre une fonctionnalité intégrée pour gérer les exceptions et surmonter cette situation.
A more efficient approach is where you integrate vulnerability scan tools directly in your favorite IDE (or Integrated Development Environment). This way, you can detect and fix security issues ahead of time in the software development cycle.
Vous pouvez en savoir plus sur cette fonctionnalité ici.
- Kubescape pour les IDE
- Kubescape offre un support pour l’intégration des IDE via les extensions suivantes :
Les plugins ci-dessus vous aideront à détecter et à corriger les problèmes dès les premières étapes du développement, éliminant ainsi la frustration, les coûts et les failles de sécurité dans les systèmes de production. De plus, cela vous aide à réduire les itérations et l’effort humain à long terme. Par exemple, pour chaque problème de sécurité signalé par votre automatisation CI/CD, vous devez retourner et corriger le problème dans votre code, valider les modifications, attendre à nouveau l’automatisation CI/CD, puis répéter en cas d’échec.
Vous pouvez en savoir plus sur ces fonctionnalités en accédant à la page de la documentation de Kubescape, puis en recherchant dans la section INTÉGRATIONS.
Étape 6 – Déclenchement automatique du flux de travail CI/CD de Kubescape
Vous pouvez configurer le flux de travail pour se déclencher automatiquement à chaque validation ou pull request sur la branche principale en décommentant les lignes suivantes en haut du fichier game-2048-kubescape.yaml:
Après avoir édité le fichier, validez les modifications sur votre branche principale, et vous devriez être prêt à partir.
Étape 7 – Activation des notifications Slack pour une surveillance continue
L’automatisation de la numérisation des vulnérabilités que vous avez mise en œuvre jusqu’à présent est un bon point de départ mais n’est pas parfait. Pourquoi ?
Un problème avec l’approche actuelle est que vous ne savez jamais quand de nouveaux problèmes sont signalés pour les actifs que vous avez déjà déployés dans vos environnements. En d’autres termes, vous avez évalué les risques de sécurité et pris les mesures pour corriger les problèmes à un moment spécifique dans le temps – lorsque votre automatisation CI/CD a été exécutée.
Mais que se passe-t-il si de nouveaux problèmes sont signalés entre-temps, et que votre application est à nouveau vulnérable ?
La fonction de surveillance de Kubescape vous aide à traiter les nouvelles vulnérabilités, qui sont constamment divulguées. Associée à l’intégration Slack, vous pouvez prendre des mesures immédiates pour corriger les problèmes nouvellement divulgués qui pourraient affecter votre application dans un environnement de production.
- Le portail cloud Armo prend en charge l’intégration Slack pour l’envoi d’alertes en temps réel après chaque analyse de cluster. Cette fonctionnalité nécessite l’installation du Helm chart des composants cloud Armo dans votre cluster DOKS comme expliqué dans l’Étape 3 – Configuration des analyses automatiques Kubescape pour DOKS.
- En activant les alertes Slack, vous recevrez des notifications importantes concernant les vulnérabilités détectées dans votre cluster DOKS, telles que :
- Les vulnérabilités des nœuds de travail (niveau du système d’exploitation).
Les vulnérabilités des images de conteneurs.
- Les erreurs de configuration de Kubernetes pour diverses ressources telles que les déploiements, les pods, etc.
- Tout d’abord, vous devez créer une application Slack. Ensuite, vous devez accorder les autorisations suivantes à votre bot Slack dans la page OAuth & Permissions :
channels:join
– Rejoindre les canaux publics dans un espace de travail.channels:read
– Afficher des informations de base sur les canaux publics dans un espace de travail.groups:read
– Afficher des informations de base sur les canaux privés auxquels votre application Slack a été ajoutée.chat:write
– Envoyer des messages en tant que @<Nom de votre application Slack>.
im:read
– Afficher des informations de base sur les messages directs auxquels votre application Slack a été ajoutée.
mpim:read
– Afficher des informations de base sur les messages directs de groupe auxquels votre application Slack a été ajoutée.
Ensuite, accédez à la page des paramètres de votre compte sur le portail cloud d’Armo (icône d’engrenage en haut à droite). À partir de là, sélectionnez la page des Intégrations, puis Slack.
Maintenant, collez votre jeton OAuth de Slack Bot (que vous pouvez trouver dans la page Autorisations et OAuth de votre page d’application Slack) dans le champ de saisie Insérer le jeton. Enfin, sélectionnez comment être notifié et le canal Slack où les alertes doivent être envoyées. Cliquez sur le bouton Définir les notifications et c’est fait. L’image ci-dessous illustre les détails :
Après avoir configuré l’intégration Slack, vous devriez recevoir des notifications périodiques après chaque analyse de cluster sur le canal désigné :
Si vous recevez des notifications similaires à celles ci-dessus, vous avez configuré avec succès l’intégration Slack d’Armosec Kubescape.
Dans ce guide, vous avez appris à utiliser l’un des outils d’analyse de vulnérabilités Kubernetes les plus populaires – Kubescape. Vous avez également appris comment effectuer une analyse de cluster et de dépôt (manifestes YAML) à l’aide de l’interface en ligne de commande Kubescape. Ensuite, vous avez appris à intégrer l’outil d’analyse de vulnérabilités dans un pipeline CI/CD traditionnel implémenté à l’aide des flux de travail GitHub.
Enfin, vous avez appris comment enquêter sur les rapports d’analyse de vulnérabilités, appliquer des correctifs pour remédier à la situation et réduire le score de risque à un minimum via un exemple pratique – l’application game-2048 du dépôt kubernetes-sample-apps.
- En savoir plus
- Vous pouvez en apprendre davantage en lisant les ressources supplémentaires suivantes :
- Utilisation de l’outil de balayage des vulnérabilités Snyk
- Meilleures pratiques de sécurité Kubernetes par Armo
- Détection des problèmes de sécurité à l’avance par Armosec
- Sécurisation de vos déploiements Kubernetes par Armosec
- En savoir plus sur les scanners d’hôtes Armosec
Source:
https://www.digitalocean.com/community/developer-center/using-the-kubescape-vulnerability-scan-tool