访问权限控制指南

本页面介绍如何使用 Identity and Access Management (IAM) 角色和权限来控制对 Google Cloud 资源中的 Cloud Logging 数据的访问权限。

概览

IAM 权限角色确定您能否在 Logging APILogs Explorergcloud 命令行工具中访问日志数据。

一个角色对应一组权限。您不能直接向成员授予权限,而是需要向成员授予角色。为成员授予一个角色就是授予该角色包含的所有权限。您可以向同一个成员授予多个角色。

要在 Google Cloud 资源(例如 Google Cloud 项目、文件夹、存储桶或组织)中使用 Logging,您必须具有包含适当权限的 IAM 角色。

预定义角色

IAM 提供预定义角色,这些角色可提供对特定 Google Cloud 资源的精细访问权限,同时阻止对其他资源的不必要的访问。Google Cloud 创建和维护这些角色,并根据需要自动更新其权限,例如 Logging 添加新功能时。

下表列出了 Logging 角色、角色名称、角色说明、包含的权限以及可设置这些角色的最低级层的资源类型。您可以授予此资源类型的特定角色,或者在大多数情况下,可以授予此资源类型在 Google Cloud 层次结构中的任何上级类型的特定角色。

如需获取角色中包含的各个权限的列表,请参阅获取角色元数据

角色 名称 说明 权限 最低资源要求
roles/logging.admin Logging Admin 提供使用 Cloud Logging 的所有功能所需的全部权限。
  • logging.buckets.copyLogEntries
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.fields.*
  • logging.locations.*
  • logging.logEntries.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.*
  • logging.notificationRules.*
  • logging.operations.*
  • logging.privateLogEntries.*
  • logging.queries.*
  • logging.sinks.*
  • logging.usage.*
  • logging.views.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
项目
roles/logging.bucketWriter Logs Bucket Writer 能够将日志写入日志存储分区。
  • logging.buckets.write
存储分区
roles/logging.configWriter Logs Configuration Writer 提供以下内容的读写权限:基于日志的指标配置和用于导出日志的接收器配置。
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.locations.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.list
  • logging.operations.*
  • logging.sinks.*
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list
项目
roles/logging.fieldAccessor Log Field Accessor 能够读取日志存储桶中的受限字段。
  • logging.fields.*
存储分区
roles/logging.logWriter Logs Writer 提供写入日志条目的权限。
  • logging.logEntries.create
项目
roles/logging.privateLogViewer Private Logs Viewer 提供 Logs Viewer 角色的权限,还提供对私密日志中日志条目的只读权限。
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.list
  • logging.privateLogEntries.*
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.*
  • logging.views.access
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get
项目
roles/logging.viewAccessor Logs View Accessor 能够在视图中读取日志。
  • logging.logEntries.download
  • logging.views.access
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
项目
roles/logging.viewer Logs Viewer 提供查看日志的权限。
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.list
  • logging.operations.get
  • logging.operations.list
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.*
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get
项目

其他注意事项

