使用 IAM 控制访问权限

本文档介绍了 Cloud Monitoring 使用的 Identity and Access Management (IAM) 角色和权限。本指南适用于配置和授予角色和权限的管理员。

VPC Service Controls

如需进一步控制对监控数据的访问权限,除了使用 IAM 以外,还请使用 VPC Service Controls

VPC Service Controls 可为 Cloud Monitoring 提供额外的安全保护,有助于降低数据泄露的风险。使用 VPC Service Controls,您可以向服务边界添加指标范围,以保护 Cloud Monitoring 资源和服务免受来自该范围之外的请求的影响。

如需详细了解服务边界,请参阅 VPC Service Controls 服务边界配置文档

如需了解 VPC Service Controls 的 Monitoring 支持,包括已知限制,请参阅 Monitoring VPC Service Controls 文档

Monitoring IAM 概览

要使用 Monitoring,您必须具有相应的 IAM 权限。

通常情况下,API 中的每个 REST 方法都有关联的权限,您必须具有权限才能使用相应的方法。权限不是直接授予用户的,而是通过角色间接授予。角色可将多个权限分为一组,以便于管理。如需详细了解这些概念,请参阅与访问管理相关的概念

系统会为您预定义常用权限组合的角色,但您也可以通过创建 IAM 自定义角色来创建自己的权限组合。

预定义角色

Cloud Monitoring 预定义了以下 IAM 角色。 这些角色仅授予针对 Monitoring 的权限。

监控

以下角色可授予针对 Monitoring 的一般权限:

名称
职位
具有的权限
roles/monitoring.viewer
Monitoring 查看者
授予对 Google Cloud Console 和 API 中的 Monitoring 的只读权限。
roles/monitoring.editor
Monitoring 编辑者
向 Google Cloud Console 和 Monitoring 中的 Monitoring 提供读写权限,以及向
授予对指标范围的读写权限(使用 Console 时)。指标指标的写入权限可授予向指标范围添加(或移除)受监控的 Google Cloud 项目的权限。
roles/monitoring.admin
Monitoring Admin
授予对 Google Cloud Console 和 API 中的 Monitoring 的完整访问权限,
以及对指标范围的读写权限。指标指标的写入权限可授予向指标范围添加(或移除)受监控的 Google Cloud 项目的权限。

以下角色可为服务帐号提供只写权限:

名称
职位
说明
roles/monitoring.metricWriter
Monitoring Metric Writer
允许在指标范围内写入监控数据;
不允许访问 Google Cloud Console 中的 Monitoring。
此角色适用于服务帐号和代理。

提醒政策

以下角色可授予针对提醒政策的权限:

名称
职位
说明
roles/monitoring.alertPolicyViewer
Monitoring AlertPolicy Viewer
授予对提醒政策的只读权限。
roles/monitoring.alertPolicyEditor
Monitoring AlertPolicy Editor
授予对提醒政策的读写权限。

信息中心

以下角色仅授予针对信息中心的权限:

名称
职位
说明
roles/monitoring.dashboardViewer
Monitoring Dashboard Configuration Viewer
授予对信息中心配置的只读权限。
roles/monitoring.dashboardEditor
Monitoring Dashboard Configuration Editor
授予对信息中心配置的读写权限。

突发事件

以下角色授予查看突发事件的一般权限:

名称
职位
说明
roles/monitoring.viewer
Monitoring Viewer
授予查看突发事件的权限。
roles/monitoring.editor
Monitoring Editor
授予查看、确认和关闭突发事件的权限。
roles/monitoring.admin
Monitoring Admin
授予查看、确认和关闭突发事件的权限。

如需查看突发事件的详情,您必须至少拥有 Identity and Access Management 的 roles/monitoring.viewer 角色。 如需了解详情,请参阅由于权限错误而无法查看突发事件详情

通知渠道

以下角色仅授予针对通知渠道的权限:

名称
职位
说明
roles/monitoring.notificationChannelViewer
Monitoring NotificationChannel Viewer
授予对通知渠道的只读权限。
roles/monitoring.notificationChannelEditor
Monitoring NotificationChannel Editor
授予对通知渠道的读写权限。

暂停通知

以下角色可授予延后通知的权限:

名称
职位
说明
roles/monitoring.alertPolicyViewer
Monitoring AlertPolicy Viewer
授予对提醒政策和延后操作的只读权限。
roles/monitoring.alertPolicyEditor
Monitoring AlertPolicy Editor
授予对提醒政策和延后的读写权限。

服务监控

以下角色授予管理服务的权限:

