InfraFenceInfraFence

Live Security Operations

Inizia

Kubernetes

Proteggi ogni nodo di un cluster Kubernetes con il chart Helm di InfraFence e una chiave di cluster: installazione, values, aggiornamenti, GitOps e cosa installa il chart.

Ultimo aggiornamento:

Il chart Helm esegue l'agente come DaemonSet: un agente su ogni nodo, control plane compreso. Ogni nodo si registra come server a sé nella dashboard.

Prerequisiti: Kubernetes 1.22 o successivo e Helm 3.

Creare una chiave di cluster

Nella dashboard, Impostazioni › Kubernetes › Crea chiave di cluster (owner e admin). A differenza di un token di installazione, una chiave di cluster registra tutti i nodi del cluster. Inizia con IFK- e viene mostrata una sola volta: copiala subito. In seguito l'elenco ne mostra solo gli ultimi quattro caratteri.

Revocare una chiave impedisce a nuovi nodi di unirsi con quella chiave; i nodi già registrati continuano a funzionare. Su Starter può registrarsi un solo nodo, perché Starter copre un server; da Basic in su non c'è limite e ogni nodo viene fatturato come un server.

Installare

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

La dashboard mostra lo stesso comando con la tua chiave e il nome del cluster già inseriti.

Aggiornare e disinstallare

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

Un nodo che si registra di nuovo (un nodo ricostruito, o un /etc/infrafence cancellato) mantiene il suo server nella dashboard e riceve un nuovo token.

Values

Value Predefinito Significato
apiKey "" (obbligatorio) La chiave di cluster. Salvata in un Secret.
serverUrl https://infrafence.com La dashboard.
clusterName "" Nella dashboard i nodi sono raggruppati in base a questo valore; se vuoto viene rilevato dal cluster.
image.repository ghcr.io/infrafence/infrafence-agent L'immagine dell'agente.
image.tag "" L'appVersion del chart, se vuoto.
image.pullPolicy Always
autoUpdate.enabled true Permette all'agente di aggiornare il proprio DaemonSet. Disattivalo con GitOps.
ingressFirewall.enabled false RBAC per bloccare indirizzi nella ConfigMap di nginx-ingress.
ingressFirewall.namespace ingress-nginx Dove gira nginx-ingress.
ingressFirewall.configMapName ingress-nginx-controller La sua ConfigMap.
resources requests 50m CPU, 64Mi; limits 500m CPU, 256Mi
tolerations [{operator: Exists}] Tutti i nodi, control plane compreso.
nodeSelector {}
priorityClassName ""
extraEnv [] Altre variabili d'ambiente, per esempio WEB_LOG_PATH.
serviceAccount.create true Ci sono anche serviceAccount.name e serviceAccount.annotations.

Aggiornamenti e GitOps

Con autoUpdate.enabled, un agente autorizzato ad aggiornarsi (l'impostazione Aggiornamenti dell'agente è Installa automaticamente, oppure hai scelto Installa adesso) verifica la firma cosign della nuova immagine di release e sposta il proprio DaemonSet su quell'immagine tramite digest. Se il cluster è gestito da ArgoCD o Flux, disattiva questa opzione e aggiorna invece il tag dell'immagine nel tuo repository:

yaml
autoUpdate:
  enabled: false

Cosa installa il chart

  • un DaemonSet con rete dell'host, namespace PID dell'host e pod privilegiati, distribuito un nodo alla volta;
  • un ServiceAccount con accesso in sola lettura all'API di Kubernetes, più il permesso di modificare (patch) il proprio DaemonSet per gli aggiornamenti;
  • un Secret con la chiave di cluster;
  • con ingressFirewall.enabled, un Role che può scrivere la ConfigMap dell'ingress.

Mount dall'host: /var/log (sola lettura), i socket di Docker e containerd (sola lettura) e /etc/infrafence (lettura e scrittura, la registrazione del nodo).

Ingress controller

I ban funzionano sul firewall del nodo, qualunque sia l'ingress controller. Per rilevare gli attacchi web l'agente ha bisogno dei log di accesso: con Traefik, attiva i suoi access log.