在确定适用于资源成员的使用场景的权限和角色时,请考虑以下注意事项:

  • roles/logging.viewer (Logs Viewer) 可为您提供对 Logging 所有功能的只读权限,但 _Required_Default 存储桶中的 Access Transparency 日志和数据访问审核日志除外。

  • roles/logging.privateLogViewer (Private Logs Viewer) 包括 roles/logging.viewer,并且能够读取 _Required_Default 存储桶中的 Access Transparency 日志和数据访问审核日志。

    请注意,如果这些私密日志存储在用户定义的存储桶中,则有权读取这些存储桶中的日志的任何用户都可以读取该私密日志。如需详细了解日志存储桶,请参阅路由和存储概览

  • roles/logging.logWriter (Logs Writer) 可向服务帐号授予,为应用提供写入日志所需的最低权限。此角色不授予查看权限。

  • roles/logging.bucketWriter (Logs Buckets Writer) 可向服务帐号授予,为 Cloud Logging 提供将日志写入日志存储桶所需的最低权限。要将此角色限制为特定存储分区,请使用 IAM 条件;如需查看示例,请参阅将日志从一个项目路由到其他项目中的另一个存储分区

  • roles/logging.configWriter (Logs Configuration Writer) 可授予创建基于日志的指标、排除项、存储桶和视图的权限,以及使用接收器的权限。如需使用日志浏览器(控制台)执行这些操作,请添加 roles/logging.viewer

  • roles/logging.admin (Logging Admin) 可授予与 Logging 相关的所有权限。

  • roles/logging.viewAccessor (Logs View Accessor) 可授予下载日志以及读取日志视图中的日志、资源键和值的权限。要将此角色限制为特定存储桶中的视图,请使用 IAM 条件;如需查看示例,请参阅从存储桶读取日志

  • roles/logging.fieldAccessor (Logs Field Accessor) 让您能够读取给定日志存储桶的部分 LogEntry 字段的日志、资源键和值。如需了解详情,请参阅字段级访问权限控制

  • roles/viewer (Project Viewer) 与 roles/logging.viewer 相同。该角色可为您提供对 Logging 所有功能的只读权限,但 _Required_Default 存储桶中的 Access Transparency 日志和数据访问审核日志除外。

  • roles/editor (Project Editor) 包括 roles/logging.viewer 的权限,外加写入日志条目、删除日志以及创建基于日志的指标的权限。该角色不允许您创建接收器,也不允许读取 _Required_Default 存储桶中的 Access Transparency 日志或数据访问审核日志。

  • roles/owner (Project Owner) 可提供对 Logging 的完整访问权限,包括读取 Access Transparency 日志和数据访问审核日志。

正在授予角色

如需了解如何向成员授予角色,请参阅授予、更改和撤消访问权限

您可以为同一位用户授予多个角色。如需获取角色中包含的权限的列表,请参阅获取角色元数据

如果您尝试访问某个 Google Cloud 资源但缺少必要的权限,请与列为相应资源的 Owner 的成员联系。

自定义角色

要创建具备 Logging 权限的自定义角色,请执行以下操作:

如需详细了解自定义角色,请参阅了解 IAM 自定义角色

API 权限

Logging API 方法需要特定的 IAM 权限。下表列出了多种 API 方法所需的权限。

如果您对 Google Cloud 组织、结算帐号和文件夹中保存的日志感兴趣,请注意这些资源都有专属的 logssinks API 方法。下表中并未重复显示所有方法,而是单独显示了 projects 相关方法。

