InfraFenceInfraFence

Live Security Operations

Começar

Kubernetes

Proteja cada nó de um cluster Kubernetes com o chart Helm do InfraFence e uma chave de cluster - instalação, values, atualizações, GitOps e o que o chart implanta.

Última atualização:

O chart Helm executa o agente como um DaemonSet: um agente em cada nó, control plane incluído. Cada nó se registra como um servidor próprio no painel.

Pré-requisitos: Kubernetes 1.22 ou posterior e Helm 3.

Criar uma chave de cluster

No painel, Configurações › Kubernetes › Criar chave de cluster (proprietários e administradores). Ao contrário de um token de instalação, uma chave de cluster registra todos os nós do cluster. Ela começa com IFK- e é mostrada uma única vez: copie-a na hora. Depois, a lista mostra só os quatro últimos caracteres.

Revogar uma chave impede que novos nós entrem com ela; os nós já registrados continuam funcionando. No Starter só um nó pode se registrar, já que o Starter cobre um servidor; o Basic e superiores não têm limite e cobram um servidor por nó.

Instalar

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

O painel mostra o mesmo comando com a sua chave e o nome do cluster já preenchidos.

Atualizar e desinstalar

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

Um nó que se registra de novo (um nó recriado, ou um /etc/infrafence apagado) mantém o seu servidor no painel e recebe um novo token.

Values

Value Padrão Significado
apiKey "" (obrigatório) A chave de cluster. Guardada em um Secret.
serverUrl https://infrafence.com O painel.
clusterName "" Os nós são agrupados por ele no painel; detectado a partir do cluster quando vazio.
image.repository ghcr.io/infrafence/infrafence-agent A imagem do agente.
image.tag "" O appVersion do chart quando vazio.
image.pullPolicy Always
autoUpdate.enabled true Permite que o agente atualize o próprio DaemonSet. Desative com GitOps.
ingressFirewall.enabled false RBAC para bloquear endereços no ConfigMap do nginx-ingress.
ingressFirewall.namespace ingress-nginx Onde o nginx-ingress roda.
ingressFirewall.configMapName ingress-nginx-controller O ConfigMap dele.
resources requests 50m de CPU, 64Mi; limits 500m de CPU, 256Mi
tolerations [{operator: Exists}] Todos os nós, control plane incluído.
nodeSelector {}
priorityClassName ""
extraEnv [] Mais variáveis de ambiente, por exemplo WEB_LOG_PATH.
serviceAccount.create true Também serviceAccount.name e serviceAccount.annotations.

Atualizações e GitOps

Com autoUpdate.enabled, um agente que tem permissão para atualizar (a configuração Atualizações do agente está em Instalar automaticamente, ou você escolheu Instalar agora) verifica a assinatura cosign da imagem da nova versão e move o seu DaemonSet para essa imagem pelo digest. Se o ArgoCD ou o Flux gerencia o cluster, desative isso e atualize a tag da imagem no seu repositório:

yaml
autoUpdate:
  enabled: false

O que o chart implanta

  • um DaemonSet com rede do host, o namespace PID do host e pods privilegiados, distribuído um nó por vez;
  • uma ServiceAccount com acesso somente leitura à API do Kubernetes, mais a permissão de fazer patch no próprio DaemonSet para as atualizações;
  • um Secret com a chave de cluster;
  • com ingressFirewall.enabled, uma Role que pode gravar o ConfigMap do ingress.

Mounts do host: /var/log (somente leitura), os sockets do Docker e do containerd (somente leitura) e /etc/infrafence (leitura e escrita, o registro do nó).

Controladores de ingress

Os banimentos funcionam no firewall do nó, seja qual for o controlador de ingress. Para a detecção de ataques web, o agente precisa dos logs de acesso: com o Traefik, ative os logs de acesso dele.