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
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
helm upgrade infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --reuse-valueshelm uninstall infrafence-agent --namespace infrafenceUn 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 :
autoUpdate:
enabled: falseCe 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.
