访问权限控制指南

Stackdriver Logging 使用 Cloud Identity and Access Management 来控制对项目、组织、文件夹和结算帐号中的日志记录数据的访问。

概览

Cloud IAM 权限和角色决定了如何使用 Logging API日志查看器

Cloud IAM 角色是一组权限的集合。这些角色可以分配给成员。您不能直接为成员分配权限;而应为成员授予角色,从而为他们提供该角色包含的所有权限。

日志数据位于项目、组织、文件夹和结算帐号这四类资源中。每个此类资源都拥有自己的一组成员以及分配给成员的一组 Logging 角色。

要在某项资源中创建日志数据或使用来自 Stackdriver Logging 的日志数据,成员必须拥有包含相应权限的 Cloud IAM 角色。这些 Cloud IAM 角色和权限的汇总列表如下所示:

  • roles/logging.viewer(日志查看者)用于为成员提供对 Logging 所有功能的只读权限(读取私密日志的权限除外)。

  • roles/logging.privateLogViewer(私密日志查看者)用于为成员提供 roles/logging.viewer 所提供的权限,再加上读取私密日志的权限。

  • roles/logging.logWriter(日志写入者)可以授予拥有服务帐号的成员,为成员提供刚刚只够写入日志的权限。此角色不授予对日志查看器的访问权限。

  • roles/logging.configWriter(日志配置写入者)用于为成员提供创建基于日志的指标以及导出接收器的权限。要使用日志查看器,请添加 roles/logging.viewer 角色。

  • roles/logging.admin(Logging 管理员)用于为成员提供与 Logging 相关的所有权限。如需这些权限的完整列表,请参阅 API 权限

  • roles/viewer项目查看者)用于在项目级层为成员提供与 roles/logging.viewer 相同的权限。请注意,授予此角色会在项目级层将权限应用于大部分 GCP 服务,且不会局限于 Logging 的使用。

  • roles/editor项目编辑者)用于在项目级层为成员提供与 roles/logging.viewer 相同的权限,再加上写入日志条目、删除日志以及创建基于日志的指标的权限。该角色不支持您创建导出接收器,也不支持读取私密日志。请注意,授予此角色会在项目级层将权限应用于大部分 GCP 服务,且不会局限于 Logging 的使用。

  • roles/owner(项目所有者)用于为您提供对 Logging(包括私密日志)的完整访问权限。请注意,授予此角色会在项目级层将权限应用于大部分 GCP 服务,且不会局限于 Logging 的使用。

数据访问审核日志(BigQuery 数据访问审核日志除外)是仅有的“私密日志”。要读取这些日志,成员需要拥有比只读权限范围更广的某些权限。

如需详细了解 Logging 角色和权限,请参阅本页面上的权限和角色

API 权限

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

Logging 方法 所需权限 资源类型
billingAccounts.logs.* logging.logs.*(请参阅 projects.logs.* 结算帐号
billingAccounts.sinks.* logging.sinks.*(请参阅 projects.sinks.*.) 结算帐号
entries.list logging.logEntries.list
logging.privateLogEntries.list
项目、组织、
文件夹、结算帐号
entries.write logging.logEntries.create 项目、组织、
文件夹、结算帐号
folders.logs.* logging.logs.*(请参阅 projects.logs.* 文件夹
folders.sinks.* logging.sinks.*(请参阅 projects.sinks.* 文件夹
monitoredResourceDescriptors.list (无) (无)
organizations.logs.* logging.logs.*(请参阅 projects.logs.* 组织
organizations.sinks.* logging.sinks.*(请参阅 projects.sinks.* 组织
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.<b>update<b> 项目
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.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 项目

权限和角色

下表列出了用于授予 Stackdriver Logging 访问权限的 Cloud IAM 角色。每个角色都有一组特定的 Logging 权限。角色可分配给属于所列资源类型的成员。

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

角色名称 角色称谓 Logging 权限 资源类型
roles/
logging.viewer
日志查看者 logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
logging.usage.get
resourcemanager.projects.get
项目、组织、
文件夹、结算帐号
roles/
logging.privateLogViewer
私密日志查看者 roles/logging.viewer 权限,以及:
logging.privateLogEntries.list
项目、组织、
文件夹、结算帐号
roles/
logging.logWriter
日志写入者 logging.logEntries.create 项目、组织、
文件夹、结算帐号
roles/
logging.configWriter
日志配置写入者 logging.exclusions.{list, create, get, update, delete}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, create, get, update, delete}
resourcemanager.projects.get
项目、组织、
文件夹、结算帐号
roles/
logging.admin
日志记录管理员 logging.exclusions.{list, create, get, update, delete}
logging.logEntries.create
logging.logEntries.list
logging.logMetrics.{list, create, get, update, delete}
logging.logs.delete
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.privateLogEntries.list
logging.sinks.{list, create, get, update, delete}
resourcemanager.projects.get
项目、组织、
文件夹、结算帐号
roles/viewer 查看者 logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
resourcemanager.projects.get
项目
roles/editor 编辑者 roles/viewer Logging 权限,以及:
logging.logEntries.create
logging.logMetrics.{create, update, delete}
logging.logs.delete
项目
roles/owner 所有者 roles/editor Logging 权限,以及:
logging.privateLogEntries.list
logging.sinks.{create, update, delete}
项目

自定义角色

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

  • 对于仅授予 Logging API 权限的角色,请从上文 API 权限部分的权限中进行选择。

  • 对于授予使用日志查看器权限的角色,请从下文控制台权限部分的权限组中进行选择。

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

控制台权限

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

在下表中,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.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}

访问导出的日志

要创建接收器来导出日志,您必须具备 roles/logging.configWriterroles/logging.adminroles/owner 权限。

在接收器开始导出日志后,它将拥有对所有传入日志条目的完整访问权限。接收器可以导出私密日志条目。

导出日志条目后,对已导出副本的访问权限完全由以下目标位置上的 Cloud IAM 权限和角色控制:Cloud Storage、BigQuery 或 Cloud Pub/Sub。

Logging 访问权限范围

访问权限范围是为 Compute Engine 虚拟机实例指定权限的传统方法。以下访问权限范围适用于 Logging API:

访问权限范围 授予的权限
https://www.googleapis.com/auth/logging.read role/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 的完整访问权限。

最佳做法

现在,Cloud IAM 角色可用,合理的做法是为所有虚拟机实例提供“对所有已启用 Google Cloud API 的完整访问权限”范围:

https://www.googleapis.com/auth/cloud-platform

在虚拟机实例的服务帐号中授予特定的 Cloud IAM 角色可限制对特定 API 的访问权限。如需了解详情,请参阅服务帐号权限

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Logging
需要帮助?请访问我们的支持页面