アクセス制御

Stackdriver Monitoring は、Cloud Identity and Access Management(Cloud IAM)の役割と権限を使用してワークスペースのモニタリング データへのアクセスを制御します。

概要

Monitoring を使用するには、該当する Cloud IAM 権限がワークスペースに付与されている必要があります。

一般に、API の各 REST メソッドには権限が関連付けられているので、特定のメソッドを使用するには、それに関連付けられている権限が必要です。権限はユーザーに直接付与されるのではなく、役割を通して間接的に付与されます。役割は、複数の権限をグループ化して管理しやすいようにしたものです。これらのコンセプトの詳細については、役割、権限、関連するコンセプトに関する Cloud IAM のドキュメントをご覧ください。

一般的な権限の組み合わせに対する役割は事前に定義されていますが、Cloud IAM のカスタム役割を作成することで、独自の権限の組み合わせを作成することもできます。

事前定義の役割

以下に、Stackdriver Monitoring で事前に定義されている Cloud IAM 役割について説明します。これらは Monitoring に関する権限のみを付与します。

モニタリング

以下の役割は、モニタリングに関する一般的な権限を付与します。

役割 ID
役割名
説明
roles/monitoring.viewer
モニタリング閲覧者
Stackdriver Monitoring Console および API に対する読み取り専用アクセス権を付与します。
roles/monitoring.editor
モニタリング編集者
Stackdriver Monitoring Console および API に対する読み取り / 書き込みアクセス権を付与し、ワークスペースへのモニタリング データの書き込みを可能にします。
roles/monitoring.admin
モニタリング管理者
すべての Monitoring 機能に対する完全アクセス権を付与します。

サービス アカウントでは、書き込み専用アクセス権として以下の役割を使用します。

役割 ID
役割名
説明
roles/monitoring.metricWriter
モニタリング指標の書き込み
ワークスペースへのモニタリング データの書き込みを許可します。Stackdriver Monitoring Console へのアクセスは許可しません。サービス アカウント用。

アラート ポリシー

以下の役割は、アラート ポリシーに関する権限のみを付与します。

役割 ID
役割名
説明
roles/monitoring.alertPolicyViewer
Monitoring AlertPolicy 閲覧者
アラート ポリシーに対する読み取り専用アクセス権を付与します。
roles/monitoring.alertPolicyEditor
Monitoring AlertPolicy 編集者
アラート ポリシーに対する読み取り / 書き込みアクセス権を付与します。

ダッシュボード

以下の役割は、ダッシュボードに関する権限のみを付与します。

役割 ID
役割名
説明
roles/monitoring.dashboardViewer
モニタリング ダッシュボード構成の閲覧者
ダッシュボード構成に対する読み取り専用アクセス権を付与します。
roles/monitoring.dashboardEditor
モニタリング ダッシュボード構成の編集者
ダッシュボード構成に対する読み取り / 書き込みアクセス権を付与します。

通知チャネル

以下の役割は、通知チャネルに関する権限のみを付与します。

役割 ID
役割名
説明
roles/monitoring.notificationChannelViewer
モニタリング通知チャネルの閲覧者
通知チャンネルに対する読み取り専用アクセス権を付与します。
roles/monitoring.notificationChannelEditor
モニタリング通知チャネルの編集者
通知チャネルに対する読み取り / 書き込みアクセス権を付与します。

サービスのモニタリング

以下の役割は、サービスを管理するための権限を付与します。

役割 ID
役割名
説明
roles/monitoring.servicesViewer
モニタリング サービス閲覧者
サービスに対する読み取り専用アクセス権を付与します。
roles/monitoring.servicesEditor
モニタリング サービス編集者
サービスに対する読み取りと書き込みのアクセス権を付与します。

サービスのモニタリングの詳細については、サービスのモニタリング: API の操作をご覧ください。

稼働時間チェック構成

以下の役割は、稼働時間チェック構成に関する権限のみを付与します。

役割 ID
役割名
説明
roles/monitoring.uptimeCheckConfigViewer
稼働時間チェック構成のモニタリングの閲覧者
稼働時間チェック構成に対する読み取り専用アクセス権を付与します。
roles/monitoring.uptimeCheckConfigEditor
稼働時間チェック構成のモニタリングの編集者
稼働時間チェック構成に対する読み取りと書き込みのアクセス権を付与します。

