汇总和存储组织的日志

本文档介绍如何使用非拦截汇总接收器来管理 Google Cloud 组织中包含的资源生成的日志。

您可以将汇总接收器配置为拦截或不拦截,具体取决于您是想控制可以查询哪些日志或通过子资源中的接收器路由哪些日志。在本教程中,您将创建一个汇总接收器,用于将组织的审核日志路由到日志存储桶。您可以配置接收器的过滤条件,以路由其他类型的日志条目。如需详细了解汇总接收器,请参阅整理组织级和文件夹级日志并将其路由到支持的目标位置

在本教程中,您将执行以下步骤:

  1. 创建 Cloud Logging 存储桶以存储汇总的日志。

  2. 在组织级层创建非拦截汇总接收器,以将日志路由到新的日志存储桶。

  3. 配置对新日志存储桶的读取权限。

  4. 从 Logs Explorer 页面查询和查看您的日志。

准备工作

请确保以下几点:

  • 如需获取授予主帐号角色所需的权限,请让管理员授予您项目的 Owner (roles/owner) IAM 角色。

  • 如果您使用 VPC Service Controls,则必须向服务边界添加入站流量规则。如需详细了解 VPC Service Controls 限制,请参阅汇总接收器和 VPC Service Controls 限制

创建日志存储桶

日志存储桶用于存储从其他 Google Cloud 项目、文件夹或组织路由的日志。如需了解详情,请参阅配置日志存储分区

如需在 Google Cloud 项目中创建日志存储桶,以便将日志汇总到其中,请完成以下步骤:

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. Cloud Shell 终端中,运行 gcloud logging buckets create 命令。

    在运行以下命令之前,请进行以下替换:

    • BUCKET_NAME:日志存储桶的名称。
    • LOCATION:日志存储桶的位置。
    • PROJECT_ID:要在其中创建日志存储桶的项目的标识符。

    执行 gcloud logging buckets create 命令:

     gcloud logging buckets create BUCKET_NAME \
       --location=LOCATION --project=PROJECT_ID
    
  3. 验证日志存储桶是否已创建:

    gcloud logging buckets list --project=PROJECT_ID
    
  4. 可选:设置存储桶中日志的保留期限。本示例将存储桶中存储的日志的保留期限延长至 365 天:

    gcloud logging buckets update BUCKET_NAME \
      --location=LOCATION --project=PROJECT_ID \
      --retention-days=365
    

创建汇总接收器

您可以通过创建接收器将日志路由到日志存储桶。接收器包括包含过滤器、可选的排除过滤器和目标位置。在本教程中,目标位置为新的日志存储桶。如需详细了解接收器,请参阅将日志路由到支持的目标位置

在组织级层设置接收器

如需创建汇总接收器,请完成以下步骤:

  1. 运行 gcloud logging sinks create 命令。

    在运行以下命令之前,请进行以下替换:

    • SINK_NAME:日志接收器的名称。
    • PROJECT_ID:存储日志存储桶的项目的标识符。
    • LOCATION:日志存储桶的位置。
    • BUCKET_NAME:日志存储桶的名称。
    • ORGANIZATION_ID:组织的标识符。

    执行 gcloud logging sinks create 命令:

    gcloud logging sinks create SINK_NAME \
    logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME  \
      --log-filter='logName:cloudaudit.googleapis.com' \
      --description="Audit logs from my organization" \
      --organization=ORGANIZATION_ID \
      --include-children
    

    --include-children 标志非常重要,它会允许包含来自组织中所有 Google Cloud 项目的日志。如需了解详情,请参阅整理组织级日志并将其路由到支持的目标位置

  2. 验证接收器是否已创建:

    gcloud logging sinks list --organization=ORGANIZATION_ID
    
  3. 获取服务账号的名称:

    gcloud logging sinks describe SINK_NAME --organization=ORGANIZATION_ID
    

    输出类似于以下内容:

    writerIdentity: serviceAccount:o1234567890-ORGANIZATION_ID@gcp-sa-logging.iam.gserviceaccount.com
    
  4. serviceAccount 字段的值复制到剪贴板。

授予对接收器的访问权限

创建接收器后,您必须向接收器授予写入日志存储桶的权限。您可以使用 Google Cloud 控制台或通过修改 Identity and Access Management (IAM) 政策来授予权限,如设置目标位置权限中所述。

如需授予接收器写入日志的权限,请执行以下操作:

  1. 在 Google Cloud 控制台中,进入 IAM 页面:

    前往 IAM

    如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。

  2. 选择包含您的日志存储桶的 Google Cloud 项目。

  3. 点击 授予访问权限

  4. 新的主帐号字段中,添加不带 serviceAccount: 前缀的服务帐号。

  5. 选择角色菜单中,选择 Logs Bucket Writer

  6. 点击保存

生成日志以协助接收器验证

如需验证汇总接收器是否已正确配置,请尝试以下操作:

  1. 生成应路由到您的日志存储桶的审核日志。

    • 如果您的组织中有许多 Google Cloud 项目,则您可能拥有足够的审核日志流量,无需为进行验证而创建流量。转到下一步。

    • 否则,请转到其他项目,创建一个 Compute Engine 虚拟机实例,然后删除您创建的实例。 系统会在创建、启动和删除虚拟机时写入审核日志。

  2. 按照在 Logs Explorer 页面中查看日志部分中的流程操作,查看您的审核日志。请务必选择 _AllLogs 视图。

配置对日志存储桶的读取权限

创建日志存储桶时,Cloud Logging 会自动创建一个名为 _AllLogs日志视图。此视图包含日志存储桶中存储的每个日志条目。

如需将主账号限制为只能访问特定日志条目,请创建一个日志视图,然后执行以下操作之一:

  • 为他们授予 roles/logging.viewAccessor 角色以及限制授予日志视图的 IAM 条件。

  • 在与日志视图关联的 IAM 政策中,授予主账号访问权限。如果您创建大量日志视图,建议使用此方法。

如需详细了解这两种方法,请参阅控制对日志视图的访问

在以下步骤中,您将为主帐号授予 roles/logging.viewAccessor 角色,以及一个 IAM 条件,用于限制向名为 _AllLogs 的视图授予相应权限:

  1. 在 Google Cloud 控制台中,进入 IAM 页面:

    前往 IAM

    如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。

    确保已选择用于汇总日志的 Google Cloud 项目。

  2. 点击 添加

  3. 新的主账号字段中,添加主账号。

  4. 选择角色菜单中,选择 Logs Views Accessor

  5. 向绑定添加 IAM 条件:

    1. 点击添加条件,输入标题和说明。
    2. 条件类型菜单中,滚动到资源,然后选择名称
    3. 运算符菜单中,选择结尾为
    4. 字段中,输入日志视图的全名:

      locations/LOCATION/buckets/BUCKET_NAME/views/_AllLogs
      
    5. 点击保存以保存条件。

  6. 点击 Save 以保存此绑定。

在 Logs Explorer 页面中查看日志

如需查看日志存储桶中的日志,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Logs Explorer 页面。

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 选择优化范围

  3. 优化范围面板上,选择按存储确定范围

  4. 选择您要查看其日志条目的日志视图。例如,如需查看所有日志,请选择名为 _AllLogs 的视图。

  5. 点击应用

    日志浏览器会刷新,以显示日志存储桶中的日志。

    如需了解如何使用 Logs Explorer,请参阅使用 Logs Explorer