GKE环境中kubectl create token操作的日志查询求助
解决GKE中kubectl create token操作的日志查询问题
核心原因
你之前没找到日志,大概率是选错了日志类型或者查询条件匹配错误。kubectl create token是Kubernetes API层面的操作,对应的日志属于GKE的Kubernetes审计日志,而非普通的GCP Cloud Audit Logs。
正确查询步骤
1. 确认Kubernetes审计日志已启用
即使你开了所有GCP审计日志,GKE的Kubernetes审计日志需要单独配置:
- 进入GKE集群详情页,点击「编辑」
- 找到「审计日志」模块,确保勾选「启用审计日志」,并选择日志级别(推荐选「全部」)
- 若之前未启用,修改集群配置后,后续的
kubectl create token操作才会生成日志,历史操作无法回溯
2. 在日志资源管理器中使用正确的查询语句
直接复制以下查询模板,替换[你的项目ID]和[你的邮箱]后执行:
resource.type="k8s_cluster" logName="projects/[你的项目ID]/logs/container.googleapis.com%2Fkubernetes_audit" protoPayload.authenticationInfo.principalEmail="[你的邮箱]" protoPayload.requestObject.kind="TokenRequest"
其他可选过滤条件
如果需要更精准定位,可以添加以下条件:
- 按服务账号名称过滤:
protoPayload.requestObject.spec.audiences:"[目标服务账号名称]" - 按操作类型确认:
protoPayload.methodName="create" - 按资源路径过滤:
protoPayload.resourceName:"serviceaccounts/tokens"
常见误区说明
- 你之前用的
io.k8s.core.v1.token.create是错误的methodName,Kubernetes审计日志中该操作的methodName就是create - 通过GCP控制台执行kubectl时,请求IP是GCP控制台/Cloud Shell的IP,不是你本地IP,所以用本地IP查询不到
- 服务账号名称不会直接出现在
protoPayload的顶层字段,需要从requestObject中提取
内容的提问来源于stack exchange,提问作者pinching
相关产品推荐
相关产品推荐

