本文档介绍如何使用 gcloud CLI 在 Cloud Logging 存储分区上创建和管理日志视图。通过日志视图,您可以高级、精细地控制谁有权访问日志存储分区中的日志。
如需了解 Logging 存储模型的一般信息,请参阅路由和存储概览。
日志视图简介
通过日志视图,您可以仅向用户授予对日志存储桶中存储的部分日志的访问权限。例如,设想一个您将组织的日志存储在中心项目中的场景。您可以为向日志存储桶提供日志的每个项目创建一个日志视图。然后,您可以授予每个用户对一个或多个日志视图的访问权限,从而限制用户可以查看哪些日志。
Cloud Logging 会自动为每个日志存储桶创建一个 _AllLogs
视图,并为 _Default
日志存储桶创建一个 _Default
视图:
_AllLogs
视图:您可以查看日志存储桶中的所有日志。_Default
视图:您可以在日志存储桶中查看所有非数据访问审核日志。
您无法修改 Cloud Logging 自动创建的视图;但是,您可以删除 _AllLogs
视图。
对于每个日志存储桶,您最多可为其创建 30 个日志视图。
每个日志视图都包含一个过滤条件,用于限制视图中显示的日志条目。过滤条件可以包含逻辑 AND
和 NOT
运算符,但不得包含逻辑 OR
运算符。过滤条件可以比较以下任何值:
使用
source
函数的数据源。source
函数返回组织、文件夹和 Google Cloud 项目层次结构中特定资源的日志条目。使用
log_id
函数的日志 ID。log_id
函数返回与logName
字段中的指定LOG_ID
参数匹配的日志条目。使用
resource.type=
FIELD_NAME 比较运算的有效资源类型。
例如,以下过滤条件从名为 myproject
的 Google Cloud 项目中捕获 Compute Engine stdout
日志条目:
source("projects/myproject") AND resource.type = "gce_instance" AND log_id("stdout")
如需详细了解过滤语法,请参阅比较。
准备工作
在创建或更新日志视图之前,请完成以下步骤:
如果您尚未在相应的 Google Cloud 项目中创建 Logging 存储桶,请执行此操作,为其配置自定义日志视图。
-
如需获取创建、查看、更新和删除日志视图所需的权限,请让管理员授予您项目的 Logs Configuration Writer (
roles/logging.configWriter
) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限。 安装 Google Cloud CLI。
确定要在视图中包含的日志。您可以使用此信息指定日志视图的过滤条件。
确定谁有权访问日志视图。具有
roles/logging.viewAccessor
角色的主账号可以在任何日志视图中查看日志。但是,Cloud Logging 支持 IAM 条件。通过设置条件,您可以授予主账号对特定日志视图的访问权限。如需了解详情,请参阅授予对日志视图的访问权限。
创建日志视图
如需创建日志视图,请使用 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
命令。
列出日志存储桶上的日志视图
如需列出为日志存储桶创建的日志视图,请使用 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
授予对日志视图的访问权限
对 Google Cloud 项目具有 roles/logging.viewAccessor
角色的主账号可以在任何日志视图中查看日志。但是,Cloud Logging 支持 IAM 条件。使用条件,您可以授予主账号对特定日志视图的访问权限。
IAM 条件是在 Google Cloud 项目的角色绑定中指定的。一项允许政策中,包含相同角色和同一主账号但条件表达式不同但最多不能超过 20 个角色绑定。
要将用户添加到视图以允许用户访问日志,请完成以下步骤。
gcloud
获取项目的 IAM 政策,并将其写入 JSON 格式的本地文件。在运行以下命令之前,请将 PROJECT_ID 替换为包含日志存储桶的项目的 ID:
gcloud projects get-iam-policy PROJECT_ID --format json > output.json
修改您创建的 JSON 文件,并添加 IAM 条件,以允许用户从您创建的日志存储桶中读取数据。
例如,以下示例指定一个绑定,用于向指定成员授予
"roles/logging.viewAccessor"
角色,但仅限于单个日志视图:{ "bindings": [ { "members": [ "user:username@gmail.com" ], "role": "roles/logging.viewAccessor", "condition": { "title": "Bucket reader condition example", "description": "Grants logging.viewAccessor role to user username@gmail.com for the VIEW_ID log view.", "expression": "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\"" } } ], "etag": "BwWd_6eERR4=", "version": 3 }
更新 IAM 政策:
gcloud projects set-iam-policy PROJECT_ID output.json
控制台
在您创建日志存储桶的项目中,执行以下操作:
-
在 Google Cloud 控制台的导航面板中,选择 IAM:
点击
授予访问权限。在新的主账号字段中,添加用户的电子邮件帐号。
在选择角色下拉菜单中,选择 Logs View Accessor。
此角色为用户提供所有视图的读取权限。如需限制用户对特定视图的访问权限,请根据资源名称添加条件。
点击添加 IAM 条件。
输入条件的标题和说明。
在条件类型下拉菜单中,选择资源 > 名称。
在运算符下拉菜单中,选择 是。
在值字段中,输入日志视图的 ID,包括视图的完整路径。
例如:
projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID
点击保存以添加该条件。
点击保存以设置权限。
更新日志视图
如需更新或修改日志视图,请使用 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'
查看与日志视图关联的日志
如需在日志视图中查看日志,请确保您拥有日志视图的 Logs View Accessor (roles/logging.viewAccessor
) 角色:
-
在 Google Cloud 控制台的导航面板中,选择 Logging,然后选择 Logs Explorer:
点击优化范围以显示优化范围面板。在这里,您可以选择要用于查看日志的日志存储桶和日志视图。
如需了解详情,请参阅 Logs Explorer 文档。