配置日志存储桶的日志视图

本文档介绍了如何在 Google Cloud 控制台中创建和管理 日志浏览量 使用 gcloud CLI 管理 Cloud Logging 存储分区。 日志视图让你可以 谁有权访问您的日志存储分区中的日志。

如需了解 Logging 存储模型的一般信息,请参阅 路由和存储概览

日志视图简介

通过日志视图,您可以授予用户仅访问存储在 日志存储桶。例如,假设您在 贵组织的日志存储在一个中央项目中。您可以创建一个日志视图 为日志存储桶提供日志的每个项目。然后,您可以 向每个用户授予对一个或多个日志视图的访问权限,从而限制哪些日志 用户可以观看的内容

对于每个日志存储桶,您最多可为其创建 30 个日志视图。

控制对日志视图的访问权限

Cloud Logging 使用 IAM 政策来控制谁具有访问权限 来记录视图IAM 政策可以存在于资源、项目 文件夹和组织级别对于 Cloud Logging 每个日志视图的 IAM 政策。 要确定主账号是否获得了 IAM 会评估所有适用的政策,并 在资源级别执行首次评估

在以下账号中具有 roles/logging.viewAccessor 角色的主账号 Google Cloud 项目可以访问任何日志存储桶中的视图和日志 项目 ID。

如需授予主账号对特定日志视图的访问权限,请执行以下任一操作 以下:

  • 为日志视图创建 IAM 政策,然后添加 IAM 与政策的绑定,该政策授予主账号 访问日志视图。

    如果您创建大量日志视图,我们建议您使用此方法。

  • 向主账号授予以下 IAM 角色: 针对包含日志视图的项目的 roles/logging.viewAccessor 权限, 但需要在 IAM 条件 将授权范围限制为特定日志视图。如果您省略 条件,您就可以向主账号授予对所有日志视图的访问权限。 您最多只能创建 20 个 政策文件中的角色绑定 角色和主账号相同,但条件表达式不同。

有关详情,请参阅 授予对日志视图的访问权限

自动创建的日志视图

Cloud Logging 会自动为每个 _AllLogs 日志存储桶,以及 _Default 日志存储桶的 _Default 视图:

  • _AllLogs 视图:您可以查看日志存储桶中的所有日志。
  • _Default 视图:您可以在 日志存储桶。

您无法修改 Cloud Logging 自动创建的视图; 不过,您可以删除 _AllLogs 视图。

日志视图过滤条件

每个日志视图都包含一个过滤条件,用于确定哪些日志条目 视图可见过滤条件可以包含逻辑 ANDNOT 运算符; 但不能包含逻辑 OR 运算符。 过滤条件可以比较以下任何值:

例如,以下过滤条件会捕获 Compute Engine stdout 日志 来自 Google Cloud 项目 myproject 的条目:

source("projects/myproject") AND resource.type = "gce_instance" AND log_id("stdout")

如需详细了解过滤语法,请参阅 比较

准备工作

在创建或更新日志视图之前,请完成以下步骤:

  1. 在相应的 Google Cloud 项目中,如果您尚未执行此操作,请 创建 Logging 存储桶 要为其配置自定义日志视图的项目。

  2. 如需获取创建和管理日志视图所需的权限,以及授予对日志视图的访问权限, 请让管理员向您授予 项目的以下 IAM 角色:

    如需详细了解如何授予角色,请参阅管理访问权限

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

  3. 安装 Google Cloud CLI

  4. 确定要包含在视图中的日志。您使用此 信息用于指定日志视图的过滤条件

  5. 确定谁有权访问日志视图以及是否要 向日志视图的 IAM 政策添加绑定,或 Google Cloud 项目。如需更多信息 请参阅控制对日志视图的访问权限

创建日志视图

如需创建日志视图,请执行以下操作: 请使用 gcloud logging views update 命令。 对于每个日志存储桶,您最多可为其创建 30 个日志视图。