Google Cloud

以下の役割は、Monitoring など、Google Cloud の多くのサービスとリソースに対する権限を付与します。

役割 ID
役割名
説明
roles/viewer
プロジェクト閲覧者
Stackdriver Monitoring Console および API に対する読み取り専用アクセス権を付与します。
roles/editor
プロジェクト編集者
Stackdriver Monitoring Console および API に対する読み取り / 書き込みアクセス権を付与します。
roles/owner
プロジェクト オーナー
Stackdriver Monitoring Console および 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.dashboards.create monitoring.dashboards.create プロジェクト1
projects.dashboards.delete monitoring.dashboards.delete プロジェクト1
projects.dashboards.get monitoring.dashboards.get プロジェクト1
projects.dashboards.list monitoring.dashboards.list プロジェクト1
projects.dashboards.patch monitoring.dashboards.update プロジェクト1
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.services.create monitoring.services.create プロジェクト1
projects.services.delete monitoring.services.delete Service
projects.services.get monitoring.services.get Service
projects.services.list monitoring.services.list プロジェクト1
projects.services.patch monitoring.services.update Service
projects.services.serviceLevelObjectives.create monitoring.slos.create プロジェクト1
projects.services.serviceLevelObjectives.delete monitoring.slos.delete ServiceLevelObjective
projects.services.serviceLevelObjectives.get monitoring.slos.get ServiceLevelObjective
projects.services.serviceLevelObjectives.list monitoring.slos.list プロジェクト1
projects.services.serviceLevelObjectives.patch monitoring.slos.update ServiceLevelObjective
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 に対する権限が必要です。たとえば、グループを参照するには、グループやグループ メンバーに適用される list および get メソッドに関する権限が必要です。必要な権限が取り消されると、Stackdriver Monitoring コンソールは機能を失う可能性があります。

Stackdriver Monitoring コンソールを使用するために必要となる権限のリストを次の表に示します。

Stackdriver Monitoring Console のアクティビティ 必要な権限 リソースタイプ
完全な読み取り専用アクセス roles/monitoring.viewer 役割に含まれる権限のセット プロジェクト1
Console への読み書きアクセス roles/monitoring.editor 役割に含まれる権限のセット プロジェクト1
Console への完全アクセス roles/monitoring.admin 役割に含まれる権限のセット プロジェクト1

1 プロジェクトはワークスペース内にある必要があります。

役割

次の表に、Monitoring に対するアクセス権を付与する Cloud IAM 役割と、それぞれの役割に関連付けられている権限を記載します。これらの役割の中には累進的なものがあります。たとえば roles/monitoring.editor 役割には、roles/monitoring.viewer 役割に含まれるすべての権限の他に、追加の一連の権限が含まれます。

役割はプロジェクト レベルでのみ割り当てられます。また、プロジェクトはワークスペース内にある必要があります。

モニタリング

モニタリング関連の役割には、以下の権限が含まれています。

役割 ID
役割名
含まれている権限
roles/monitoring.viewer
モニタリング閲覧者
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.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.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.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
stackdriver.projects.edit
stackdriver.projects.get
stackdriver.resourceMetadata.write
roles/monitoring.admin
モニタリング管理者
roles/monitoring.editorに含まれる権限に加えて、以下の権限が含まれます。
monitoring.notificationChannels.getVerificationCode

1 これらの権限は、Stackdriver Monitoring コンソールをサポートするために必要です。カスタム役割ではこれらを使用できません。

サービス アカウントでは、書き込み専用アクセス権として以下の役割を使用します。

役割 ID
役割名
含まれている権限
roles/monitoring.metricWriter
モニタリング指標の書き込み
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 編集者
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.alertPolicies.update

ダッシュボード

ダッシュボード関連の役割には以下の権限が含まれます。

役割 ID
役割名
含まれている権限
roles/monitoring.dashboardsViewer
モニタリング ダッシュボード構成の閲覧者
monitoring.dashboards.get
monitoring.dashboards.list
roles/monitoring.dashboardsEditor
モニタリング ダッシュボード構成の編集者
monitoring.dashboards.get
monitoring.dashboards.list
monitoring.dashboards.create
monitoring.dashboards.delete
monitoring.dashboards.update

