审核日志记录

本页面介绍如何访问 Kubernetes apiserver 审核日志。

概览

每个 GKE On-Prem 集群都有 Kubernetes 审核日志记录,可按时间顺序记录对集群的 Kubernetes API 服务器的调用。审核日志适合用于调查可疑的 API 请求或收集统计信息。

基于磁盘的审核日志记录

默认情况下,来自每个 API 服务器的审核日志会转储到永久性磁盘,这样虚拟机重启/升级就不会导致日志消失。GKE On-Prem 最多可保留 10 GB 的审核日志。

Cloud Audit Logging

如果启用了 Cloud Audit Logging,则系统会使用安装期间设置的项目和位置,将所有 API 服务器的管理员活动审核日志发送到 Google Cloud。

访问 Kubernetes 审核日志

基于磁盘的审核日志记录

您只能通过管理集群访问审核日志:

  1. 查看在集群中运行的 Kubernetes API 服务器:

    kubectl get pods --all-namespaces -l component=kube-apiserver
    
  2. 下载 API 服务器的审核日志:

    kubectl cp -n [NAMESPACE] [APISERVER_POD_NAME]:/var/log/kube-audit/kube-apiserver-audit.log /tmp/kubeaudit.log
    

    此命令会提取最新的日志文件,该日志文件对于管理员集群最多可以包含 1 GB 的数据,而对于用户集群最多可以包含 850 GB 的数据。

    较早的审核记录保存在单独的文件中。如需查看这些文件,请运行以下命令:

    kubectl exec -n [NAMESPACE] [APISERVER_POD_NAME] -- ls /var/log/kube-audit -la
    

    每个审核日志的文件名都有一个时间戳,用于指明文件的轮替时间。文件包含该时间和日期之前的审核日志。

Cloud Audit Logging

控制台

  1. 在 Google Cloud 控制台中,前往日志记录菜单中的日志页面。

    前往“日志”页面

  2. 按标签过滤或搜索文字框中(在上述下拉菜单上方),点击向下箭头以打开下拉菜单。 从菜单中,选择转换为高级过滤条件

  3. 在文本框中填写以下过滤条件:

    resource.type="k8s_cluster"
    logName="projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosaudit.googleapis.com"
    
  4. 点击提交过滤条件以显示来自配置为登录此项目的 GKE On-Prem 集群的所有审核日志。

gcloud

列出项目的管理员活动日志中适用于 k8s_cluster 资源类型的前两个日志条目:

gcloud logging read \
    'logName="projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosaudit.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

其中,[PROJECT_ID] 是您的项目 ID。

输出内容会显示两个日志条目。请注意,对于每个日志条目,logName 字段的值为 projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity,并且 protoPayload.serviceName 等于 anthosaudit.googleapis.com

审核政策

审核日志记录行为由静态配置的 Kubernetes 审核日志记录政策决定。目前不支持更改此政策。