Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
  1. Livres et vidéos
  2. Kubernetes
  3. Analyse et sécurisation d’un cluster
Extrait - Kubernetes Gérez la plateforme de déploiement de vos applications conteneurisées (3e édition)
Extraits du livre
Kubernetes Gérez la plateforme de déploiement de vos applications conteneurisées (3e édition) Revenir à la page d'achat du livre

Analyse et sécurisation d’un cluster

Objectifs du chapitre et prérequis

Dans le monde informatique, la sécurité est devenue un aspect incontournable. En effet, un système qui n’est pas à jour ou qui contient des brèches de sécurité peut vite faire l’objet d’attaques particulièrement gênantes (surtout en cas d’exposition sur Internet).

Le but de ce chapitre est de présenter les outils Trivy et Gatekeeper. Le premier permet par exemple d’analyser les images associées aux applications démarrées dans un cluster tandis que le second permet d’imposer des règles : réduction des droits utilisés par les applications, utilisation de limites de consommation de ressources, respect de normes de nommage, etc.

Trivy : analyse de failles de sécurité

1. Trivy : outil d’analyse du cluster

a. Présentation de Trivy

Trivy est à l’origine un outil d’analyse d’images de conteneurs (il est présenté dans le chapitre Compilation et stockage d’images Docker). Il peut également servir comme un outil d’analyse d’un cluster Kubernetes. Le projet est hébergé sur GitHub à l’adresse suivante : https://github.com/aquasecurity/trivy

Pour mémoire, le projet Kube Hunter de la même société poursuivait le même but mais n’est plus maintenu.

b. Installation de Trivy

Trivy est écrit en Go : il se présente sous la forme d’un binaire autoporteur compressé dans une archive.

Cette dernière se récupère à l’emplacement suivant : https://github.com/aquasecurity/trivy/releases

En alternative, il est possible d’installer cet outil à l’aide d’Arkade :

$ arkade get trivy 

 Lancez-le avec l’option version afin de vérifier que tout fonctionne correctement :

$ trivy version 

La commande doit renvoyer la version de Trivy ainsi que les versions des dépendances utilisées : base de données de vulnérabilités, librairie Java, etc.

c. Lancement de l’analyse

L’analyse d’un cluster Kubernetes à l’aide de Trivy se fait à l’aide des paramètres suivants :

  • le mot kubernetes (ou son raccourci k8s) ;

  • l’option --report suivie du mot-clé summary ;

  • enfin l’option --timeout suivie d’une durée d’analyse maximum.

Ci-dessous, un exemple de lancement avec un temps d’analyse maximum de 20 minutes :

$ trivy k8s --report summary --timeout 20m 

L’analyse est relativement longue et dure plus de 5 minutes.

Ci-dessous un extrait de résultat d’analyse :

... INFO    Node scanning is enabled 
... INFO    If you want to disable Node scanning via an in-cluster Job, 
please try '--disable-node-collector' to disable the Node-Collector job. 
441 / 441 [-------------------] 100.00% 1 p/s 
...  
 
Summary Report for minikube 
 
 
Workload Assessment 
... ─────────────────────...

OPA (Open Policy Agent) Gatekeeper : le gardien du cluster

1. Présentation d’OPA Gatekeeper

L’outil Trivy est en place et vérifie régulièrement que les configurations existantes respectent les bonnes pratiques ou encore que les images utilisées n’introduisent pas des failles de sécurité connues. En revanche, rien n’est fait pour vérifier les changements appliqués au système.

OPA Gatekeeper est là pour vérifier l’intégrité des éléments du système avant leur déploiement. Il permet de s’assurer de l’application de bonnes pratiques : lancement de pods avec limites, restriction des privilèges système, etc. Il peut aussi contraindre l’utilisation de règles propres à une entité : utilisation de registres internes, respect des normes de nommage, présence de labels obligatoires sur les ressources, etc.

L’outil peut aussi appliquer des règles de sécurité automatiquement. Pour des raisons de simplicité, seule la vérification sera abordée.

2. Installation de Gatekeeper

Avant toute chose, il est nécessaire d’installer le composant Gatekeeper. Comme d’habitude, ce dernier est disponible sous la forme d’un chart Helm.

 Ajoutez tout d’abord la source du chart Helm à l’aide des instructions suivantes :

$ helm repo add gatekeeper \ 
        https://open-policy-agent.github.io/gatekeeper/charts 

 Procédez ensuite à l’installation de l’instance gatekeeper dans un espace de noms dédié du chart gatekeeper/gatekeeper :

$ helm upgrade --install gatekeeper gatekeeper/gatekeeper \ 
        --namespace gatekeeper --create-namespace 

 Vérifiez ensuite l’état du pod associé à Gatekeeper :

$ kubectl -n gatekeeper get pods 

Ci-dessous, un exemple d’état une fois le composant correctement démarré :

NAME                                      READY STATUS   RESTARTS AGE 
gatekeeper-audit-78cdfcc9f9-g7dgr...