名称
职位
说明
roles/monitoring.servicesViewer
Monitoring Services Viewer
授予对服务的只读权限。
roles/monitoring.servicesEditor
Monitoring Services Editor
授予对服务的读写权限。

如需详细了解服务监控,请参阅 SLO 监控

正常运行时间检查配置

以下角色仅授予针对正常运行时间检查配置的权限:

名称
职位
说明
roles/monitoring.uptimeCheckConfigViewer
Monitoring Uptime Check Configurations Viewer
授予对拨测配置的只读权限。
roles/monitoring.uptimeCheckConfigEditor
Monitoring Uptime Check Configurations Editor
授予对拨测配置的读写权限。

指标范围配置

以下角色授予了指标范围的一般权限:

名称
职位
说明
roles/monitoring.metricsScopesViewer
Monitoring Metrics Scopes Viewer
授予对指标范围的只读权限。
roles/monitoring.metricsScopesAdmin
Monitoring Metrics Scopes Admin
授予对指标范围的读写权限。

Google Cloud

以下角色授予针对 Google Cloud 中多项服务和资源(包括 Monitoring)的权限:

名称
职位
具有的权限
roles/viewer
查看者
Monitoring 权限恰好是 roles/monitoring.viewer 的权限。
roles/editor
编辑者

Monitoring 权限与 roles/monitoring.editor 中的权限相同,但 stackdriver.projects.edit 权限除外。 角色 roles/editor 不含 stackdriver.projects.edit 权限。

此角色不授予修改指标范围的权限。 如需在使用 API 时修改指标范围,您的角色必须包含 monitoring.metricsScopes.link 权限。 如需在使用 Google Cloud Console 时修改指标范围,您的角色必须包含 monitoring.metricsScopes.link 权限,或者您必须拥有 roles/monitoring.editor 角色。

roles/owner
所有者
Monitoring 权限与 roles/monitoring.admin 中的权限相同。

自定义角色

您还可以自行创建包含权限组合的自定义角色。如需详细了解角色和权限,请转到本页面中的权限和角色以及自定义角色

权限和角色

本部分列出了适用于 Monitoring 的 IAM 权限和角色。

API 权限

每个 Monitoring API 方法都需要特定的 IAM 权限,具体如下表所列。

Monitoring API 方法 权限 资源类型
projects.alertPolicies.create monitoring.alertPolicies.create 项目
projects.alertPolicies.delete monitoring.alertPolicies.delete AlertPolicy
projects.alertPolicies.get monitoring.alertPolicies.get AlertPolicy
projects.alertPolicies.list monitoring.alertPolicies.list 项目
projects.alertPolicies.patch monitoring.alertPolicies.update AlertPolicy
projects.dashboards.create monitoring.dashboards.create 项目
projects.dashboards.delete monitoring.dashboards.delete 项目
projects.dashboards.get monitoring.dashboards.get 项目
projects.dashboards.list monitoring.dashboards.list 项目
projects.dashboards.patch monitoring.dashboards.update 项目
projects.groups.create monitoring.groups.create 项目
projects.groups.delete monitoring.groups.delete Group
projects.groups.get monitoring.groups.get Group
projects.groups.list monitoring.groups.list 项目
projects.groups.update monitoring.groups.update Group
projects.groups.members.list monitoring.groups.get Group
projects.metricDescriptors.create monitoring.metricDescriptors.create 项目
projects.metricDescriptors.delete monitoring.metricDescriptors.delete MetricDescriptor
projects.metricDescriptors.get monitoring.metricDescriptors.get MetricDescriptor
projects.metricDescriptors.list monitoring.metricDescriptors.list 项目
projects.monitoredResourceDescriptors.get monitoring.monitoredResourceDescriptors.get MonitoredResourceDescriptor
projects.monitoredResourceDescriptors.list monitoring.monitoredResourceDescriptors.list 项目
projects.notificationChannelDescriptors.get monitoring.notificationChannelDescriptors.get NotificationChannelDescriptor
projects.notificationChannelDescriptors.list monitoring.notificationChannelDescriptors.list 项目
projects.notificationChannels.create monitoring.notificationChannels.create 项目
projects.notificationChannels.delete monitoring.notificationChannels.delete NotificationChannel
projects.notificationChannels.get monitoring.notificationChannels.get NotificationChannel
projects.notificationChannels.getVerificationCode monitoring.notificationChannels.getVerificationCode NotificationChannel
projects.notificationChannels.list monitoring.notificationChannels.list 项目
projects.notificationChannels.patch monitoring.notificationChannels.update NotificationChannel
projects.notificationChannels.sendVerificationCode monitoring.notificationChannels.sendVerificationCode NotificationChannel
projects.notificationChannels.verify monitoring.notificationChannels.verify NotificationChannel
projects.services.create monitoring.services.create 项目
projects.services.delete monitoring.services.delete Service
projects.services.get monitoring.services.get Service
projects.services.list monitoring.services.list 项目
projects.services.patch monitoring.services.update Service
projects.services.serviceLevelObjectives.create monitoring.slos.create 项目
projects.services.serviceLevelObjectives.delete monitoring.slos.delete ServiceLevelObjective
projects.services.serviceLevelObjectives.get monitoring.slos.get ServiceLevelObjective
projects.services.serviceLevelObjectives.list monitoring.slos.list 项目
projects.services.serviceLevelObjectives.patch monitoring.slos.update ServiceLevelObjective
projects.timeSeries.create monitoring.timeSeries.create 项目
projects.timeSeries.list monitoring.timeSeries.list 项目、文件夹、组织
projects.timeSeries.query monitoring.timeSeries.list 项目
projects.uptimeCheckConfigs.create monitoring.uptimeCheckConfigs.create UptimeCheckConfig
projects.uptimeCheckConfigs.delete monitoring.uptimeCheckConfigs.delete UptimeCheckConfig
projects.uptimeCheckConfigs.get monitoring.uptimeCheckConfigs.get UptimeCheckConfig
projects.uptimeCheckConfigs.list monitoring.uptimeCheckConfigs.list UptimeCheckConfig
projects.uptimeCheckConfigs.patch monitoring.uptimeCheckConfigs.update UptimeCheckConfig
locations.global.metricsScopes.get resourcemanager.projects.get 项目
locations.global.metricsScopes/listMetricScopesByMonitoredProject resourcemanager.projects.get 项目
locations.global.metricsScopes.projects.create monitoring.metricsScopes.link 项目
locations.global.metricsScopes.projects.delete monitoring.metricsScopes.link 项目

