액세스 제어

Cloud Monitoring은 Identity and Access Management(IAM) 역할 및 권한을 사용해 작업공간의 모니터링 데이터에 대한 액세스를 제어합니다.

VPC 서비스 제어

IAM 외에도 VPC 서비스 제어를 사용하여 모니터링 데이터에 대한 액세스를 추가로 제어할 수 있습니다.

VPC 서비스 제어는 Cloud Monitoring의 보안을 강화하여 데이터 유출 위험을 줄입니다. VPC 서비스 제어를 사용하면 서비스 경계에 작업영역을 추가하여 경계 외부 요청으로부터 Cloud Monitoring 리소스와 서비스를 보호할 수 있습니다.

서비스 경계에 대한 자세한 내용은 VPC 서비스 제어 서비스 경계 구성 문서를 참조하세요.

알려진 제한 사항을 포함하여 VPC 서비스 제어에 대한 Monitoring 지원의 자세한 내용은 Monitoring VPC 서비스 제어 문서를 참조하세요.

Monitoring IAM 개요

Monitoring을 사용하려면 작업공간에 부여된 적절한 IAM 권한이 있어야 합니다.

일반적으로 한 API의 REST 메소드마다 연결된 권한이 하나씩 있는데 특정 메소드를 사용하려면 해당하는 권한이 있어야 합니다. 권한은 사용자에게 직접 부여되지 않습니다. 대신 역할을 통해 간접적으로 부여되며 역할에 따라 여러 권한이 그룹화되기 때문에 관리가 더욱 쉬워집니다. 이러한 개념에 대한 자세한 정보는 액세스 관리와 관련된 개념을 참조하세요.

일반적인 권한 조합 역할은 사전 정의되어 있으나 IAM 커스텀 역할을 만들어 자체적인 권한 조합을 만들 수도 있습니다.

사전 정의된 역할

다음 IAM 역할은 Cloud Monitoring에서 사전 정의됩니다. 이 역할은 모니터링 관련 권한만 부여합니다.

모니터링

다음 역할은 일반적인 모니터링 권한을 부여합니다.

역할 ID
역할 이름
설명
roles/monitoring.viewer
모니터링 뷰어
Google Cloud Console 및 API에서 모니터링에 대한 읽기 전용 액세스 권한을 제공합니다.
roles/monitoring.editor
모니터링 편집자
Google Cloud Console 및 API에서 Monitoring에 대한 읽기/쓰기 액세스 권한을 제공하고
작업공간을 만들 수 있습니다.
roles/monitoring.admin
모니터링 관리자
Google Cloud Console에서 Monitoring에 대한 전체 액세스 권한을 부여하고 작업공간을 만들 수 있습니다.

쓰기 전용 액세스를 위해 서비스 계정에서 사용되는 역할은 다음과 같습니다.

역할 ID
역할 이름
설명
roles/monitoring.metricWriter
모니터링 측정항목 작성자
작업공간에 모니터링 데이터 쓰기를 허용합니다. Google Cloud Console에서 Monitoring에 대한 액세스를 허용하지 않습니다. 서비스 계정용입니다.

알림 정책

다음 역할은 알림 정책 관련 권한만 부여합니다.

역할 ID
역할 이름
설명
roles/monitoring.alertPolicyViewer
모니터링 알림 정책 뷰어
알림 정책에 대한 읽기 전용 액세스 권한을 제공합니다.
roles/monitoring.alertPolicyEditor
모니터링 알림 정책 편집자
알림 정책에 대한 읽기/쓰기 액세스 권한을 제공합니다.

대시보드

다음 역할은 대시보드에만 권한을 부여합니다.

역할 ID
역할 이름
설명
roles/monitoring.dashboardViewer
모니터링 대시보드 구성 뷰어
대시보드 구성에 대한 읽기 전용 액세스 권한을 제공합니다.
roles/monitoring.dashboardEditor
모니터링 대시보드 구성 편집자
대시보드 구성에 대한 읽기/쓰기 액세스 권한을 제공합니다.

알림 채널

다음 역할은 알림 채널 관련 권한만 부여합니다.

역할 ID
역할 이름
설명
roles/monitoring.notificationChannelViewer
모니터링 알림 채널 뷰어
알림 채널에 대한 읽기 전용 액세스 권한을 제공합니다.
roles/monitoring.notificationChannelEditor
모니터링 알림 채널 편집자
알림 채널에 대한 읽기/쓰기 액세스 권한을 제공합니다.

서비스 모니터링

다음 역할은 서비스 관리를 위한 권한을 부여합니다.

역할 ID
역할 이름
설명
roles/monitoring.servicesViewer
모니터링 서비스 뷰어
서비스에 대한 읽기 전용 액세스 권한을 제공합니다.
roles/monitoring.servicesEditor
모니터링 서비스 편집자
서비스에 대한 읽기/쓰기 액세스 권한을 제공합니다.

서비스 모니터링에 대한 자세한 내용은 SLO 모니터링을 참조하세요.

업타임 체크 구성

다음 역할은 업타임 체크 구성 관련 권한만 부여합니다.

