如何在GKE集群中记录CRD读请求的审计日志?
GKE自定义资源读请求审计日志查询说明
- 默认配置下,开启GKE集群审计日志后,同步到Cloud Logging的审计事件仅覆盖
k8s.io核心API范畴,查不到自定义资源(CR)读请求对应的RBAC审计记录。 - 以自定义资源
foo为例,默认审计规则仅采集create、delete类写操作事件;get、list类读操作虽然在IAM和集群RBAC中属于独立配置的权限,但默认不在审计采集范围内,因此直接在Cloud Logging中检索不到对应调用记录。
读请求日志的查询方式
集群控制面自带的kube-apiserver.log会完整记录API Server接收到的所有请求,包括自定义资源的get、list读请求,日志中包含请求方法、请求URI、调用延迟、客户端UA、审计ID、源IP、响应状态码等核心信息,日志样例如下:
... httplog.go:109] "HTTP" verb="GET" URI="/apis/foo.io/v1/namespaces/foo-ns/custom-resource/foo" latency="26.286746ms" userAgent="kubectl/v1.xx.x (linux/amd64)" audit-ID="baz" srcIP="1.2.3.4:55555" resp=200
如果需要在Cloud Logging中统一查询这类读请求的审计记录(包含响应内容),自定义调整GKE集群的审计策略,将自定义资源的读操作纳入审计采集范围,再配置对应的日志转发规则即可实现。
内容的提问来源于stack exchange,提问作者jayjyli
相关产品推荐
相关产品推荐