Monitoring 控制台权限

Google Cloud 控制台中的每项 Monitoring 功能都需要您具有用于实现相应功能的 API 的权限。例如,若要能够浏览群组,您需要具有适用于群组和群组成员的 listget 方法的权限。如果所需权限被撤消,则功能可能无法使用。

下表列出了在 Google Cloud Console 中使用 Monitoring 所需的权限:

活动 所需权限 适用的资源类型
只读权限 roles/monitoring.viewer 角色中的整套权限 project。
拥有控制台的读写权限 roles/monitoring.editor 角色中的整套权限 project。
拥有控制台的完整访问权限 roles/monitoring.admin 角色中的整套权限 project。

角色

下表列出了授予对 Monitoring 访问权限的 IAM 角色以及与每个角色关联的权限。其中一些角色分等级:例如,roles/monitoring.editor 角色包含 roles/monitoring.viewer 角色的所有权限以及另外一组权限。

只能在项目级层分配角色。

监控

Monitoring 角色包含以下权限:

名称
职位
具有的权限
roles/monitoring.viewer
Monitoring 查看者
cloudnotifications.activities.list
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.dashboards.get
monitoring.dashboards.list
monitoring.groups.get
monitoring.groups.list
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.monitoredResourceDescriptors.get
monitoring.monitoredResourceDescriptors.list
monitoring.notificationChannelDescriptors.get
monitoring.notificationChannelDescriptors.list
monitoring.notificationChannels.get
monitoring.notificationChannels.list
monitoring.publicWidgets.get
monitoring.publicWidgets.list
monitoring.services.get
monitoring.services.list
monitoring.slos.get
monitoring.slos.list
monitoring.timeSeries.list
monitoring.uptimeCheckConfigs.get
monitoring.uptimeCheckConfigs.list
opsconfigmonitoring.resourceMetadata.list
resourcemanager.projects.get
resourcemanager.projects.list
stackdriver.projects.get
roles/monitoring.editor
Monitoring 编辑者
cloudnotifications.activities.list
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.alertPolicies.update
monitoring.dashboards.create
monitoring.dashboards.delete
monitoring.dashboards.get
monitoring.dashboards.list
monitoring.dashboards.update
monitoring.groups.create
monitoring.groups.delete
monitoring.groups.get
monitoring.groups.list
monitoring.groups.update
monitoring.metricDescriptors.create
monitoring.metricDescriptors.delete
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.monitoredResourceDescriptors.get
monitoring.monitoredResourceDescriptors.list
monitoring.notificationChannelDescriptors.list
monitoring.notificationChannelDescriptors.get
monitoring.notificationChannels.create
monitoring.notificationChannels.delete
monitoring.notificationChannels.get
monitoring.notificationChannels.list
monitoring.notificationChannels.sendVerificationCode
monitoring.notificationChannels.update
monitoring.notificationChannels.verify
monitoring.publicWidgets.create
monitoring.publicWidgets.delete
monitoring.publicWidgets.get
monitoring.publicWidgets.list
monitoring.publicWidgets.update
monitoring.services.create
monitoring.services.delete
monitoring.services.get
monitoring.services.list
monitoring.services.update
monitoring.slos.create
monitoring.slos.delete
monitoring.slos.get
monitoring.slos.list
monitoring.slos.update
monitoring.timeSeries.create
monitoring.timeSeries.list
monitoring.uptimeCheckConfigs.create
monitoring.uptimeCheckConfigs.delete
monitoring.uptimeCheckConfigs.get
monitoring.uptimeCheckConfigs.list
monitoring.uptimeCheckConfigs.update
opsconfigmonitoring.resourceMetadata.write
opsconfigmonitoring.resourceSnapshot.create
resourcemanager.projects.get
resourcemanager.projects.list
serviceusage.services.enable
stackdriver.projects.edit
stackdriver.projects.get
stackdriver.resourceMetadata.write
roles/monitoring.admin
Monitoring Admin
roles/monitoring.editor 中的权限,加上以下权限:
monitoring.notificationChannels.getVerificationCode
monitoring.metricsScopes.link