在使用下面的命令数据之前,请先进行以下替换:

  • VIEW_ID:日志视图的标识符。
  • BUCKET_NAME:日志存储桶的名称。
  • LOCATION:日志存储桶的位置。
  • FILTER:用于定义日志视图的过滤条件。如果为空,日志视图包含所有日志。例如,如需按 Compute Engine 虚拟机实例日志进行过滤,请输入 "resource.type=gce_instance".
  • DESCRIPTION:日志视图的说明。例如,您可以输入以下内容作为 广告内容描述 "Compute logs"

执行 gcloud logging views create 命令:

Linux、macOS 或 Cloud Shell

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (PowerShell)

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (cmd.exe)

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

此命令不提供响应。要确认更改,您可以运行 gcloud logging views list 命令。

接下来,向主账号授予对日志视图的访问权限。

授予对日志视图的访问权限

如需将主账号限制为只能访问用户定义的日志存储桶中的特定日志视图,请执行以下操作: 您可以采用以下两种方法:

  • 您可以使用日志视图的 IAM 政策文件。

  • 您可以使用 存储日志存储桶的 Google Cloud 项目,以及 IAM 条件。

创建大量 我们建议您使用 日志视图的 IAM 政策文件。

日志视图:添加角色绑定

本部分介绍如何使用 IAM 适用于日志视图的政策文件,以控制哪些人有权访问这些日志条目 该日志视图中显示的内容使用此方法时,您要向 日志视图的政策文件,绑定会向指定的主账号授予访问权限 日志视图

本部分还介绍了如何列出 日志视图的 IAM 政策文件。

向日志视图添加角色绑定

如需更新日志视图的 IAM 政策文件,请执行以下操作: 请完成以下步骤。

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • VIEW_ID:日志视图的标识符。
  • PRINCIPAL:您要验证的主账号的标识符 授予此角色的权限。主账号标识符通常采用以下格式: PRINCIPAL-TYPE:ID. 例如 user:my-user@example.com。 如需查看 PRINCIPAL_ID 可以采用的格式的完整列表, 请参阅主账号标识符
  • BUCKET_NAME:日志存储桶的名称。
  • LOCATION:日志存储桶的位置。

执行 gcloud logging views add-iam-policy-binding 命令:

Linux、macOS 或 Cloud Shell

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

Windows (PowerShell)

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

Windows (cmd.exe)

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

下面展示了添加单个绑定时的响应:

Updated IAM policy for logging view [projects/PROJECT_ID/locations/global/buckets/BUCKET_NAME/views/VIEW_ID].
bindings:
- members:
  - PRINCIPAL
  role: roles/logging.viewAccessor
etag: BwYXfSd9-Gw=
version: 1

Terraform

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。 如需了解详情,请参阅 Terraform 提供程序参考文档

如需使用 Terraform 为日志视图预配 IAM 关联,请执行以下操作: 有几种不同的资源可供使用:

  • google_logging_log_view_iam_policy
  • google_logging_log_view_iam_binding
  • google_logging_log_view_iam_member

如需了解详情,请参阅 Cloud Logging LogView 的 IAM 政策

控制台

不受支持。如需向日志视图添加绑定,请使用 Google Cloud CLI。

列出日志视图上的角色绑定

要列出某个日志视图的 IAM 绑定, 请完成以下步骤。

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • VIEW_ID:日志视图的标识符。
  • BUCKET_NAME:日志存储桶的名称。
  • LOCATION:日志存储桶的位置。

执行 gcloud logging views get-iam-policy 命令:

Linux、macOS 或 Cloud Shell

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

Windows (PowerShell)

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

Windows (cmd.exe)

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

如果日志视图不包含任何绑定,则响应将仅包含一个 etag 字段。下图展示了当日志视图包含单个绑定时的响应:

bindings:
- members:
  - PRINCIPAL
  role: roles/logging.viewAccessor
