本文档介绍了如何在 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
的参数 字段。
例如,以下过滤条件会捕获 Compute Engine stdout
日志
来自 Google Cloud 项目 myproject
的条目:
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 (
安装 Google Cloud CLI。
确定要包含在视图中的日志。您使用此 信息用于指定日志视图的过滤条件。
确定谁有权访问日志视图以及是否要 向日志视图的 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
创建包含该条件的 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_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 政策。
控制台
在创建日志存储桶的项目中,执行以下操作:
-
在 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
命令。
删除日志视图
如需删除日志视图,请执行以下操作:
请使用 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 的结果。
点击优化范围以显示优化范围面板。在这里 您可以选择要使用的日志存储桶和日志视图来查看 日志。
有关详情,请参阅 日志浏览器 文档。