You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何豁免GKE的`system:*`主体Admin Read(数据访问)审计日志?

解决GKE中排除system:*主体Admin Read审计日志的方法

方案1:自定义Kubernetes审计策略

GKE支持通过自定义审计策略文件精准控制日志记录范围,绕过豁免主体无法使用通配符的限制。你可以编写规则,对system:*用户的Admin Read操作设置日志级别为None,同时记录其他主体的对应操作:

  1. 创建审计策略文件(比如audit-policy.yaml):
apiVersion: audit.k8s.io/v1
kind: Policy
# 先匹配需要排除的system用户操作,设置为不记录
rules:
- level: None
  verbs: ["get", "list", "watch"] # 对应Admin Read类型的操作
  subjects:
  - kind: User
    name: "system:*"
# 再匹配其他主体的Admin Read操作,设置需要的日志级别(比如RequestResponse)
- level: RequestResponse
  verbs: ["get", "list", "watch"]
  1. 将该策略应用到GKE集群:
gcloud container clusters update YOUR_CLUSTER_NAME --zone YOUR_CLUSTER_ZONE --audit-policy-file=audit-policy.yaml

注意:Kubernetes审计策略按规则顺序匹配,所以排除规则要放在前面,确保先匹配到system:*用户的操作并跳过记录。

方案2:在Cloud Logging层面过滤日志

如果不想修改集群审计配置,也可以直接在Cloud Logging中创建过滤器,只显示非system:*主体的Admin Read日志:

使用以下过滤器表达式(替换YOUR_PROJECT_ID为你的项目ID):

resource.type="k8s_cluster" 
AND logName:"projects/YOUR_PROJECT_ID/logs/kube-audit" 
AND protoPayload.authenticationInfo.principalEmail !~ "system:*" 
AND protoPayload.requestVerb IN ("get", "list", "watch")

你可以将这个过滤器保存为日志视图,后续直接通过视图快速查看目标日志,无需重复输入过滤条件。

方案3:调整GKE默认审计配置(进阶)

如果使用基础设施即代码工具(如Terraform)管理集群,可以在集群配置中指定自定义审计策略:

resource "google_container_cluster" "primary" {
  name     = "my-cluster"
  location = "us-central1"

  master_config {
    audit_config {
      policy_config {
        file = "audit-policy.yaml"
      }
    }
  }
}

这种方式可以确保集群创建时就应用好过滤规则,避免后续手动更新的麻烦。

内容的提问来源于stack exchange,提问作者phandox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 17:56:18