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 的权限。例如,若要能够浏览群组,您需要具有适用于群组和群组成员的 list
和 get
方法的权限。如果所需权限被撤消,则功能可能无法使用。
下表列出了使用 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.viewer
或 monitoring.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
转到 Cloud Console:
如有必要,请点击 Google Cloud 项目的下拉列表,然后选择要在其中启用 API 的项目的名称。
要展开导航菜单,请点击菜单 arrow_drop_down。
点击 IAM 和管理。
如果用户是会员,请点击修改 edit 以修改其权限。您可以修改现有角色,也可以添加其他角色。要保存更改,请点击保存。
如果用户不是成员,请执行以下操作:
- 点击添加。
- 在新成员文本框中输入用户名。
- 在选择角色中,点击菜单 arrow_drop_down。
- 在过滤栏 filter_list中,输入相应的角色:
- 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 和操作的访问权限。如需了解详情,请转到服务帐号权限。