Tetragon eBPF 安全可观测性
Tetragon 基于 eBPF 观测进程、文件、网络和 Kubernetes 身份,能在内核层执行安全策略和记录事件。它适合检测容器逃逸、异常 exec、敏感文件访问和网络连接,并把事件导出到 stdout、文件或 gRPC。
Tetragon 由 agent(DaemonSet)、TracingPolicy 和事件导出器组成。策略可以只观测,也可以在 enforce 模式下阻断行为。
安装:
helm repo add cilium https://helm.cilium.io
helm install tetragon cilium/tetragon \
--namespace kube-system \
--set tetragon.enablePolicyFilter=true
kubectl -n kube-system get pods -l app.kubernetes.io/name=tetragon
查看事件:
kubectl -n kube-system logs -l app.kubernetes.io/name=tetragon -c export-stdout -f
观测进程执行:
kubectl apply -f - <<'EOF'
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: monitor-exec
spec:
kprobes:
- call: "sys_execve"
syscall: true
args:
- index: 0
type: "string"
selectors:
- matchNamespaces:
- namespace: demo
operator: In
EOF
阻断敏感路径访问:
kubectl apply -f - <<'EOF'
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: block-etc-shadow
spec:
kprobes:
- call: "security_file_permission"
syscall: false
args:
- index: 0
type: "file"
selectors:
- matchArgs:
- index: 0
operator: Prefix
values: ["/etc/shadow"]
matchActions:
- action: Sigkill
EOF
使用 tetra CLI 实时观察:
tetra getevents -o compact
tetra getevents --namespace demo
enforce 模式可能误杀正常进程,先在 observe 模式验证。matchNamespaces 和 matchArgs 写错,事件不会触发。CAP_BPF/CAP_SYS_ADMIN 或特权,安全策略要放行。tetragon 日志。tetra getevents — 实时事件tetra tracingpolicy list — 查看策略kubectl get tracingpolicy — 查看 CRDkubectl logs -n kube-system -l app.kubernetes.io/name=tetragon — agent 日志bpftool prog list — 查看加载的 eBPF 程序