访问权限控制

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

概览

要使用 Monitoring,您必须具有针对工作区的相应 Cloud IAM 权限。

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

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

预定义角色

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

Monitoring

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

角色 ID
角色名称
说明
roles/monitoring.viewer
Monitoring 查看者
为您提供对 Stackdriver Monitoring 控制台和 API 的只读权限
roles/monitoring.editor
Monitoring 编辑者
为您提供对 Stackdriver Monitoring 控制台和 API 的读写权限,并允许您将监控数据写入工作区
roles/monitoring.admin
Monitoring 管理员
为您提供对所有 Monitoring 功能的完整访问权限

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

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

提醒政策

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

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

通知渠道

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

角色 ID
角色名称
说明
roles/monitoring.notificationChannelViewer
Monitoring NotificationChannel 查看者
为您提供对通知渠道的只读权限
roles/monitoring.notificationChannelEditor
Monitoring NotificationChannel 编辑者
为您提供对通知渠道的读写权限

Google Cloud Platform

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

角色 ID
角色名称
说明
roles/viewer
项目查看者
为您提供对 Stackdriver Monitoring 控制台和 API 的只读权限
roles/editor
项目编辑者
为您提供对 Stackdriver Monitoring 控制台和 API 的读写权限
roles/owner
项目所有者
为您提供对 Stackdriver Monitoring 控制台和 API 的完整访问权限

自定义角色

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

权限和角色

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

API 权限

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

Monitoring API 方法 权限 资源类型
projects.alertPolicies.create monitoring.alertPolicies.create 项目1
projects.alertPolicies.delete monitoring.alertPolicies.delete AlertPolicy
projects.alertPolicies.get monitoring.alertPolicies.get AlertPolicy
projects.alertPolicies.list monitoring.alertPolicies.list 项目1
projects.alertPolicies.patch monitoring.alertPolicies.update AlertPolicy
projects.groups.create monitoring.groups.create 项目1
projects.groups.delete monitoring.groups.delete Group
projects.groups.get monitoring.groups.get Group
projects.groups.list monitoring.groups.list 项目1
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 项目1
projects.notificationChannels.create monitoring.notificationChannels.create 项目1
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 项目1
projects.notificationChannels.patch monitoring.notificationChannels.update NotificationChannel
projects.notificationChannels.sendVerificationCode monitoring.notificationChannels.sendVerificationCode NotificationChannel
projects.notificationChannels.verify monitoring.notificationChannels.verify NotificationChannel
projects.timeSeries.create monitoring.timeSeries.create 项目
projects.timeSeries.list 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 项目必须是工作区。

Stackdriver Monitoring 控制台权限

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

下表列出了使用 Stackdriver Monitoring 控制台所需的权限:

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

1项目必须是工作区。

角色

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

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

Monitoring

Monitoring 角色包含以下权限:

角色 ID
角色名称
具有的权限
roles/monitoring.viewer
Monitoring 查看者
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.analyzedMetrics.get1
monitoring.analyzedMetrics.list1
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.timeSeries.list
monitoring.uptimeCheckConfigs.get
monitoring.uptimeCheckConfigs.list
resourcemanager.projects.get
resourcemanager.projects.list
stackdriver.projects.get
roles/monitoring.editor
Monitoring 编辑者
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.alertPolicies.update
monitoring.analyzedMetrics.create1
monitoring.analyzedMetrics.delete1
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.timeSeries.create
monitoring.timeSeries.list
monitoring.uptimeCheckConfigs.create
monitoring.uptimeCheckConfigs.delete
monitoring.uptimeCheckConfigs.get
monitoring.uptimeCheckConfigs.list
monitoring.uptimeCheckConfigs.update
resourcemanager.projects.get
resourcemanager.projects.list
stackdriver.projects.edit
stackdriver.projects.get
stackdriver.resourceMetadata.write
roles/monitoring.admin
Monitoring 管理员
roles/monitoring.editor 中的权限及以下权限:
monitoring.notificationChannels.getVerificationCode

1 提供这些权限是为了支持 Stackdriver Monitoring 控制台。它们不能用于自定义角色。

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

角色 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 查看者
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.notificationChannelViewer
Monitoring NotificationChannel 查看者
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

Google Cloud Platform

GCP 角色具备以下权限:

角色 ID
角色名称
具有的权限
roles/viewer
项目查看者
Monitoring 权限恰好是 roles/monitoring.viewer 的权限。
roles/editor
项目编辑者
Monitoring 权限与 roles/monitoring.editor 的权限相同。
roles/owner
项目所有者
Monitoring 权限与 roles/editor 的权限相同。

授予 Cloud IAM 角色

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

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

您可以使用 Cloud SDK gcloud 命令行工具或 Google Cloud Platform Console (GCP 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

GCP Console

  1. 转到 GCP Console:

    转到 GCP Console

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

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

  4. 点击 IAM 和管理

  5. 如果用户不存在,请点击添加按钮,然后点击选择角色旁边的下拉列表;否则,请点击您要修改其权限的现有用户旁边的角色列下方的切换开关。

  6. 管理角色窗格中,将指针移动到左侧,然后滚动到 Monitoring

  7. 管理角色窗格中,将指针移动到右侧,然后选择一个适当的角色:

    • Monitoring Editor 会授予读写权限。
    • Monitoring Viewer 会授予只读权限。

自定义角色

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

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

  • 对于授予 Stackdriver Monitoring 控制台权限的角色,请从 Stackdriver 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 的完整访问权限。

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

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

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

发送以下问题的反馈:

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