本文档介绍了如何在 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
视图。
日志视图过滤条件
每个日志视图都包含一个过滤条件,用于确定该视图中显示哪些日志条目。过滤条件可以包含逻辑 AND
和 NOT
运算符;但不能包含逻辑 OR
运算符。过滤条件可以比较以下任一值:
使用
source
函数。source
函数会返回组织、文件夹和 Google Cloud 项目层次结构中特定资源的日志条目。使用
log_id
函数。log_id
函数返回与指定LOG_ID
匹配的日志条目 来自logName
的参数 字段。
例如,以下过滤器会捕获名为 myproject
的 Google Cloud 项目中的 Compute Engine stdout
日志条目:
source("projects/myproject") AND resource.type = "gce_instance" AND log_id("stdout")
如需详细了解过滤语法,请参阅比较。
准备工作
在创建或更新日志视图之前,请完成以下步骤:
如果您尚未创建,请在相应的 Google Cloud 项目中创建一个 Logging 存储桶,并为其配置自定义日志视图。
-
如需获取创建和管理日志视图所需的权限,以及授予对日志视图的访问权限, 请让管理员授予您 项目的以下 IAM 角色:
-
Logs Configuration Writer (
roles/logging.configWriter
) -
如需向项目添加角色绑定,请使用 Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
如需向日志视图添加角色绑定,请执行以下操作:
Logging Admin (
roles/logging.admin
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
Logs Configuration Writer (
-
In the Google Cloud console, 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.
确定要在视图中包含的日志。您可以使用这些信息指定日志视图的过滤条件。
确定谁有权访问日志视图以及是否要 向日志视图的 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
可以采用的格式的完整列表,请参阅主账号标识符。 - 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
创建包含该条件的 JSON 或 yaml 文件。
例如,您可以创建一个名为
condition.yaml
的文件,其中包含以下内容:expression: "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\"" title: "My title" description: "My description"
可选:如需验证 JSON 或 yaml 文件的格式是否正确,请运行以下命令:
gcloud alpha iam policies lint-condition --condition-from-file=condition.yaml
更新 Google Cloud 项目的 IAM 政策,方法是 调用
gcloud projects add-iam-policy-binding
方法。在使用以下命令之前,请先进行以下替换:
- PROJECT_ID:项目的标识符。
- PRINCIPAL:您要验证的主账号的标识符
授予此角色的权限。主账号标识符通常采用以下格式:
PRINCIPAL-TYPE:ID
。例如user:my-user@example.com
。 如需查看PRINCIPAL
可以采用的格式的完整列表, 请参阅主账号标识符。
执行
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 提供程序参考文档。
如需使用 Terraform 为项目预配 IAM 关联,可以使用几种不同的资源:
google_project_iam_policy
google_project_iam_binding
google_project_iam_member
如需了解详情,请参阅适用于项目的 IAM 政策。
控制台
在创建日志存储桶的项目中,执行以下操作:
-
在 Google Cloud 控制台中,进入 IAM 页面:
如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。
点击
授予访问权限。在新的主账号字段中,添加用户的电子邮件账号。
在选择角色下拉菜单中,选择日志查看访问者。
此角色为用户提供所有视图的读取权限。如需限制用户对特定视图的访问权限,请根据资源名称添加条件。
点击添加 IAM 条件。
输入条件的标题和说明。
在条件类型下拉菜单中,依次选择资源 > 名称。
在运算符下拉菜单中,选择 是。
在值字段中,输入日志视图的 ID,包括视图的完整路径。
例如:
projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID
点击保存以添加该条件。
点击保存以设置权限。
列出项目的角色绑定
如需列出 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 角色、 以及任何附加到这些角色的条件。
列出日志存储桶中的日志视图
如需列出为日志存储桶创建的日志视图,请使用 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,即 _AllLogs
和 compute
:
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
命令。
删除日志视图
如果不再需要您创建的日志视图,可以将其删除。 不过,在删除日志视图之前, 日志视图未被其他资源(例如已保存的查询)引用。
您无法删除 _Default
日志存储桶中的 _Default
日志视图。
如需删除日志视图,请执行以下操作:
建议:查看您的 Google Cloud 项目,确保日志视图 。请考虑检查以下内容:
- 从日志浏览器或日志分析页面运行的查询 保存或共享的文件。
- 自定义信息中心。
使用
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
)
角色:
-
在 Google Cloud 控制台中,转到 Logs Explorer 页面。
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
在工具栏中,依次点击优化范围、日志视图和 选择日志视图。
如需了解详情,请参阅 Logs Explorer 文档。
后续步骤
如需了解如何控制对日志条目中特定字段的访问权限,请参阅 配置字段级访问权限。