启用审核日志记录

本文档介绍如何为 Anthos clusters on Bare Metal 启用和使用 Cloud Audit Logs。Anthos clusters on Bare Metal 使用 Kubernetes 审核日志记录,按时间顺序记录对集群的 Kubernetes API 服务器的调用。审核日志适合用于调查可疑的 API 请求以及收集统计信息。

如果启用了 Cloud Audit Logs,审核日志将写入您的 Google Cloud 项目中的 Cloud Audit Logs。与写入磁盘,甚至在本地日志记录系统中捕获日志相比,写入 Cloud Audit Logs 具有多个优势:

  • 所有 Anthos 集群的审核日志都可以集中管理。
  • 写入 Cloud Audit Logs 的日志条目是不可变的。
  • Cloud Audit Logs 条目会保留 400 天。
  • Cloud Audit Logs 功能包含在 Anthos 的价格中。
  • 您可以配置 Anthos clusters on Bare Metal 将日志写入磁盘或 Cloud Audit Logs。

基于磁盘的审核日志记录

默认情况下,Anthos clusters on Bare Metal 中的审核日志会写入永久性磁盘,这样集群重启和升级就不会导致日志消失。Anthos clusters on Bare Metal 最多可保留 1 GB 的审核日志条目。

您可以通过登录到控制层面节点来访问基于磁盘的审核日志。这些日志位于 /var/log/apiserver/ 目录中。

Cloud Audit Logs

如果启用了 Cloud Audit Logs,则所有 Kubernetes API 服务器的管理员活动审核日志条目都会发送到 Google Cloud。这些日志条目存储在集群的项目名称和位置下。如需将日志条目缓冲并写入到 Cloud Audit Logs,Anthos clusters on Bare Metal 会将 audit-proxy Pod 部署到管理员集群中。此 Pod 也可用作用户集群的 Sidecar 容器。

限制

Anthos clusters on Bare Metal 上的 Cloud Audit Logs 功能是一项预览版功能,它具有以下限制:

  • 不支持数据访问日志记录。
  • 不支持修改 Kubernetes 审核政策。
  • Cloud Audit Logs 不能应对长时间的网络中断。如果日志条目无法导出到 Google Cloud,它们将被缓存到 10 GB 的磁盘缓冲区中。如果该缓冲区填满,则会丢弃后续条目。
  • 只有在创建新的 1.8.0 集群时,才能启用 Cloud Audit Logs。该预览版功能不支持通过升级在现有集群上启用 Cloud Audit Logs。

为 Cloud Audit Logs 创建服务帐号

在 Anthos clusters on Bare Metal 上启用 Cloud Logging 和 Cloud Monitoring 之前,您必须先配置以下内容:

  1. 在 Google Cloud 项目中创建一个 Cloud Monitoring 工作区(如果您还没有该工作区)。

    此操作在 Google Cloud 控制台中完成。点击以下按钮并遵循工作流完成此操作。

    转到“监控”

  2. 点击以下按钮以启用所需的 API:

    启用 Anthos Audit API

    启用 Stackdriver API

    启用 Monitoring API

    启用 Logging API

  3. 将以下 IAM 角色分配给 Stackdriver 代理使用的服务帐号:

    • logging.logWriter
    • monitoring.metricWriter
    • stackdriver.resourceMetadata.writer
    • monitoring.dashboardEditor

在创建集群时启用 Cloud Audit Logs

如需在 Anthos clusters on Bare Metal 上使用 Cloud Audit Logs,请遵循常规集群创建的相关说明,但请在执行 bmctl create cluster 命令之前先对集群配置文件进行以下修改:

  1. 取消备注集群配置文件中的 disableCloudAuditLogging 字段,并确保将其设置为 false,如以下示例所示:

    ...
    clusterOperations:
        # Cloud project for logs and metrics.
        projectID: `PROJECT_ID`
        # Cloud location for logs and metrics.
        location: us-central1
        # Enable Cloud Audit Logging if uncommented and set to false.
        disableCloudAuditLogging: false
    ...
    

    集群创建过程的其余部分是相同的。如需了解详情以及查看相关说明的链接,请参阅创建集群:概览

访问 Cloud Audit Logs

控制台

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

    转到“日志”页面

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

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

    resource.type="k8s_cluster"
    logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    

    PROJECT_ID 替换为您的项目 ID。

  4. 点击提交过滤条件以显示来自 Anthos clusters on VMware(已配置为登录此项目)的所有审核日志。

gcloud

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

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

PROJECT_ID 替换为您的项目 ID。

输出区将显示两个日志条目。请注意,对于每个日志条目,logName 字段的值为 projects/<var>PROJECT_ID</var>/logs/externalaudit.googleapis.com%2Factivity
并且 protoPayload.serviceName 等于 anthosgke.googleapis.com

审核政策

Cloud Audit Logs 行为由静态配置的 Kubernetes 审核日志记录政策决定。系统目前不支持更改此政策,但将在未来版本中提供此项支持。