Logging 方法 所需权限 资源类型
billingAccounts.logs.* logging.logs.*(请参阅 projects.logs.* 结算帐号
billingAccounts.sinks.* logging.sinks.*(请参阅 projects.sinks.*。) 结算帐号
billingAccounts.locations.buckets.* logging.buckets.*(请参阅 projects.locations.buckets.*。) 结算帐号
entries.list logging.logEntries.list
logging.privateLogEntries.list
项目、组织、
文件夹、结算帐号
entries.tail logging.logEntries.list
logging.privateLogEntries.list
项目、组织、
文件夹、结算帐号
entries.write logging.logEntries.create 项目、组织、
文件夹、结算帐号
folders.logs.* logging.logs.*(请参阅 projects.logs.* 文件夹
folders.sinks.* logging.sinks.*(请参阅 projects.sinks.* 文件夹
folders.locations.buckets.* logging.buckets.*(请参阅 projects.locations.buckets.* 文件夹
monitoredResourceDescriptors.list (无) (无)
organizations.logs.* logging.logs.*(请参阅 projects.logs.* 组织
organizations.sinks.* logging.sinks.*(请参阅 projects.sinks.* 组织
organizations.locations.buckets.* logging.buckets.*(请参阅 projects.locations.buckets.* 组织
projects.exclusions.create logging.exclusions.create 项目
projects.exclusions.delete logging.exclusions.delete 项目
projects.exclusions.get logging.exclusions.get 项目
projects.exclusions.list logging.exclusions.list 项目
projects.exclusions.patch logging.exclusions.update 项目
projects.logs.list logging.logs.list 项目
projects.logs.delete logging.logs.delete 项目
projects.sinks.list logging.sinks.list 项目
projects.sinks.get logging.sinks.get 项目
projects.sinks.create logging.sinks.create 项目
projects.sinks.update logging.sinks.update 项目
projects.sinks.delete logging.sinks.delete 项目
projects.locations.buckets.list logging.buckets.list 项目
projects.locations.buckets.get logging.buckets.get 项目
projects.locations.buckets.patch logging.buckets.update 项目
projects.locations.buckets.create logging.buckets.create 项目
projects.locations.buckets.delete logging.buckets.delete 项目
projects.locations.buckets.undelete logging.buckets.undelete 项目
projects.metrics.list logging.logMetrics.list 项目
projects.metrics.get logging.logMetrics.get 项目
projects.metrics.create logging.logMetrics.create 项目
projects.metrics.update logging.logMetrics.update 项目
projects.metrics.delete logging.logMetrics.delete 项目

Cloud Console 权限

下表列出了使用日志浏览器所需的权限。

在下表中,a.b.{x,y} 表示 a.b.xa.b.y

控制台活动 所需权限
最小只读权限 logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
添加查看数据访问审核日志的权限 添加 logging.privateLogEntries.list
添加查看 Access Transparency 日志的权限 添加logging.privateLogEntries.list
添加查看基于日志的指标的权限 添加 logging.logMetrics.{list, get}
添加查看接收器的权限 添加 logging.sinks.{list, get}
添加查看日志使用情况的权限 添加 logging.usage.get
添加排除日志的权限 添加 logging.exclusions.{list, create, get, update, delete}
添加使用接收器的权限 添加 logging.sinks.{list, create, get, update, delete}
添加创建基于日志的指标的权限 添加 logging.logMetrics.{list, create, get, update, delete}
添加保存查询的权限 添加 logging.queries.{list, create, get, update, delete}
添加共享查询的权限 添加logging.queries.share
添加使用最近查询的权限 添加 logging.queries.{create, list}

命令行权限

gcloud logging 命令由 IAM 权限控制。

如需使用任何 gcloud logging 命令,您必须拥有 serviceusage.services.use 权限。

您还必须具有与日志的资源和您的使用场景相对应的 IAM 角色。如需了解详情,请参阅命令行界面权限

日志路由权限

如需了解如何在创建和管理接收器以路由日志时设置访问权限控制,请参阅配置接收器:设置目标位置权限

请注意,管理排除项过滤条件与配置接收器相集成。与管理接收器相关的所有权限(包括设置排除项过滤条件)都包含在 logging.sinks.* 权限中。创建包含管理排除项过滤器的权限的自定义角色时,请向角色添加 logging.sinks.* 权限,而不是 logging.exclusions.* 权限。

日志条目被路由到受支持的目标位置后,对日志副本的访问权限完全由目标的 IAM 权限和角色控制:Cloud Storage、BigQuery 或 Pub/Sub。

基于日志的指标权限

以下简要介绍了 Cloud 项目成员访问基于日志的指标所需的常见角色和权限:

  • Logs Configuration Writer (roles/logging.configWriter):用于列出、创建、获取、更新和删除基于日志的指标。

  • Logs Viewer (roles/logging.viewer):用于查看现有指标。您还可以为自定义角色添加 logging.logMetrics.getlogging.logMetrics.list 权限。

  • Monitoring Viewer (roles/monitoring.viewer) 允许您读取 TimeSeries 数据。您还可以为自定义角色添加 monitoring.timeSeries.list 权限。

  • Logging Admin (roles/logging.admin)、Project Editor (roles/editor) 和 Project Owner (roles/owner)可让您创建基于日志的指标 (logging.logMetrics.create)。

Logging 访问权限范围

访问权限范围是为 Compute Engine 虚拟机实例上的服务帐号指定权限的旧版方法。

以下访问权限范围适用于 Logging API:

访问权限范围 授予的权限
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin 对 Logging API 的完整访问权限。
https://www.googleapis.com/auth/cloud-platform 对 Logging API 和其他所有已启用的 Google Cloud API 的完整访问权限。

如需了解如何使用此旧版方法设置服务帐号的访问权限级别,请参阅服务帐号权限