以下角色可为服务帐号提供只写权限:

名称
职位
具有的权限
roles/monitoring.metricWriter
监控指标写入者
monitoring.metricDescriptors.create
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.monitoredResourceDescriptors.get
monitoring.monitoredResourceDescriptors.list
monitoring.timeSeries.create

提醒政策

提醒策略角色具备以下权限:

名称
职位
具有的权限
roles/monitoring.alertPolicyViewer
Monitoring AlertPolicy 查看者
monitoring.alertPolicies.get
monitoring.alertPolicies.list
roles/monitoring.alertPolicyEditor
Monitoring AlertPolicy 编辑者
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.alertPolicies.update

信息中心

信息中心角色具备以下权限:

名称
职位
具有的权限
roles/monitoring.dashboardViewer
Monitoring Dashboard Configuration Viewer
monitoring.dashboards.get
monitoring.dashboards.list
roles/monitoring.dashboardEditor
Monitoring 信息中心配置编辑者
monitoring.dashboards.get
monitoring.dashboards.list
monitoring.dashboards.create
monitoring.dashboards.delete
monitoring.dashboards.update

通知渠道

通知渠道角色具备以下权限:

名称
职位
具有的权限
roles/monitoring.notificationChannelViewer
监控 NotificationChannel 查看者
monitoring.notificationChannelDescriptors.get
monitoring.notificationChannelDescriptors.list
monitoring.notificationChannels.get
monitoring.notificationChannels.list
roles/monitoring.notificationChannelEditor
监控 NotificationChannel 编辑器
monitoring.notificationChannelDescriptors.get
monitoring.notificationChannelDescriptors.list
monitoring.notificationChannels.create
monitoring.notificationChannels.delete
monitoring.notificationChannels.get
monitoring.notificationChannels.list
monitoring.notificationChannels.sendVerificationCode
monitoring.notificationChannels.update
monitoring.notificationChannels.verify

Sooze 通知

提醒政策角色包含查看或创建延后所需的权限。

名称
职位
具有的权限
roles/monitoring.alertPolicyViewer
Monitoring AlertPolicy 查看者
monitoring.alertPolicies.get
monitoring.alertPolicies.list
roles/monitoring.alertPolicyEditor
Monitoring AlertPolicy 编辑者
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.alertPolicies.update

服务监控

服务监控角色具备以下权限:

名称
职位
具有的权限
roles/monitoring.servicesViewer
Monitoring 服务查看者
monitoring.services.get
monitoring.services.list
monitoring.slos.get
monitoring.slos.list
roles/monitoring.servicesEditor
Monitoring 服务编辑器
monitoring.services.create
monitoring.services.delete
monitoring.services.get
monitoring.services.list
monitoring.services.update
monitoring.slos.create
monitoring.slos.delete
monitoring.slos.get
monitoring.slos.list
monitoring.slos.update

正常运行时间检查配置

正常运行时间检查配置角色具备以下权限:

名称
职位
具有的权限
roles/monitoring.uptimeCheckConfigViewer
Monitoring Uptime Check Configurations Viewer
monitoring.uptimeCheckConfigs.get
monitoring.uptimeCheckConfigs.list
roles/monitoring.uptimeCheckConfigEditor
Monitoring Uptime Check Configurations Editor
monitoring.uptimeCheckConfigs.create
monitoring.uptimeCheckConfigs.delete
monitoring.uptimeCheckConfigs.get
monitoring.uptimeCheckConfigs.list
monitoring.uptimeCheckConfigs.update

