汇总和存储组织的日志

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

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

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

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

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

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

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

准备工作

请确保以下几点:

  • 对于您要从中路由日志的 Google Cloud 组织或文件夹,您拥有以下 IAM 角色之一。

    • Owner (roles/owner)
    • Logging Admin (roles/logging.admin)
    • Logs Configuration Writer (roles/logging.configWriter)

    这些角色中包含的权限可让您创建、删除或修改接收器。如需了解如何设置 IAM 角色,请参阅 Logging 访问权限控制指南

  • 如果您使用 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 all-audit-logs-bucket \
       --location=global \
       --project=logs-test-project
    
  3. 验证日志存储桶是否已创建:

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

    gcloud logging buckets update all-audit-logs-bucket --location=global --project=logs-test-project --retention-days=365
    

创建接收器

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

在组织级层设置接收器

要创建接收器,请完成以下步骤。

  1. 运行以下命令,并将变量替换为适当的值:

    gcloud logging sinks create all-audit-logs-sink \
    logging.googleapis.com/projects/logs-test-project/locations/global/buckets/all-audit-logs-bucket \
      --log-filter='logName:cloudaudit.googleapis.com' \
      --description="All audit logs from my org log sink" \
      --organization=12345 \
      --include-children
    

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

  2. 验证接收器已经创建:

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

    gcloud logging sinks describe all-audit-logs-sink --organization=12345
    

    输出类似于以下内容:

    writerIdentity: serviceAccount:o1234567890-12345@gcp-sa-logging.iam.gserviceaccount.com
    
  4. 复制 writerIdentityserviceAccount: 开始的整个字符串。

授予对接收器的访问权限

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

在本教程中,我们将按照以下步骤通过 Google Cloud 控制台设置权限。

  1. 在 Google Cloud 控制台的导航面板中,选择 IAM

    前往 IAM

  2. 确保您已选择目标 Google Cloud 项目,其中包含用于汇总日志的组织级存储桶。

  3. 点击 授予访问权限

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

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

  6. 点击保存

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

如果您的接收器正在使用审核日志,则验证接收器是否正确路由日志的一种方法是在其他 Google Cloud 项目中启动虚拟机,然后关闭该虚拟机以查看此事件是否出现在日志中。

如果您的组织中已经有许多 Google Cloud 项目,则您可能有足够的审核日志流量,因此不需要执行此步骤。

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

现在,接收器将日志从整个组织路由到日志存储桶,可以在所有这些日志中搜索。您可以使用日志视图通过创建日志视图并为主帐号授予 roles/logging.viewAccessor IAM 角色来限制谁有权访问您的日志存储分区中的日志。

在本教程中,我们将按照以下步骤通过 Google Cloud 控制台设置权限。

  1. 在 Google Cloud 控制台的导航面板中,选择 IAM

    前往 IAM

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

  2. 点击 添加

  3. 新主账号字段中,添加您的电子邮件账号。

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

    此角色为主帐号提供对 Google Cloud 项目中日志存储分区的日志视图的读取权限。如需限制用户的访问权限,请创建日志视图或从现有视图中进行选择,并添加一个条件,使用户只能从您的新日志存储桶读取数据:

    1. 点击添加条件

    2. 输入条件的标题说明

    3. 条件类型菜单中,选择资源,然后选择名称

    4. 运算符菜单中,选择结尾为

    5. 字段中,输入日志视图的名称。如需了解日志视图,请参阅在日志存储桶上配置日志视图

      日志视图的名称采用以下格式:

      locations/global/buckets/all-audit-logs-bucket/views/view_id
      
    6. 点击保存以添加该条件。

  5. 点击保存以设置权限。

在“日志浏览器”页面中搜索日志

在上一部分中设置权限后,请转到 Google Cloud 控制台并完成以下步骤:

  1. 在 Google Cloud 控制台的导航面板中,选择 Logging,然后选择 Logs Explorer

    前往 Logs Explorer

  2. 选择优化范围

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

  4. 选择 all-audit-logs-bucket

  5. 点击应用

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

    如需了解如何使用日志浏览器,请参阅使用日志浏览器