访问权限控制指南

本页面介绍了 Cloud Logging 如何使用 Identity and Access Management (IAM) 来控制 Google Cloud 资源中的日志记录数据的访问权限。

概览

IAM 权限和角色决定了如何使用 Logging API、Google Cloud Console 日志查看器gcloud 命令行工具

日志保存在 Google Cloud 项目以及组织、文件夹和结算帐号内的日志存储分区中。这些 Google Cloud 资源中的每一项都可以拥有自己的一组成员,这些成员都有各自的 Cloud Logging 角色和权限集。

如需将 Logging 与 Google Cloud 项目中的日志记录数据一起使用,您必须是其成员且拥有授权您使用 Logging 的 IAM 角色。以下 IAM 角色适用于 Logging:

  • roles/logging.viewer (Logs Viewer) 为您提供对 Logging 全部功能的只读权限,但 Access Transparency 日志和数据访问审核日志除外。

  • roles/logging.privateLogViewer (Private Logs Viewer) 提供 roles/logging.viewer 所拥有的权限,再加上读取 Access Transparency 日志和数据访问审核日志的权限。

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

  • roles/logging.configWriter (Logs Configuration Writer) 授予您创建基于日志的指标和排除对象,以及导出接收器的权限。若要使用 Logs Viewer(控制台)执行这些操作,请添加 roles/logging.viewer

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

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

  • roles/editor (Project Editor) 提供与 roles/logging.viewer 相同的权限,再加上写入日志条目、删除日志以及创建基于日志的指标的权限。该角色不允许您创建导出接收器,也不允许读取 Access Transparency 日志或数据访问审核日志。

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

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

授予角色

若要向成员授予角色,您必须拥有 roles/owner (Project Owner) 所包含的权限集。如需了解如何授予角色,请参阅授予、更改和撤消访问权限

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

权限和角色

下表列出了用于授予 Cloud Logging 访问权限的 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.buckets.{list, get}
logging.usage.get
resourcemanager.projects.get
项目、组织、
文件夹、结算帐号
roles/
logging.privateLogViewer
Private Logs Viewer roles/logging.viewer 权限,再加上:
logging.privateLogEntries.list
项目、组织、
文件夹、结算帐号
roles/
logging.logWriter
Logs Writer logging.logEntries.create 项目、组织、
文件夹、结算帐号
roles/
logging.configWriter
Logs Configuration Writer logging.buckets.{list, create, get, update, delete}
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, list}
项目、组织、
文件夹、结算帐号
roles/
logging.admin
Logging Admin logging.exclusions.{list, create, get, update, delete}
logging.logEntries.{create, list}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.{delete,list}
logging.logServiceIndexes.list
logging.logServices.list
logging.privateLogEntries.list
logging.sinks.{list, create, get, update, delete}
logging.buckets.{list, get, update}
resourcemanager.projects.get
logging.usage.get
项目、组织、
文件夹、结算帐号
roles/viewer 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 Editor roles/viewer Logging 权限,再加上:
logging.logEntries.create
logging.logMetrics.{create, update, delete}
logging.logs.delete
项目、组织、
文件夹
roles/owner Owner roles/editor Logging 权限,再加上:
logging.privateLogEntries.list
logging.sinks.{create, update, delete}`
项目、组织、
文件夹

自定义角色

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

  • 如需让角色能授予 Logging API 权限,请从 API 权限的权限中进行选择。

  • 如需让角色能授予使用日志查看器的权限,请从控制台权限的权限组中进行选择。

  • 如需让角色能授予使用 gcloud logging 的权限,请转到 gcloud 工具概览。

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

API 权限

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

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

控制台权限

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

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

命令行权限

gcloud logging 命令由 IAM 权限控制。

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

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

访问导出的日志

若要为了导出日志而创建接收器,您必须拥有 roles/logging.configWriterroles/logging.adminroles/owner 权限。

在接收器开始导出日志后,它将拥有对所有传入日志条目的完整访问权限。接收器可以导出私密日志条目,包括 Access Transparency 日志和数据访问审核日志。

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

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 的完整访问权限。

最佳做法

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

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

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