- Authors

- Name
- Phillip Pham
- @ddppham
TL;DR
- Trivy: Bester Allrounder fuer Image-, Filesystem- und IaC-Scanning. Einfach in CI/CD integrierbar, schnell, Open Source.
- Falco: Runtime-Security-Monitoring auf Kernel-Ebene. Erkennt verdaechtiges Verhalten in laufenden Containern.
- Kubescape: Compliance-Scanning gegen NSA/CISA, MITRE ATT&CK und CIS-Benchmarks. Ideal fuer Security-Posture-Management.
- Alle drei Tools ergaenzen sich -- sie decken unterschiedliche Phasen ab (Build, Deploy, Runtime).
Warum drei Tools statt einem?
Container-Security hat verschiedene Angriffsvektoren, die kein einzelnes Tool vollstaendig abdeckt:
| Phase | Bedrohung | Tool |
|---|---|---|
| Build | Verwundbare Base-Images, Secrets in Layern | Trivy |
| Deploy | Fehlkonfigurationen, fehlende Security-Contexts | Kubescape |
| Runtime | Shell-Zugriffe, Privilege Escalation, Crypto-Miner | Falco |
Ein Image kann beim Build sauber sein, aber zur Laufzeit kompromittiert werden. Umgekehrt nuetzt Runtime-Monitoring nichts, wenn bereits bekannte CVEs im Image stecken. Deshalb braucht ihr Coverage ueber alle Phasen.
Trivy: Image- und Vulnerability-Scanning
Trivy ist ein Open-Source-Scanner von Aqua Security, der mittlerweile weit ueber reines Image-Scanning hinausgeht: Filesystem, Git-Repos, Kubernetes-Manifeste und sogar Terraform-Code.
Installation und Basis-Scans
# Trivy installieren (Linux/macOS)
brew install trivy
# oder
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
# Container-Image scannen
trivy image nginx:1.25
trivy image --severity HIGH,CRITICAL registry.example.com/myapp:v2.1
# Nur fixbare Vulnerabilities anzeigen
trivy image --ignore-unfixed --severity HIGH,CRITICAL nginx:1.25
# Filesystem scannen (z.B. im CI)
trivy fs --security-checks vuln,secret,misconfig ./
# Kubernetes-Manifest pruefen
trivy config ./k8s-manifests/
Trivy Operator im Cluster
Der Trivy Operator scannt automatisch alle laufenden Images und erstellt VulnerabilityReport-Ressourcen.
# Trivy Operator installieren
helm repo add aquasecurity https://aquasecurity.github.io/helm-charts/
helm repo update
helm install trivy-operator aquasecurity/trivy-operator \
--namespace trivy-system \
--create-namespace \
--set trivy.severity=CRITICAL,HIGH,MEDIUM \
--set trivy.ignoreUnfixed=true \
--set operator.scanJobTimeout=10m
# Vulnerability Reports abfragen
kubectl get vulnerabilityreports -A
# Details fuer ein bestimmtes Image
kubectl get vulnerabilityreport -n production \
-l trivy-operator.resource.name=my-app \
-o jsonpath='{.items[0].report.summary}'
Trivy in der CI/CD-Pipeline (GitLab CI Beispiel)
# .gitlab-ci.yml (Auszug)
security-scan:
stage: test
image: aquasec/trivy:latest
script:
- trivy image --exit-code 1 --severity CRITICAL ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}
- trivy fs --exit-code 1 --severity HIGH,CRITICAL --security-checks secret .
allow_failure: false
Der --exit-code 1 sorgt dafuer, dass die Pipeline bei kritischen Findings abbricht.
Falco: Runtime Security Monitoring
Falco ueberwacht Syscalls auf Kernel-Ebene und erkennt verdaechtiges Verhalten in Echtzeit -- z.B. Shell-Zugriffe in Containern, unerwartete Netzwerkverbindungen oder Dateizugriffe auf sensitive Pfade.
Installation
# Falco via Helm installieren
helm repo add falcosecurity https://falcosecurity.github.io/charts
helm repo update
helm install falco falcosecurity/falco \
--namespace falco-system \
--create-namespace \
--set falco.jsonOutput=true \
--set falco.httpOutput.enabled=true \
--set falcosidekick.enabled=true \
--set falcosidekick.config.slack.webhookurl="https://hooks.slack.com/YOUR/WEBHOOK"
Falcosidekick leitet Events an verschiedene Ziele weiter (Slack, PagerDuty, Elasticsearch, Loki, etc.).
Eigene Falco-Rules schreiben
Die mitgelieferten Default-Rules sind ein guter Start, aber fuer Produktion solltet ihr sie anpassen. Hier einige praxisnahe Beispiele:
# custom-falco-rules.yaml
customRules:
custom-rules.yaml: |-
# Shell in Produktions-Container erkennen
- rule: Shell in Production Container
desc: Jemand hat eine Shell in einem Produktions-Container geoeffnet
condition: >
spawned_process
and container
and proc.name in (bash, sh, zsh, ash)
and k8s.ns.name = "production"
output: >
Shell geoeffnet in Produktions-Container
(user=%user.name pod=%k8s.pod.name ns=%k8s.ns.name cmd=%proc.cmdline)
priority: CRITICAL
tags: [container, shell, mitre_execution]
# Sensitive Dateien lesen
- rule: Read Sensitive Files
desc: Zugriff auf sensitive Dateien wie /etc/shadow oder private Keys
condition: >
open_read
and container
and (fd.name startswith /etc/shadow
or fd.name startswith /root/.ssh
or fd.name contains id_rsa)
output: >
Sensitive Datei gelesen
(user=%user.name file=%fd.name pod=%k8s.pod.name)
priority: WARNING
tags: [container, filesystem, mitre_credential_access]
# Unerwartete ausgehende Verbindung
- rule: Unexpected Outbound Connection
desc: Container stellt Verbindung zu unbekannter externer IP her
condition: >
outbound
and container
and not fd.rip in (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
and not k8s.ns.name in (kube-system, monitoring)
output: >
Unerwartete ausgehende Verbindung
(pod=%k8s.pod.name ns=%k8s.ns.name remote=%fd.rip:%fd.rport)
priority: WARNING
tags: [container, network, mitre_command_and_control]
Rules als ConfigMap oder direkt ueber Helm-Values deployen:
helm upgrade falco falcosecurity/falco \
--namespace falco-system \
-f custom-falco-rules.yaml
Falco-Events abfragen
# Letzte Events aus den Falco-Logs
kubectl -n falco-system logs -l app.kubernetes.io/name=falco --tail=50
# Oder ueber Falcosidekick UI (falls aktiviert)
kubectl -n falco-system port-forward svc/falco-falcosidekick-ui 2802:2802
Kubescape: Compliance und Security Posture
Kubescape scannt euren Cluster und eure Manifeste gegen etablierte Frameworks:
- NSA/CISA Kubernetes Hardening Guide
- MITRE ATT&CK fuer Container
- CIS Kubernetes Benchmark
- SOC 2
Installation und erste Scans
# Kubescape installieren
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | bash
# Cluster gegen NSA/CISA Framework scannen
kubescape scan framework nsa
# CIS Benchmark
kubescape scan framework cis-v1.23-t1.0.1
# Einzelnes Manifest scannen
kubescape scan ./k8s-manifests/deployment.yaml
# Nur einen Namespace pruefen
kubescape scan framework nsa --include-namespaces production
# Ergebnis als JSON exportieren (fuer CI/CD)
kubescape scan framework nsa --format json --output results.json
Kubescape im Cluster (Operator)
# Kubescape Operator installieren
helm repo add kubescape https://kubescape.github.io/helm-charts/
helm repo update
helm install kubescape kubescape/kubescape-operator \
--namespace kubescape \
--create-namespace \
--set clusterName=production-cluster
Der Operator scannt regelmaessig und speichert Ergebnisse als Custom Resources. Dashboards koennt ihr ueber die Kubescape Cloud oder eine eigene Grafana-Instanz aufbauen.
Kubescape in der CI/CD-Pipeline
# GitHub Actions Beispiel
- name: Kubescape Scan
uses: kubescape/github-action@v3
with:
format: sarif
outputFile: kubescape-results.sarif
frameworks: nsa,mitre
severityThreshold: high
failedThreshold: 0
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: kubescape-results.sarif
Vergleichstabelle: Trivy vs. Falco vs. Kubescape
| Kriterium | Trivy | Falco | Kubescape |
|---|---|---|---|
| Primaerer Fokus | Vulnerability Scanning | Runtime Security | Compliance Scanning |
| Scanning-Phase | Build/Deploy | Runtime | Build/Deploy/Audit |
| Image-Scanning | Ja (Kern-Feature) | Nein | Begrenzt |
| Runtime-Erkennung | Nein | Ja (Syscall-Level) | Nein |
| Compliance-Frameworks | Begrenzt | Nein | NSA, CIS, MITRE, SOC2 |
| IaC-Scanning | Ja (Terraform, K8s YAML) | Nein | Ja (K8s YAML) |
| Secret Detection | Ja | Nein | Nein |
| CI/CD-Integration | Sehr einfach | Nicht relevant | Einfach |
| Cluster-Operator | Ja (Trivy Operator) | Ja (DaemonSet) | Ja (Kubescape Operator) |
| Ressourcenbedarf | Gering (on-demand) | Mittel (DaemonSet) | Gering (on-demand) |
| Lizenz | Apache 2.0 | Apache 2.0 | Apache 2.0 |
Integration in den Security-Workflow
So sieht ein typischer Security-Workflow mit allen drei Tools aus:
Developer Commit
|
v
+---------+
| CI/CD |
+---------+
|
+----v----+ +----------+
| Trivy |--*/}| Image | Bricht ab bei CRITICAL CVEs
| Scan | | Registry |
+---------+ +----------+
|
+----v-------+
| Kubescape | Prueft Manifest gegen NSA/CIS
| Scan |
+------------+
|
v
+---------+
| Deploy |
+---------+
|
v
+----------+
| Falco | Ueberwacht Runtime-Verhalten
| (always) |
+----------+
|
v
+--------------+
| Alertmanager | Slack, PagerDuty, etc.
+--------------+
Prometheus-Alerts fuer Security-Events
Sowohl Trivy Operator als auch Falco exponieren Prometheus-Metriken:
# security-prometheus-rules.yaml
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: security-scanning-alerts
namespace: monitoring
labels:
release: monitoring
spec:
groups:
- name: security-scanning
rules:
- alert: CriticalVulnerabilityFound
expr: trivy_image_vulnerabilities{severity="Critical"} > 0
for: 10m
labels:
severity: critical
annotations:
summary: "Kritische Vulnerability in {{ $labels.image_repository }}:{{ $labels.image_tag }}"
description: "{{ $value }} kritische CVEs gefunden. Sofortige Aktualisierung empfohlen."
- alert: FalcoCriticalEvent
expr: rate(falco_events{priority="Critical"}[5m]) > 0
for: 1m
labels:
severity: critical
annotations:
summary: "Falco Critical Event: {{ $labels.rule }}"
description: "Kritisches Security-Event in Namespace {{ $labels.k8s_ns_name }}"
- alert: ComplianceDrift
expr: kubescape_compliance_score < 70
for: 1h
labels:
severity: warning
annotations:
summary: "Compliance-Score unter 70% fuer Framework {{ $labels.framework }}"
Haeufige Findings und wie man sie behebt
Top-5 Trivy-Findings
| Finding | Schwere | Loesung |
|---|---|---|
| Veraltetes Base-Image | HIGH/CRITICAL | Base-Image aktualisieren, alpine/distroless nutzen |
| Secrets im Image-Layer | CRITICAL | Multi-Stage-Build, Secrets via Env/Volumes |
| Verwundbare OS-Packages | MEDIUM-CRITICAL | apk upgrade / apt-get upgrade im Build |
| Veraltete App-Dependencies | MEDIUM-HIGH | npm audit fix, pip install --upgrade |
| Misconfigured Dockerfile | MEDIUM | USER nonroot, keine COPY . . mit Secrets |
Top-5 Kubescape-Findings
| Finding | Framework | Loesung |
|---|---|---|
| Container laeuft als root | NSA, CIS | securityContext.runAsNonRoot: true |
| Kein Resource Limit | NSA | resources.limits setzen |
| Privilege Escalation erlaubt | CIS | allowPrivilegeEscalation: false |
| Keine Network Policy | NSA | Default-Deny NetworkPolicy anlegen |
| Host-PID/Network-Zugriff | MITRE | hostPID: false, hostNetwork: false |
Minimales Security-Context Template
# secure-pod-template.yaml
apiVersion: v1
kind: Pod
metadata:
name: secure-app
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: registry.example.com/myapp:v1.0
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
Dieses Template besteht die meisten Kubescape- und Trivy-Config-Checks automatisch.
Checkliste: Security Scanning einfuehren
- Trivy in der CI/CD-Pipeline fuer Image-Scans (
--exit-code 1bei CRITICAL) - Trivy Operator im Cluster fuer laufende Workloads
- Falco als DaemonSet im Cluster mit Falcosidekick fuer Alerting
- Kubescape-Scan als Gate vor jedem Deployment
- Prometheus-Alerts fuer Security-Events eingerichtet
- Security-Context-Defaults in Helm-Charts/Templates
- Regelmaessige Reviews der Falco-Rules (monatlich)
- Vulnerability-SLA definiert: CRITICAL = 24h, HIGH = 7 Tage
Weitergehende Ressourcen
- Kubernetes Security Hardening -- Cluster-Level-Haertung
- Kubernetes RBAC Enterprise -- Zugriffssteuerung richtig umsetzen
- Kubernetes Network Policies -- Netzwerk-Segmentierung
- Kubernetes Monitoring mit Prometheus -- Observability-Stack fuer Security-Metriken
Security-Assessment fuer euren Cluster? Wir fuehren Security-Audits durch, richten Scanning-Toolchains ein und schulen eure Teams in Container-Security-Best-Practices. Kontakt aufnehmen fuer ein unverbindliches Erstgespraech.
Kubernetes-Beratung gesucht?
Wir helfen deutschen Unternehmen bei der Kubernetes-Implementierung, Migration und Optimierung. DSGVO-konform und praxiserprobt.
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
CKS Vorbereitung: Security-Tools die du beherrschen musst
Alle CKS-relevanten Security-Tools mit Hands-on Beispielen: Trivy, Falco, AppArmor, Seccomp, kube-bench, OPA Gatekeeper und NetworkPolicies.
Security Scanning automatisieren: Trivy und Falco CI/CD
Automatisiertes CVE-Scanning mit Trivy in der Build-Phase und Laufzeiterkennung mit Falco als Praxisanleitung mit Pipeline-Beispielen.
Falco: Runtime Security für Kubernetes-Cluster
Falco erkennt verdächtiges Verhalten in Kubernetes-Containern zur Laufzeit. Installation, Custom Rules und Alerting praxisnah erklärt.
Kubernetes Security Audit: Die komplette Checkliste
Kubernetes Security Audit systematisch durchführen: CIS Benchmark mit kube-bench, RBAC-Review, Network Policies prüfen und Image-Scanning mit Trivy.
Trivy: Container-Schwachstellen automatisch scannen
Trivy findet Schwachstellen in Container-Images, Dateisystemen und Kubernetes-Clustern. Anleitung für CLI, CI/CD-Integration und den Trivy Operator.