InfraFenceInfraFence

Live Security Operations

Commencer

Kubernetes

Protégez chaque nœud d'un cluster Kubernetes avec le chart Helm d'InfraFence et une clé de cluster : installation, values, mises à niveau, GitOps et ce que déploie le chart.

Dernière mise à jour:

Le chart Helm exécute l'agent sous forme de DaemonSet : un agent sur chaque nœud, plan de contrôle compris. Chaque nœud s'enregistre comme un serveur à part entière dans le tableau de bord.

Prérequis : Kubernetes 1.22 ou ultérieur et Helm 3.

Créer une clé de cluster

Dans le tableau de bord, Paramètres › Kubernetes › Créer une clé de cluster (propriétaires et administrateurs). Contrairement à un jeton d'installation, une clé de cluster enregistre tous les nœuds du cluster. Elle commence par IFK- et n'est affichée qu'une fois : copiez-la tout de suite. La liste n'affiche ensuite que ses quatre derniers caractères.

Révoquer une clé empêche de nouveaux nœuds de rejoindre le cluster avec elle ; les nœuds déjà enregistrés continuent de fonctionner. Avec Starter, un seul nœud peut s'enregistrer, puisque Starter couvre un serveur ; à partir de Basic, il n'y a pas de limite et chaque nœud est facturé comme un serveur.

Installer

bash
helm install infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
  --namespace infrafence --create-namespace \
  --set apiKey="IFK-..." \
  --set clusterName="production"

Le tableau de bord affiche la même commande avec votre clé et le nom de votre cluster déjà renseignés.

Mettre à niveau et désinstaller

bash
helm upgrade infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
  --namespace infrafence --reuse-values
bash
helm uninstall infrafence-agent --namespace infrafence

Un nœud qui s'enregistre de nouveau (un nœud reconstruit, ou un /etc/infrafence effacé) conserve son serveur dans le tableau de bord et reçoit un nouveau jeton.

Values

Value Par défaut Signification
apiKey "" (obligatoire) La clé de cluster. Stockée dans un Secret.
serverUrl https://infrafence.com Le tableau de bord.
clusterName "" Les nœuds sont regroupés selon cette valeur dans le tableau de bord ; détectée depuis le cluster si vide.
image.repository ghcr.io/infrafence/infrafence-agent L'image de l'agent.
image.tag "" L'appVersion du chart si vide.
image.pullPolicy Always
autoUpdate.enabled true Permet à l'agent de mettre à jour son propre DaemonSet. Désactivez-la avec GitOps.
ingressFirewall.enabled false RBAC pour bloquer des adresses dans la ConfigMap de nginx-ingress.
ingressFirewall.namespace ingress-nginx L'emplacement de nginx-ingress.
ingressFirewall.configMapName ingress-nginx-controller Sa ConfigMap.
resources requests 50m CPU, 64Mi; limits 500m CPU, 256Mi
tolerations [{operator: Exists}] Tous les nœuds, plan de contrôle compris.
nodeSelector {}
priorityClassName ""
extraEnv [] Des variables d'environnement supplémentaires, par exemple WEB_LOG_PATH.
serviceAccount.create true Ainsi que serviceAccount.name et serviceAccount.annotations.

Mises à jour et GitOps

Avec autoUpdate.enabled, un agent autorisé à se mettre à jour (le paramètre Mises à jour de l'agent vaut Installer automatiquement, ou vous avez choisi Installer maintenant) vérifie la signature cosign de l'image de la nouvelle version et fait passer son DaemonSet à cette image par digest. Si ArgoCD ou Flux gère le cluster, désactivez cette option et augmentez plutôt l'étiquette de l'image dans votre dépôt :

yaml
autoUpdate:
  enabled: false

Ce que déploie le chart

  • un DaemonSet avec le réseau de l'hôte, l'espace de noms PID de l'hôte et des pods privilégiés, déployé un nœud à la fois ;
  • un ServiceAccount avec un accès en lecture seule à l'API Kubernetes, plus le droit de modifier (patch) son propre DaemonSet pour les mises à jour ;
  • un Secret contenant la clé de cluster ;
  • avec ingressFirewall.enabled, un Role qui peut écrire la ConfigMap de l'ingress.

Montages de l'hôte : /var/log (lecture seule), les sockets Docker et containerd (lecture seule), et /etc/infrafence (lecture-écriture, l'enregistrement du nœud).

Contrôleurs d'ingress

Les bannissements fonctionnent au niveau du pare-feu du nœud, quel que soit le contrôleur d'ingress. Pour détecter les attaques web, l'agent a besoin des journaux d'accès : avec Traefik, activez ses journaux d'accès.