etag: BwYXfSd9-Gw=
version: 1

Terraform

如需使用 Terraform 列出日志视图的 IAM 关联,请执行以下操作: 使用数据源 google_logging_log_view_iam_policy.

控制台

不受支持。如需列出某个日志视图的绑定,请使用 Google Cloud CLI。

Google Cloud 项目:添加角色绑定

本部分介绍如何向 Google Cloud 项目添加角色绑定, 以及如何列出附加到项目的绑定。使用此方法时, 可限制主账号访问存储在 日志视图,则必须向授权添加 IAM 条件。

为项目添加角色绑定

要将角色绑定添加到 Google Cloud 项目中,请完成以下步骤。

gcloud

  1. 创建包含该条件的 JSON 或 yaml 文件。

    例如,您可以创建一个名为 condition.yaml 的文件,并在该文件中包含 以下内容:

    expression: "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\""
    title: "My title"
    description: "My description"
    
  2. 可选:要验证 JSON 或 yaml 文件格式是否正确, 运行以下命令:

    gcloud alpha iam policies lint-condition --condition-from-file=condition.yaml
    
  3. 更新 Google Cloud 项目的 IAM 政策,方法是 调用 gcloud projects add-iam-policy-binding 方法。

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

    • PROJECT_ID:项目的标识符。
    • PRINCIPAL:您要验证的主账号的标识符 授予此角色的权限。主账号标识符通常采用以下格式: PRINCIPAL-TYPE:ID. 例如 user:my-user@example.com。 如需查看 PRINCIPAL_ID 可以采用的格式的完整列表, 请参阅主账号标识符

    执行 gcloud projects add-iam-policy-binding 命令:

    gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --condition-from-file=condition.yaml
    

    对上一个命令的响应包括所有角色绑定。

    - condition:
        description: My description
        expression: resource.name == "projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID"
        title: My title
      members:
      - PRINCIPAL
      role: roles/logging.viewAccessor
    

Terraform

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。 如需了解详情,请参阅 Terraform 提供程序参考文档

如需使用以下内容为项目预配 IAM 关联: Terraform,有几种不同的资源可供使用:

  • google_project_iam_policy
  • google_project_iam_binding
  • google_project_iam_member

如需了解详情,请参阅 项目的 IAM 政策

控制台

在创建日志存储桶的项目中,执行以下操作:

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

    前往 IAM

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

  2. 点击 授予访问权限

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

  4. 选择角色下拉菜单中,选择日志查看访问者

    此角色为用户提供所有视图的读取权限。如需限制用户对特定视图的访问权限,请根据资源名称添加条件。

    1. 点击添加 IAM 条件

    2. 输入条件的标题说明

    3. 条件类型下拉菜单中,选择 资源 >名称

    4. 运算符下拉菜单中,选择

    5. 字段中,输入日志视图的 ID,包括视图的完整路径。

      例如:

      projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID
    6. 点击保存以添加该条件。

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

列出项目的角色绑定

如需列出 Google Cloud 项目的角色绑定,请完成以下步骤。

gcloud

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

  • PROJECT_ID:项目的标识符。

执行 gcloud projects get-iam-policy 命令:

gcloud projects get-iam-policy PROJECT_ID

对上一个命令的响应包括所有角色绑定。

- condition:
    description: My description
    expression: resource.name == "projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID"
    title: My title
  members:
  - PRINCIPAL
  role: roles/logging.viewAccessor

Terraform

如需使用 Terraform 列出项目的 IAM 关联,请执行以下操作: 使用数据源 google_project_iam_policy.

控制台

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

前往 IAM

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

IAM 页面列出了所有主账号、它们的 IAM 角色、 以及任何附加到这些角色的条件。

列出日志存储桶中的日志视图

如需列出为日志存储桶创建的日志视图,请执行以下操作: 请使用 gcloud logging views list 命令。