指标范围配置

指标范围配置角色包含以下权限:

名称
职位
具有的权限
roles/monitoring.metricsScopesViewer
Monitoring 指标范围查看者
resourcemanager.projects.get
resourcemanager.projects.list
roles/monitoring.metricsScopesAdmin
Monitoring metrics scopes Admin
添加和移除受监控的项目。
resourcemanager.projects.get
resourcemanager.projects.list
monitoring.metricsScopes.link

Google Cloud

Google Cloud 角色具备以下权限:

名称
职位
具有的权限
roles/viewer
查看者
Monitoring 权限恰好是 roles/monitoring.viewer 的权限。
roles/editor
编辑者

Monitoring 权限与 roles/monitoring.editor 中的权限相同,但 stackdriver.projects.edit 权限除外。 角色 roles/editor 不含 stackdriver.projects.edit 权限。

此角色不授予修改指标范围的权限。 如需在使用 API 时修改指标范围,您的角色必须包含 monitoring.metricsScopes.link 权限。 如需在使用 Google Cloud Console 时修改指标范围,您的角色必须包含 monitoring.metricsScopes.link 权限,或者您必须拥有 roles/monitoring.editor 角色。

roles/owner
所有者
Monitoring 权限与 roles/monitoring.admin 中的权限相同。

授予 IAM 角色

Compute Engine 和 App Engine 的项目所有者、编辑者和默认服务帐号已具备必要的权限;但是对于其他用户帐号,您可能需要明确授予这些角色。

例如,为了让某用户帐号使用 Monitoring API 读取或写入指标描述符,该用户必须具备相应的 monitoring.metricDescriptors.* IAM 权限。您可以通过授予预定义的 Monitoring Viewer (roles/monitoring.viewer) 和 Monitoring Editor (roles/monitoring.editor) 角色来提供这些权限。如需了解详情,请转到 API 权限

这些权限可通过 Google Cloud CLI Google Cloud CLI 或 Google Cloud Console(控制台)授予。

Google Cloud CLI

使用 gcloud projects add-iam-policy-binding 命令授予 monitoring.viewermonitoring.editor 角色。

例如:

export PROJECT_ID="my-test-project"
export EMAIL_ADDRESS="myuser@gmail.com"
gcloud projects add-iam-policy-binding \
      $PROJECT_ID \
      --member="user:$EMAIL_ADDRESS" \
      --role="roles/monitoring.editor"

您可以使用 gcloud projects get-iam-policy 命令确认已授予的角色:

export PROJECT_ID="my-test-project"
gcloud projects get-iam-policy $PROJECT_ID

控制台

  1. 转到控制台:

    转到控制台

  2. 如有必要,请点击 Google Cloud 项目的下拉列表,然后选择要在其中启用 API 的项目的名称。

  3. 要展开导航菜单,请点击菜单

  4. 点击 IAM 和管理

  5. 如果用户是会员,请点击修改 以修改其权限。您可以修改现有角色,也可以添加其他角色。要保存更改,请点击保存

  6. 如果用户不是成员,请执行以下操作:

    1. 点击添加
    2. 新成员文本框中输入用户名。
    3. 选择角色中,点击菜单
    4. 过滤栏 中,输入相应的角色:
      • Monitoring Editor 会授予读写权限。
      • Monitoring Viewer 会授予只读权限。

自定义角色

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

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

  • 对于在 Google Cloud Console 中授予 Monitoring 权限的角色,请从 Console 的 Monitoring 权限部分的权限组中进行选择。

  • 要授予写入监控数据的权限,请添加角色部分中 roles/monitoring.metricWriter 角色的权限。

如需详细了解自定义角色,请转到了解 IAM 自定义角色

Compute Engine 访问权限范围

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

访问权限范围 授予的权限
https://www.googleapis.com/auth/monitoring.read 权限与 roles/monitoring.viewer 相同。
https://www.googleapis.com/auth/monitoring.write 权限与 roles/monitoring.metricWriter 相同。
https://www.googleapis.com/auth/monitoring 拥有 Monitoring 的完整访问权限。
https://www.googleapis.com/auth/cloud-platform 拥有所有已启用 Cloud API 的完整访问权限。

如需了解详情,请转到访问权限范围

最佳做法。 由于服务帐号 IAM 角色易于配置和更改,因此合理的做法是为虚拟机实例提供最强大的访问权限范围 (cloud-platform),然后使用 IAM 角色限制对特定 API 和操作的访问权限。如需了解详情,请转到服务帐号权限