1.3. 过滤审计日志
您可以使用 jq
或另一个 JSON 解析工具来过滤 API 服务器审计日志。
注意
日志记录到 API 服务器审计日志的信息量是由设置的审计日志策略控制的。
以下流程提供了使用 jq
在 control plane 节点 node-1.example.com
上过滤审计日志的示例。有关使用 jq 的详情,请参考 jq 手册
。
前提条件
-
您可以使用具有
dedicated-admin
角色的用户访问集群。 -
您已安装了
jq
。
流程
根据用户过滤 OpenShift API 服务器审计日志:
$ oc adm node-logs node-1.example.com \ --path=openshift-apiserver/audit.log \ | jq 'select(.user.username == "myusername")'
根据用户代理过滤 OpenShift API 服务器审计日志:
$ oc adm node-logs node-1.example.com \ --path=openshift-apiserver/audit.log \ | jq 'select(.userAgent == "cluster-version-operator/v0.0.0 (linux/amd64) kubernetes/$Format")'
通过特定 API 版本过滤 Kubernetes API 服务器审计日志,仅输出用户代理:
$ oc adm node-logs node-1.example.com \ --path=kube-apiserver/audit.log \ | jq 'select(.requestURI | startswith("/apis/apiextensions.k8s.io/v1beta1")) | .userAgent'
通过排除动词来过滤 OpenShift OAuth API 服务器审计日志:
$ oc adm node-logs node-1.example.com \ --path=oauth-apiserver/audit.log \ | jq 'select(.verb != "get")'
根据标识用户名和失败并显示错误的事件过滤 OpenShift OAuth 服务器审计日志:
$ oc adm node-logs node-1.example.com \ --path=oauth-server/audit.log \ | jq 'select(.annotations["authentication.openshift.io/username"] != null and .annotations["authentication.openshift.io/decision"] == "error")'