역할 ID
역할 이름
설명
roles/monitoring.uptimeCheckConfigViewer
모니터링 업타임 체크 구성 뷰어
업타임 체크 구성에 대한 읽기 전용 액세스 권한을 제공합니다.
roles/monitoring.uptimeCheckConfigEditor
모니터링 업타임 체크 구성 편집기
업타임 체크 구성에 대한 읽기/쓰기 액세스 권한을 제공합니다.

작업공간

작업공간을 만들거나 관리하려면 Google Cloud Console을 사용해야 합니다. 작업공간을 만드는 데 필요한 역할에 대한 자세한 내용은 사전 정의된 Monitoring 역할을 참조하세요.

Google Cloud

다음 역할은 모니터링을 비롯한 Google Cloud의 여러 서비스 및 리소스에 대한 권한을 부여합니다.

역할 ID
역할 이름
설명
roles/viewer
프로젝트 뷰어
Google Cloud Console 및 API에서 모니터링에 대한 읽기 전용 액세스 권한을 제공합니다.
roles/editor
프로젝트 편집자
Google Cloud Console 및 API에서 Monitoring에 대한 읽기/쓰기 액세스 권한을 제공하고
기존 작업공간을 사용할 수 있습니다. 이 역할로 작업공간을 만들 수 없습니다.
roles/owner
프로젝트 소유자
Google Cloud Console 및 API에서 Monitoring에 대한 전체 액세스 권한을 제공하고
작업공간을 만들 수 있습니다.

커스텀 역할

권한 목록을 포함한 커스텀 역할을 만들 수도 있습니다. 역할과 권한에 대한 자세한 내용은 이 페이지의 권한 및 역할커스텀 역할을 참조하세요.

권한 및 역할

이 섹션에는 Monitoring에 적용되는 IAM 권한 및 역할이 나와 있습니다.

API 권한

Monitoring API 메서드마다 다음 표와 같은 특정 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.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에서 모니터링을 사용하는 데 필요한 권한이 나와 있습니다.

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
모니터링 뷰어
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
모니터링 편집자
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
모니터링 관리자
roles/monitoring.editor의 권한 및 다음과 같은 추가 권한:
monitoring.notificationChannels.getVerificationCode

쓰기 전용 액세스를 위해 서비스 계정에서 사용되는 역할은 다음과 같습니다.

역할 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
모니터링 AlertPolicy 뷰어
monitoring.alertPolicies.get
monitoring.alertPolicies.list
roles/monitoring.alertPolicyEditor
모니터링 AlertPolicy 편집자
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.get
monitoring.alertPolicies.list
monitoring.alertPolicies.update

대시보드

대시보드 역할에 포함된 권한은 다음과 같습니다.

역할 ID
역할 이름
포함된 권한
roles/monitoring.dashboardViewer
모니터링 대시보드 구성 뷰어
monitoring.dashboards.get
monitoring.dashboards.list
roles/monitoring.dashboardEditor
모니터링 대시보드 구성 편집자
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 Console을 사용해야 합니다. 작업공간을 만드는 데 필요한 역할에 대한 자세한 내용은 사전 정의된 Monitoring 역할을 참조하세요.

Google Cloud

Google Cloud 역할에 포함된 권한은 다음과 같습니다.

역할 ID
역할 이름
포함된 권한
roles/viewer
프로젝트 뷰어
Monitoring 권한은 roles/monitoring.viewer의 권한과 정확히 일치합니다.
roles/editor
프로젝트 편집자
Monitoring 권한은 roles/monitoring.editor의 권한과 동일합니다.
roles/owner
프로젝트 소유자
Monitoring 권한은 roles/editor의 권한과 동일합니다.

IAM 역할 부여

Compute Engine 및 App Engine의 프로젝트 소유자, 편집자, 기본 서비스 계정에는 이미 필요한 권한이 포함되어 있지만, 다른 사용자 계정에는 이러한 역할을 명시적으로 부여해야 할 수 있습니다.

예를 들어 사용자 계정이 Monitoring API를 사용하여 측정항목 설명을 읽거나 쓰려면 해당 사용자 계정에는 적절한 monitoring.metricDescriptors.* 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. 사용자가 구성원이 아닌 경우 다음 단계를 따르세요.

    1. 추가를 클릭합니다.
    2. 새 구성원 텍스트 상자에 사용자 이름을 입력합니다.
    3. 역할 선택에서 메뉴 를 클릭합니다.
    4. 필터 표시줄 에서 적절한 역할을 입력합니다.
      • 모니터링 편집자는 읽기/쓰기 액세스 권한을 부여합니다.
      • 모니터링 뷰어는 읽기 전용 액세스 권한을 부여합니다.

커스텀 역할

Monitoring 권한이 있는 커스텀 역할을 만드는 방법은 다음과 같습니다.

  • Monitoring API 관련 권한만 부여하는 역할이라면 API 권한 섹션의 권한 중에서 선택합니다.

  • Google Cloud Console에서 Monitoring에 대한 권한을 부여하는 역할은 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 API에 대한 전체 액세스 권한

자세한 내용은 액세스 범위를 참조하세요.

권장사항 서비스 계정 IAM 역할은 손쉽게 구성하고 변경할 수 있으므로, VM 인스턴스에 가장 강력한 액세스 범위(cloud-platform)를 제공한 후 IAM 역할을 사용하여 특정 API 및 작업에 대한 액세스 권한을 제한하는 것이 좋습니다. 자세한 내용은 서비스 계정 권한을 참조하세요.