访问权限控制

Cloud Monitoring 使用 Identity and Access Management (IAM) 角色和权限来控制对工作区中监控数据的访问权限。

VPC 服务控制

除了 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 的一般权限:

角色 ID
角色名称
说明
roles/monitoring.viewer
Monitoring Viewer
授予对 Google Cloud Console 中的 Monitoring 和 API 的只读权限。
roles/monitoring.editor
Monitoring Editor
授予对 Google Cloud Console 中的 Monitoring 和 API 的读写权限,
并允许您创建工作区。
roles/monitoring.admin
Monitoring Admin
授予对 Google Cloud Console 中的 Monitoring 的完整访问权限,并允许您创建工作区。

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

角色 ID
角色名称
说明
roles/monitoring.metricWriter
Monitoring Metric Writer
允许将监控数据写入工作区;不允许访问 Google Cloud Console 中的 Monitoring。适用于服务帐号。

提醒政策

以下角色仅授予针对提醒策略的权限:

角色 ID
角色名称
说明
roles/monitoring.alertPolicyViewer
Monitoring AlertPolicy Viewer
为您提供针对提醒策略的只读权限。
roles/monitoring.alertPolicyEditor
Monitoring AlertPolicy Editor
为您提供针对提醒政策的读写权限。

信息中心

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

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

通知渠道

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

角色 ID
角色名称
说明
roles/monitoring.notificationChannelViewer
Monitoring NotificationChannel Viewer
为您提供对通知渠道的只读权限。
roles/monitoring.notificationChannelEditor
Monitoring NotificationChannel Editor
为您提供对通知渠道的读写权限。

服务监控

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

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

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

正常运行时间检查配置

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

角色 ID
角色名称
说明
roles/monitoring.uptimeCheckConfigViewer
Monitoring Uptime Check Configurations Viewer
授予对正常运行时间检查配置的只读权限。
roles/monitoring.uptimeCheckConfigEditor
Monitoring Uptime Check Configurations Editor
授予对正常运行时间检查配置的读写权限。

工作区

要创建或管理工作区,您必须使用 Google Cloud Console。如需了解创建工作区所需的角色,请参阅预定义的 Monitoring 角色

Google Cloud

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

角色 ID
角色名称
说明
roles/viewer
Project Viewer
授予对 Google Cloud Console 中的 Monitoring 和 API 的只读权限。
roles/editor
Project Editor
授予对 Google Cloud Console 中的 Monitoring 和 API 的读写权限,
并允许您使用现有的工作区。您无法使用此角色创建工作区。
roles/owner
Project Owner
授予对 Google Cloud Console 中的 Monitoring 和 API 的完整访问权限,
并允许您创建工作区。

自定义角色

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

权限和角色

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

API 权限

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

Monitoring API 方法 权限 资源类型
projects.alertPolicies.create monitoring.alertPolicies.create project1
projects.alertPolicies.delete monitoring.alertPolicies.delete AlertPolicy
projects.alertPolicies.get monitoring.alertPolicies.get AlertPolicy
projects.alertPolicies.list monitoring.alertPolicies.list project1
projects.alertPolicies.patch monitoring.alertPolicies.update AlertPolicy
projects.dashboards.create monitoring.dashboards.create project1
projects.dashboards.delete monitoring.dashboards.delete project1
projects.dashboards.get monitoring.dashboards.get project1
projects.dashboards.list monitoring.dashboards.list project1
projects.dashboards.patch monitoring.dashboards.update project1
projects.groups.create monitoring.groups.create project1
projects.groups.delete monitoring.groups.delete Group
projects.groups.get monitoring.groups.get Group
projects.groups.list monitoring.groups.list project1
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 project1
projects.notificationChannels.create monitoring.notificationChannels.create project1
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 project1
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 project1
projects.services.delete monitoring.services.delete Service
projects.services.get monitoring.services.get Service
projects.services.list monitoring.services.list project1
projects.services.patch monitoring.services.update Service
projects.services.serviceLevelObjectives.create monitoring.slos.create project1
projects.services.serviceLevelObjectives.delete monitoring.slos.delete ServiceLevelObjective
projects.services.serviceLevelObjectives.get monitoring.slos.get ServiceLevelObjective
projects.services.serviceLevelObjectives.list monitoring.slos.list project1
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

1 项目必须位于工作区中。

Monitoring 控制台权限

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

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

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

1 项目必须位于工作区中。

角色

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

角色只能在项目级分配,而且项目必须位于工作区中。

监控

Monitoring 角色包含以下权限:

角色 ID
角色名称
具有的权限
roles/monitoring.viewer
Monitoring Viewer
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
resourcemanager.projects.get
resourcemanager.projects.list
stackdriver.projects.get
roles/monitoring.editor
Monitoring Editor
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
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

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

角色 ID
角色名称
具有的权限
roles/monitoring.metricWriter
Monitoring Metric Writer
monitoring.metricDescriptors.create
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.monitoredResourceDescriptors.get
monitoring.monitoredResourceDescriptors.list
monitoring.timeSeries.create

提醒政策

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

角色 ID
角色名称
具有的权限
roles/monitoring.alertPolicyViewer
Monitoring AlertPolicy Viewer
monitoring.alertPolicies.get
monitoring.alertPolicies.list
roles/monitoring.alertPolicyEditor
Monitoring AlertPolicy Editor
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.alertPolicies.update

信息中心

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

角色 ID
角色名称
具有的权限
roles/monitoring.dashboardViewer
Monitoring Dashboard Configuration Viewer
monitoring.dashboards.get
monitoring.dashboards.list
roles/monitoring.dashboardEditor
Monitoring Dashboard Configuration Editor
monitoring.dashboards.get
monitoring.dashboards.list
monitoring.dashboards.create
monitoring.dashboards.delete
monitoring.dashboards.update

通知渠道

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

角色 ID
角色名称
具有的权限
roles/monitoring.notificationChannelViewer
Monitoring NotificationChannel Viewer
monitoring.notificationChannelDescriptors.get
monitoring.notificationChannelDescriptors.list
monitoring.notificationChannels.get
monitoring.notificationChannels.list
roles/monitoring.notificationChannelEditor
Monitoring NotificationChannel Editor
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

服务监控

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

角色 ID
角色名称
具有的权限
roles/monitoring.servicesViewer
Monitoring Services Viewer
monitoring.services.get
monitoring.services.list
monitoring.slos.get
monitoring.slos.list
roles/monitoring.servicesEditor
Monitoring Services Editor
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

正常运行时间检查配置

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

角色 ID
角色名称
具有的权限
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

工作区配置

要创建或管理工作区,您必须使用 Google Cloud Console。如需了解创建工作区所需的角色,请参阅预定义的 Monitoring 角色

Google Cloud

Google Cloud 角色具备以下权限:

角色 ID
角色名称
具有的权限
roles/viewer
Project Viewer
Monitoring 权限恰好是 roles/monitoring.viewer 的权限。
roles/editor
Project Editor
Monitoring 权限与 roles/monitoring.editor 的权限相同。
roles/owner
Project Owner
Monitoring 权限与 roles/editor 的权限相同。

授予 IAM 角色

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

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

您可以使用 Cloud SDK gcloud 命令行工具或 Google Cloud Console (Cloud Console) 授予这些权限。

Cloud SDK

使用 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

Cloud Console

  1. 转到 Cloud Console:

    转到 Cloud Console

  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 权限的角色,请从 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 和操作的访问权限。如需了解详情,请转到服务帐号权限