본문으로 건너뛰기

Falco

Falco는 노드와 컨테이너 활동에 대한 런타임 탐지를 제공합니다. 저장소는 이를 모든 노드의 DaemonSet으로 배포하고, modern_ebpf 드라이버 모드를 사용하며, 무거운 기본 규칙 세트를 비활성화하고, Falcosidekick을 통해 이벤트를 Loki로 전달합니다.

책임

  • 모든 노드의 런타임 이벤트 관찰
  • 해당 이벤트에 대해 Lumie 전용 커스텀 규칙 평가
  • Falcosidekick을 통해 보안 이벤트를 JSON 형식으로 Loki로 전달
  • Falco와 Falcosidekick 메트릭을 Prometheus에 노출

소스 경로

경로역할
lumie-infra/security/falco/argocd.yamlfalco 네임스페이스를 대상으로 하는 ArgoCD Application
lumie-infra/security/falco/helm-values.yaml드라이버 모드, 이미지, 커스텀 규칙, Falcosidekick, metrics, controller 종류

런타임 계약

표면계약
Controller 종류daemonset
Driver 모드modern_ebpf
기본 출력Falco의 stdout, Falcosidekick의 Loki
메트릭serviceMonitor.create: true
Web UIFalcosidekick Web UI 비활성화

규칙 집합

체크인된 규칙 계약은 기본 Falco rules 파일을 비활성화하고 falco_rules.local.yamlrules.d 아래 로컬 규칙만 유지합니다. 현재 커스텀 규칙은 다음에 초점을 맞춥니다.

  • 컨테이너 내부의 민감 파일 접근, /etc/shadow와 root SSH key 포함
  • 컨테이너 밖 클러스터 노드에서 sshd가 시작한 대화형 break-glass shell

런타임 흐름

장애 동작과 운영 리스크

  • 노드 커널이 modern_ebpf를 지원하지 않으면 Falco는 규칙 평가 전에 실패합니다.
  • 기본 규칙을 비활성화하면 노이즈와 CPU 비용은 줄지만, 로컬 규칙으로만 커버리지가 좁아집니다.
  • Loki 장애는 런타임 탐지를 멈추지 않지만, 하류 이벤트 전달을 막아 보안 이벤트 조회를 어렵게 만듭니다.
  • Falco는 Kyverno security-context 정책에서 명시적으로 예외 처리된 privileged 접근 패턴이 필요합니다.

관측성

  • Falco는 클러스터 로그 수집을 위해 구조화된 JSON을 stderr에 기록합니다.
  • Falcosidekick은 모든 우선순위를 JSON 형식으로 Loki에 전달합니다.
  • Prometheus는 활성화된 service monitor 설정을 통해 Falco와 Falcosidekick을 모두 스크레이프합니다.

검증

kubectl get applications.argoproj.io -n argocd falco
kubectl get daemonset -n falco -l app.kubernetes.io/name=falco
kubectl get deploy -n falco -l app.kubernetes.io/name=falcosidekick
kubectl get pods -n falco
kubectl logs -n falco -l app.kubernetes.io/name=falco --all-containers --tail=200
kubectl logs -n falco -l app.kubernetes.io/name=falcosidekick --all-containers --tail=200

성공 신호:

  • falco Argo CD application이 HealthySynced 상태입니다.
  • Falco DaemonSet이 클러스터 노드 전체에서 READYDESIRED와 동일하게 보고됩니다.
  • 같은 네임스페이스에 Falcosidekick deployment가 가용 상태입니다.
  • Falco 로그에 반복적인 modern_ebpf 드라이버 초기화 실패가 없고, Falcosidekick 로그에 반복적인 Loki 전달 오류가 없습니다.

관련 페이지