在使用下面的命令数据之前,请先进行以下替换:

  • BUCKET_NAME:日志存储桶的名称。
  • LOCATION:日志存储桶的位置。

执行 gcloud logging views list 命令:

Linux、macOS 或 Cloud Shell

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Windows (PowerShell)

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Windows (cmd.exe)

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

响应数据是日志视图列表。对于每个日志视图,过滤条件都会随 创建日期和上次更新时间日期。当创建和更新日期均为空时,日志视图为 在创建 Google Cloud 项目时创建的。以下示例输出显示 在查询的日志存储桶中,有两个视图 ID:_AllLogscompute

VIEW_ID: _AllLogs
FILTER:
CREATE_TIME:
UPDATE_TIME:

VIEW_ID: compute
FILTER: resource.type="gce_instance"
CREATE_TIME: 2024-02-20T17:41:17.405162921Z
UPDATE_TIME: 2024-02-20T17:41:17.405162921Z

更新日志视图

如需更新或修改日志视图,请按以下步骤操作: 请使用 gcloud logging views update 命令。 如果您不知道数据视图 ID,请参阅列出日志数据视图

在使用下面的命令数据之前,请先进行以下替换:

  • VIEW_ID:日志视图的标识符。
  • BUCKET_NAME:日志存储桶的名称。
  • LOCATION:日志存储桶的位置。
  • FILTER:用于定义日志视图的过滤条件。如果为空,日志视图包含所有日志。例如,如需按 Compute Engine 虚拟机实例日志进行过滤,请输入 "resource.type=gce_instance".
  • DESCRIPTION:日志视图的说明。例如,您可以输入以下内容作为 广告内容描述 "New description for the log view"

执行 gcloud logging views update 命令:

Linux、macOS 或 Cloud Shell

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (PowerShell)

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (cmd.exe)

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

此命令不提供响应。要确认更改,您可以运行 gcloud logging views describe 命令。

删除日志视图

如需删除日志视图,请执行以下操作: 请使用 gcloud logging views delete 命令。 如果您不知道数据视图 ID,请参阅列出日志数据视图

在使用下面的命令数据之前,请先进行以下替换:

  • VIEW_ID:日志视图的标识符。
  • BUCKET_NAME:日志存储桶的名称。
  • LOCATION:日志存储桶的位置。

执行 gcloud logging views delete 命令:

Linux、macOS 或 Cloud Shell

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (PowerShell)

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (cmd.exe)

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

响应会确认删除。例如,下面显示了删除 名为 tester 的日志视图:

Deleted [tester].

描述日志视图

如需检索有关日志视图的详细信息,请执行以下操作: 请使用 gcloud logging views describe 命令。 如果您不知道数据视图 ID,请参阅列出日志数据视图

在使用下面的命令数据之前,请先进行以下替换:

  • VIEW_ID:日志视图的标识符。
  • BUCKET_NAME:日志存储桶的名称。
  • LOCATION:日志存储桶的位置。

执行 gcloud logging views describe 命令:

Linux、macOS 或 Cloud Shell

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (PowerShell)

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (cmd.exe)

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

响应始终包含日志视图的说明和完全限定名称。 当过滤条件字段不为空时,此列也包含此过滤条件。以下是一个示例 回答:

createTime: '2024-02-20T17:41:17.405162921Z'
filter: resource.type="gce_instance"
name: projects/my-project/locations/global/buckets/my-bucket/views/compute
updateTime: '2024-02-20T17:41:17.405162921Z'

查看与日志视图关联的日志

如需在日志视图中查看日志,请确保您拥有 日志视图访问器 (roles/logging.viewAccessor) 角色:

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

    前往 Logs Explorer

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

  2. 点击优化范围以显示优化范围面板。在这里 您可以选择要使用的日志存储桶和日志视图来查看 日志。

“优化范围”面板

有关详情,请参阅 日志浏览器 文档。

后续步骤

配置字段级访问权限