通知チャネル

通知チャネル関連の役割には、以下の権限が含まれています。

役割 ID
役割名
含まれている権限
roles/monitoring.notificationChannelViewer
モニタリング通知チャネルの閲覧者
monitoring.notificationChannelDescriptors.get
monitoring.notificationChannelDescriptors.list
monitoring.notificationChannels.get
monitoring.notificationChannels.list
roles/monitoring.notificationChannelEditor
モニタリング通知チャネルの編集者
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.get
monitoring.services.list
monitoring.slos.get
monitoring.slos.list
roles/monitoring.servicesEditor
モニタリング サービス編集者
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.uptimeCheckConfigs.get
monitoring.uptimeCheckConfigs.list
roles/monitoring.uptimeCheckConfigEditor
稼働時間チェック構成のモニタリングの編集者
monitoring.uptimeCheckConfigs.create
monitoring.uptimeCheckConfigs.delete
monitoring.uptimeCheckConfigs.get
monitoring.uptimeCheckConfigs.list
monitoring.uptimeCheckConfigs.update

Google Cloud

Google Cloud 関連の役割には以下の権限が含まれます。

役割 ID
役割名
含まれている権限
roles/viewer
プロジェクト閲覧者
モニタリング権限は、roles/monitoring.viewer の権限と同じです。
roles/editor
プロジェクト編集者
モニタリング権限は、roles/monitoring.editor の権限と同じです。
roles/owner
プロジェクト オーナー
モニタリング権限は、roles/editor の権限と同じです。

Cloud IAM 役割の付与

Compute Engine と App Engine のプロジェクト オーナー、編集者、デフォルト サービス アカウントには、必要な権限がすでに割り当てられていますが、他のユーザー アカウントに権限を明示的に付与する必要が生じることがあります。

たとえば、ユーザー アカウントで Monitoring API を使用して指標記述子を読み書きするには、適切な monitoring.metricDescriptors.* Cloud IAM 権限が必要です。これを行うには、事前定義されたモニタリング閲覧者roles/monitoring.viewer)とモニタリング編集者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

  1. Cloud Console に移動します。

    Cloud Console に移動

  2. 必要に応じて、Google Cloud プロジェクトのプルダウン リストをクリックし、API を有効にするプロジェクトの名前を選択します。

  3. ナビゲーション メニューを展開するには、メニュー をクリックします。

  4. [IAM と管理] をクリックします。

  5. ユーザーが存在しない場合は、[追加] ボタンをクリックし、[役割を選択] の横にあるプルダウン リストをクリックします。ユーザーが存在する場合は、権限を編集する既存ユーザーの横にある [役割] 列の下にある切り替えボタンをクリックします。

  6. [役割を管理] ウィンドウで、ポインタを左側に移動して [モニタリング] までスクロールします。

  7. [役割を管理] ウィンドウで、ポインタを右側に移動して適切な役割を選択します。

    • Monitoring Editor は読み取り / 書き込みアクセス権を付与します。
    • Monitoring Viewer は読み取り専用アクセス権を付与します。

カスタムの役割

Monitoring 権限でカスタムの役割を作成するには、次のようにします。

  • Monitoring API に関する権限のみを付与する役割の場合は、API 権限セクションにある権限から選択します。

  • Stackdriver Monitoring コンソールに関する権限を付与する役割の場合は、Stackdriver Monitoring コンソールの権限セクションにある権限グループから選択します。

  • モニタリング データの書き込み権限を付与するには、役割セクションにある役割 roles/monitoring.metricWriter の権限を含めます。

カスタムの役割について詳しくは、IAM のカスタムの役割についてをご覧ください。

Compute Engine のアクセス スコープ

アクセス スコープは、Compute Engine VM インスタンスに関する権限を指定するレガシーな方法です。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 APIs に対する完全アクセス権です。

詳しくは、アクセス スコープをご覧ください。

ベスト プラクティス。 サービス アカウントの Cloud IAM の役割は構成や変更が容易なため、VM インスタンスに最も強力なアクセス スコープ(cloud-platform)を付与し、次に Cloud IAM の役割を使用して特定の API やオペレーションへのアクセスを制限することをおすすめします。詳しくは、サービス アカウント権限をご覧ください。