Azure AKS中Falco k8s-audit插件无日志及Webhook配置咨询
问题1:Falco未生成K8s审计事件排查
检查点1:确认K8s审计Webhook已配置指向Falco
AKS不会自动将审计事件发送到Falco,需手动配置审计策略和Webhook:
- 创建审计策略文件
audit-policy.yaml,定义需收集的事件:
apiVersion: audit.k8s.io/v1 kind: Policy rules: - level: RequestResponse resources: - group: "" resources: ["pods", "services", "secrets"] - level: Metadata resources: - group: "*" resources: ["*"]
- 创建Webhook配置ConfigMap,指向Falco的NodePort服务:
apiVersion: v1 kind: ConfigMap metadata: name: audit-webhook-config namespace: kube-system data: webhook-config.yaml: | apiVersion: v1 kind: Config clusters: - cluster: server: http://<AKS_NODE_IP>:30007/k8s-audit name: falco-audit contexts: - context: cluster: falco-audit user: "" name: default-context current-context: default-context preferences: {} users: []
替换<AKS_NODE_IP>为集群任意节点的内网/公网IP。
- 用Azure CLI更新AKS审计配置:
az aks update -g <RESOURCE_GROUP> -n <AKS_CLUSTER_NAME> --enable-audit-logging --audit-policy-file audit-policy.yaml --audit-webhook-config-file audit-webhook-config.yaml
检查点2:验证Falco插件加载状态
- 查看Falco Pod日志,确认k8saudit插件初始化成功:
kubectl logs -n falco <FALCO_POD_NAME> | grep k8saudit
若出现Loaded plugin: k8saudit则正常;若有错误,检查插件库路径:
kubectl exec -n falco <FALCO_POD_NAME> -- ls /usr/lib/falco/
确认libk8saudit.so文件存在。
检查点3:确认Falco服务可达性
- 在集群内测试Webhook端点:
kubectl run -it --rm --image=curlimages/curl curl-test -- curl http://falco-k8saudit-webhook.falco.svc.cluster.local:9765/k8s-audit
返回405 Method Not Allowed为正常(仅接受POST请求);若连接超时,检查Service的selector是否匹配Falco Pod标签、端口是否正确。
检查点4:验证审计规则有效性
- 确认审计规则文件已挂载:
kubectl exec -n falco <FALCO_POD_NAME> -- ls /etc/falco/
查看规则内容是否包含审计相关配置:
kubectl exec -n falco <FALCO_POD_NAME> -- grep -A 5 -B 5 "k8s_audit" /etc/falco/k8s_audit_rules.yaml
问题2:云Kubernetes部署中Webhook配置文件的使用
在云K8s(AKS/EKS/GKE)中,Webhook用于将K8s审计事件转发到外部服务,通用步骤如下:
定义审计策略
创建audit-policy.yaml,根据业务需求指定事件级别和监控资源,比如仅收集敏感操作(创建Secret、删除Pod)的RequestResponse级事件,减少日志量。编写Webhook配置文件
采用K8sConfig格式,指定事件接收服务地址:
- 集群内Service地址格式:
http://<SERVICE_NAME>.<NAMESPACE>.svc.cluster.local:<PORT>/<PATH> - NodePort/LoadBalancer地址需确保K8s控制平面网络可达(云厂商控制平面通常能访问集群内NodePort)
- 若启用HTTPS,需配置CA证书,确保控制平面信任Webhook证书。
- 更新集群审计配置
- AKS:使用
az aks update命令,指定审计策略和Webhook配置文件(参考问题1的步骤) - EKS:通过eksctl或控制台更新集群审计配置,添加审计策略和Webhook目标
- GKE:创建集群时或使用
gcloud container clusters update命令启用审计日志并配置Webhook
- 验证Webhook工作
执行K8s操作(如创建Pod、删除Secret),查看目标服务(如Falco)日志,确认是否收到审计事件。
内容的提问来源于stack exchange,提问作者Ajinkya16
相关产品推荐
相关产品推荐

