汇总和存储组织的日志

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

您可以将汇总接收器配置为拦截或非拦截,具体取决于您是想控制哪些日志条目可以在子资源中查询,还是想控制哪些日志条目可以通过子资源中的接收器路由。在本教程中,您将创建一个汇总接收器,用于将组织的审核日志路由到Google Cloud 项目,然后将汇总的审核日志路由到日志存储桶。 如需了解详情,请参阅汇总接收器概览

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

  1. 首先,在您要存储汇总日志条目的Google Cloud 项目中创建日志存储桶和日志接收器。

  2. 接下来,您需要在组织级层创建一个非拦截汇总接收器,以将日志条目路由到包含日志存储桶的 Google Cloud 项目。

  3. 然后,您需要配置对新日志存储桶中日志视图的读取权限。

  4. 最后,您可以从“Logs Explorer”页面中查询和查看日志条目。

准备工作

确保符合以下条件:

  • 如需获得配置汇总接收器所需的权限,请让管理员向您授予组织的以下 IAM 角色:

    • 在项目中创建日志存储桶和接收器: Logs Configuration Writer (roles/logging.configWriter) - 您的项目
    • 创建汇总接收器: Logs Configuration Writer (roles/logging.configWriter) - 您的组织
    • 向主账号授予角色: Owner (roles/owner) - 您的项目

    如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    您也可以通过自定义角色或其他预定义角色来获取所需的权限。

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

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

创建日志存储桶

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

如需在您希望将日志条目聚合到的 Google Cloud 项目中创建日志存储桶,请完成以下步骤:

  1. 打开 shell。

    例如,如需使用 Cloud Shell,请执行以下操作:

    1. 前往 Google Cloud 控制台:

      前往 Google Cloud 控制台

    2. 在工具栏中,点击 激活 Cloud Shell
  2. 在 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. 日志存储桶具有可配置的保留期限。如果您想设置日志存储桶中日志条目的保留期限,请使用 gcloud logging buckets update 命令。例如,以下命令会将日志存储桶中存储的日志条目的保留期限延长至 365 天:

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

    如需详细了解选项,请参阅 gcloud logging buckets update

创建项目级日志接收器

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

如需创建一个接收器,用于将日志条目路由到您刚刚创建的日志存储桶,请运行 gcloud logging sinks create 命令。

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

  • PROJECT_LEVEL_SINK_NAME:项目级日志接收的名称。
  • SINK_DESTINATION:日志条目被路由到的日志存储桶。日志存储桶的目标路径格式如下:

    logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
    
  • PROJECT_ID:要在其中创建日志接收器的项目的标识符。将此选项设置为您创建日志存储桶的同一项目。

  • 包括以下选项:

    • --log-filter:使用此选项可设置与要包含在接收器中的日志条目匹配的过滤条件。在本教程中,过滤条件设置为选择所有审核日志条目。如果您不设置过滤条件,则来自 Google Cloud 项目的所有日志条目都会路由到目标位置。
    • --description:使用此选项可描述接收器的用途或应用场景。

执行 gcloud logging sinks create 命令:

gcloud logging sinks create PROJECT_LEVEL_SINK_NAME SINK_DESTINATION
--project=PROJECT_ID
--log-filter='logName:cloudaudit.googleapis.com' \
--description="Audit logs from my organization" \

创建汇总接收器

汇总接收器会合并组织或文件夹包含的资源中的日志条目,并将其路由到目标位置。

在本教程中,您将创建一个非拦截汇总接收器。这意味着,由汇总接收器路由的每个日志条目也会由日志条目来源资源中的接收器路由。例如,源自某个项目的审核日志会由汇总接收器和该项目中的接收器进行路由。因此,您可以存储多个日志条目副本。

您可以创建拦截接收器。如需了解详情,请参阅汇总接收器概览

在组织级层设置接收器

如需创建将日志条目路由到项目的非拦截汇总接收器,请完成以下步骤:

  1. 运行 gcloud logging sinks create 命令。

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

    • SINK_NAME:日志接收器的名称。一旦创建了接收器,便无法更改其名称。
    • PROJECT_ID:存储日志存储桶的项目的标识符。
    • ORGANIZATION_ID:组织的标识符。

    执行 gcloud logging sinks create 命令:

    gcloud logging sinks create SINK_NAME \
    logging.googleapis.com/projects/PROJECT_ID  \
      --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. 点击 授予访问权限,然后将服务账号添加为新主账号。请勿添加 serviceAccount: 前缀。

  4. 选择角色菜单中,选择 Logs Writer

  5. 点击保存

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

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

  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 和管理的结果。

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

  3. 点击 Add

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

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

    如果您未为此角色添加条件,则主账号将有权访问 Google Cloud 项目中所有用户定义的日志存储桶的所有日志视图。

  6. 在绑定中添加 IAM 条件:

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

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

  7. 点击保存以保存绑定。

在 Logs Explorer 中查看日志条目

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

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

    前往 Logs Explorer

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

  2. 选择优化范围

  3. 优化范围面板上,选择日志视图

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

  5. 点击应用

    Logs Explorer会刷新,以显示日志存储桶中的日志条目。如需了解如何使用Logs Explorer,请参阅使用Logs Explorer