IAM으로 액세스 제어

이 문서에서는 Identity and Access Management(IAM) 역할과 권한을 사용하여 Logging API, 로그 탐색기, Google Cloud CLI의 로그 데이터에 대한 액세스를 제어하는 방법을 설명합니다.

개요

IAM 권한역할에 따라 Logging API, Logs Explorer, Google Cloud CLI의 로그 데이터에 액세스할 수 있는지 여부가 결정됩니다.

역할은 권한 모음입니다. 주 구성원에게 직접 권한을 부여할 수 없지만 대신 역할을 부여합니다. 주 구성원에게 역할을 부여하면 해당 역할에 포함된 모든 권한이 부여됩니다. 같은 주 구성원에 여러 역할을 부여할 수도 있습니다.

Google Cloud 프로젝트, 폴더, 버킷 또는 조직과 같은 Google Cloud 리소스 내에서 Logging을 사용하려면 주 구성원에게 적절한 권한이 포함된 IAM 역할이 있어야 합니다.

사전 정의된 역할

IAM은 특정 Google Cloud 리소스에 대한 세분화된 액세스 권한을 부여하고 다른 리소스에 대한 무단 액세스를 방지하도록 사전 정의된 역할을 부여합니다. Google Cloud는 이러한 역할을 생성 및 유지하고 Logging에서 새 기능을 추가하는 경우와 같이 필요에 따라 자동으로 권한을 업데이트합니다.

다음 표에서는 Logging을 위해 사전 정의된 역할을 보여줍니다. 이 표에서는 각 역할에 대해 역할 제목, 설명, 포함된 권한, 역할을 부여할 수 있는 최저 수준의 리소스 유형을 보여줍니다. Google Cloud 프로젝트 수준에서 사전 정의된 역할을 부여하거나 또는 대부분의 경우 Google Cloud 계층 구조에서 더 높은 유형을 부여할 수 있습니다. 버킷 수준에 대해 더 밀접하게 로그 뷰 접근자 역할의 범위를 지정하려면 IAM 조건에 대한 리소스 속성을 사용합니다.

역할에 포함된 모든 개별 권한의 목록을 가져오려면 역할 메타데이터 가져오기를 참조하세요.

Role Permissions

(roles/logging.admin)

Provides all permissions necessary to use all features of Cloud Logging.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.copyLogEntries

logging.buckets.create

logging.buckets.delete

logging.buckets.get

logging.buckets.list

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.fields.access

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.*

  • logging.logEntries.create
  • logging.logEntries.download
  • logging.logEntries.list
  • logging.logEntries.route

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.*

  • logging.logs.delete
  • logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.privateLogEntries.list

logging.queries.*

  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.update
  • logging.queries.updateShared

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.usage.get

logging.views.*

  • logging.views.access
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • logging.views.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.write

(roles/logging.configWriter)

Provides permissions to read and write the configurations of logs-based metrics and sinks for exporting logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.create

logging.buckets.delete

logging.buckets.get

logging.buckets.list

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.list

logging.views.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.fieldAccessor)

Ability to read restricted fields in a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.fields.access

(roles/logging.linkViewer)

Ability to see links for a bucket.

logging.links.get

logging.links.list

(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.create

logging.logEntries.route

(roles/logging.privateLogViewer)

Provides permissions of the Logs Viewer role and in addition, provides read-only access to log entries in private logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.privateLogEntries.list

logging.queries.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

resourcemanager.projects.get

(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

resourcemanager.projects.get

다음 섹션에서는 주 구성원의 사용 사례에 어떤 역할을 적용할지 판단하는 데 도움이 되는 추가적인 정보를 제공합니다.

Logging 역할

  • 사용자가 Logging에서 모든 작업을 수행할 수 있도록 하려면 Logging 관리자(roles/logging.admin) 역할을 부여하세요.

  • 사용자가 싱크, 버킷, 뷰, 링크, 로그 기반 측정항목 또는 제외와 같은 로깅 구성을 만들고 수정할 수 있도록 허용하려면 로그 구성 작성자(roles/logging.configWriter) 역할을 부여하세요.

  • 사용자가 _Required_Default 버킷에서 로그를 읽을 수 있도록 하려면 로그 탐색기와 로그 분석 페이지를 사용하여 다음 역할 중 하나를 부여하세요.

    • _Required 버킷의 모든 로그에 액세스하고 _Default 버킷의 _Default 뷰에 액세스하려면 로그 뷰어(roles/logging.viewer) 역할을 부여합니다.
    • 데이터 액세스 로그를 포함하여 _Required_Default 버킷의 모든 로그에 액세스하려면 비공개 로그 뷰어(roles/logging.privateLogViewer) 역할을 부여합니다.
  • 사용자가 사용자 정의 버킷에 저장된 로그를 읽을 수 있게 하려면 로그 뷰 접근자(roles/logging.viewAccessor) 역할을 부여합니다. IAM 조건을 사용하여 특정 버킷의 특정 로그 뷰에 대한 승인을 제한할 수 있습니다. 로그 뷰에 액세스 권한 부여를 참조하세요.

  • 사용자에게 주어진 버킷에서 제한된 LogEntry 필드(있는 경우)에 대한 액세스 권한을 주려면 로그 필드 접근자(roles/logging.fieldAccessor) 역할을 부여합니다. 자세한 내용은 필드 수준 액세스 구성을 참조하세요.

  • 사용자가 Logging API를 사용하여 로그를 작성할 수 있게 하려면 로그 작성자(roles/logging.logWriter) 역할을 부여합니다. 이 역할은 보기 권한을 부여하지 않습니다.

  • 싱크의 서비스 계정이 다른 Google Cloud 프로젝트의 버킷으로 로그를 라우팅하도록 하려면 서비스 계정에 로그 버킷 작성자(roles/logging.bucketWriter) 역할을 부여합니다. 서비스 계정에 권한을 부여하는 방법은 대상 권한 설정을 참조하세요.

프로젝트 수준 역할

  • 대부분의 Google Cloud 서비스에 대한 뷰 액세스 권한을 부여하려면 뷰어(roles/viewer) 역할을 부여하세요.

    이 역할에는 로그 뷰어(roles/logging.viewer) 역할에 부여되는 모든 권한이 포함됩니다.

  • 대부분의 Google Cloud 서비스에 대한 편집자 액세스 권한을 부여하려면 편집자(roles/editor) 역할을 부여하세요.

    이 역할에는 로그 뷰어(roles/logging.viewer) 역할에 부여되는 모든 권한과 로그 항목을 작성하고, 로그를 삭제하고, 로그 기반 측정항목을 만들 수 있는 권한이 포함됩니다. 하지만 이 역할에서는 사용자가 싱크를 만들거나, _Default 버킷에 있는 데이터 액세스 감사 로그를 읽거나, 사용자 정의 로그 버킷에 있는 로그를 읽을 수 없습니다.

  • 대부분의 Google Cloud 서비스에 대한 전체 액세스 권한을 부여하려면 소유자(roles/owner) 역할을 부여하세요.

역할 부여

주 구성원에게 역할을 부여하는 방법은 액세스 권한 부여, 변경, 취소를 참조하세요.

같은 사용자에 여러 역할을 부여할 수도 있습니다. 역할에 포함된 권한 목록을 보려면 역할 메타데이터 가져오기를 참조하세요.

Google Cloud 리소스에 액세스하려고 하지만 필요한 권한이 없으면 리소스의 소유자로 나와 있는 주 구성원에게 문의하세요.

커스텀 역할

Logging 권한이 있는 맞춤 역할을 만들려면 다음과 같이 하세요.

맞춤 역할에 대한 자세한 내용은 IAM 맞춤 역할 이해를 참조하세요.

Logging API에 대한 권한

Logging API 메서드에는 특정 IAM 권한이 필요합니다. 다음 표에는 API 메서드별로 필요한 권한이 나와 있습니다.

Google Cloud 조직, 결제 계정, 폴더에 보관된 로그에 관심이 있다면 이러한 리소스에는 logssinks에 대한 고유한 API 메서드가 있다는 점에 유의하세요. 이 표에는 모든 메서드가 반복 표시되지 않으며 projects 메서드만 개별적으로 표시되어 있습니다.

Logging 메서드 필요한 권한 리소스 유형
billingAccounts.logs.* logging.logs.*(projects.logs.* 참조) 결제 계정
billingAccounts.sinks.* logging.sinks.*(projects.sinks.* 참조) 결제 계정
billingAccounts.locations.buckets.* logging.buckets.*(projects.locations.buckets.* 참조) 결제 계정
entries.list logging.logEntries.list 또는
logging.privateLogEntries.list
프로젝트, 조직,
폴더, 결제 계정
entries.tail logging.logEntries.list 또는
logging.privateLogEntries.list
프로젝트, 조직,
폴더, 결제 계정
entries.write logging.logEntries.create 프로젝트, 조직,
폴더, 결제 계정
folders.logs.* logging.logs.*(projects.logs.* 참조) 폴더
folders.sinks.* logging.sinks.*(projects.sinks.* 참조) 폴더
folders.locations.buckets.* logging.buckets.*(projects.locations.buckets.* 참조) 폴더
monitoredResourceDescriptors.list (없음) (없음)
organizations.logs.* logging.logs.*(projects.logs.* 참조) 조직
organizations.sinks.* logging.sinks.*(projects.sinks.* 참조) 조직
organizations.locations.buckets.* logging.buckets.*(projects.locations.buckets.* 참조) 조직
projects.exclusions.create logging.exclusions.create 프로젝트
projects.exclusions.delete logging.exclusions.delete 프로젝트
projects.exclusions.get logging.exclusions.get 프로젝트
projects.exclusions.list logging.exclusions.list 프로젝트
projects.exclusions.patch logging.exclusions.update 프로젝트
projects.logs.list logging.logs.list 프로젝트
projects.logs.delete logging.logs.delete 프로젝트
projects.sinks.list logging.sinks.list 프로젝트
projects.sinks.get logging.sinks.get 프로젝트
projects.sinks.create logging.sinks.create 프로젝트
projects.sinks.update logging.sinks.update 프로젝트
projects.sinks.delete logging.sinks.delete 프로젝트
projects.locations.buckets.list logging.buckets.list 프로젝트
projects.locations.buckets.get logging.buckets.get 프로젝트
projects.locations.buckets.patch logging.buckets.update 프로젝트
projects.locations.buckets.create logging.buckets.create 프로젝트
projects.locations.buckets.delete logging.buckets.delete 프로젝트
projects.locations.buckets.undelete logging.buckets.undelete 프로젝트
projects.metrics.list logging.logMetrics.list 프로젝트
projects.metrics.get logging.logMetrics.get 프로젝트
projects.metrics.create logging.logMetrics.create 프로젝트
projects.metrics.update logging.logMetrics.update 프로젝트
projects.metrics.delete logging.logMetrics.delete 프로젝트

Google Cloud console에 대한 권한

다음 표에는 로그 탐색기를 사용하는 데 필요한 권한이 나와 있습니다.

이 표에서 a.b.{x,y}a.b.xa.b.y를 의미합니다.

Console 활동 필수 권한
최소한의 읽기 전용 액세스 logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
데이터 액세스 감사 로그를 보는 기능 추가 logging.privateLogEntries.list 추가
로그 기반 측정항목을 볼 수 있는 기능 추가 logging.logMetrics.{list, get} 추가
싱크를 볼 수 있는 기능 추가 logging.sinks.{list, get} 추가
로그 사용량을 보는 기능 추가 logging.usage.get 추가
로그를 제외하는 기능 추가 logging.exclusions.{list, create, get, update, delete} 추가
싱크를 사용할 수 있는 기능 추가 logging.sinks.{list, create, get, update, delete} 추가
로그 기반 측정항목을 만드는 기능 추가 logging.logMetrics.{list, create, get, update, delete} 추가
쿼리를 저장하는 기능 추가 logging.queries.{list, create, get, update, delete} 추가
쿼리를 공유하는 기능 추가 logging.queries.share 추가
최근 쿼리를 사용하는 기능 추가 logging.queries.{create, list} 추가

명령줄에 대한 권한

gcloud logging 명령어는 IAM 권한에 따라 제어됩니다.

gcloud logging 명령어를 사용하려면 주 구성원에게 serviceusage.services.use 권한이 있어야 합니다.

또한 주 구성원은 로그 리소스와 사용 사례에 해당하는 IAM 역할이 있어야 합니다. 자세한 내용은 명령줄 인터페이스 권한을 참조하세요.

다음 목록은 연결된 BigQuery 데이터 세트를 관리하기 위한 사전 정의된 역할과 해당 권한을 설명합니다.

앞에서 나열한 역할 및 권한은 로그 애널리틱스 페이지 등의 Logging 페이지에만 적용됩니다. BigQuery 인터페이스를 사용하여 데이터 세트를 관리하는 경우 별도의 BigQuery 역할 및 권한이 필요할 수 있습니다. 자세한 정보는 BigQuery용 IAM으로 액세스 제어를 참조하세요.

로그 라우팅에 대한 권한

로그를 라우팅하기 위한 싱크를 만들고 관리할 때 액세스 제어를 설정하는 방법에 대한 자세한 내용은 대상 권한 설정을 참조하세요.

제외 필터 관리는 싱크 구성과 통합됩니다. 제외 필터 설정을 포함하여 싱크 관리와 관련된 모든 권한이 logging.sinks.* 권한에 포함됩니다. 제외 필터를 관리할 수 있는 권한이 포함된 커스텀 역할을 만들 때 logging.exclusions.* 권한을 추가하는 대신 logging.sinks.* 권한을 역할에 추가합니다.

로그 항목이 지원 대상으로 라우팅되면 로그 복사본에 대한 액세스는 대상(Cloud Storage, BigQuery 또는 Pub/Sub)에서 IAM 권한과 역할에 의해 전적으로 제어됩니다.

로그 기반 측정항목에 대한 권한

다음은 주 구성원이 로그 기반 측정항목에 액세스하기 위해 필요한 일반적인 역할 및 권한을 요약해서 보여줍니다.

  • 로그 구성 작성자(roles/logging.configWriter) 역할을 통해 주 구성원은 로그 기반 측정항목을 나열, 만들기, 가져오기, 업데이트 및 삭제할 수 있습니다.

  • 로그 뷰어(roles/logging.viewer) 역할에는 기존 측정항목을 볼 수 있는 권한이 포함됩니다. 특히 주 구성원이 기존 측정항목을 보려면 logging.logMetrics.getlogging.logMetrics.list 권한이 필요합니다.

  • 모니터링 뷰어(roles/monitoring.viewer) 역할에는 시계열 데이터를 읽을 수 있는 권한이 포함되어 있습니다. 특히 주 구성원이 시계열 데이터를 읽으려면 monitoring.timeSeries.list 권한이 필요합니다.

  • Logging 관리자(roles/logging.admin), 프로젝트 편집자(roles/editor), 프로젝트 소유자(roles/owner) 역할에는 로그 기반 측정항목을 만들 수 있는 권한이 포함되어 있습니다. 특히 주 구성원이 로그 기반 측정항목을 만들려면 logging.logMetrics.create 권한이 필요합니다.

로그 기반 알림에 대한 권한

로그 기반 알림을 만들고 관리하려면 주 구성원에게 다음 Logging 및 Monitoring 역할 및 권한이 필요합니다.

  • 로그를 읽고 Logging 알림 규칙을 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Logging 관리자(roles/logging.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

  • 로그 기반 알림에 사용되는 알림 정책 및 채널을 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

  • Google Cloud CLI에서 알림 정책을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 서비스 사용량 소비자(roles/serviceusage.serviceUsageConsumer) IAM 역할을 부여해 달라고 요청하세요.

Logging 액세스 범위

액세스 범위는 Compute Engine VM 인스턴스에서 서비스 계정에 권한을 지정하는 기존 방법입니다.

Logging API에는 다음과 같은 액세스 범위가 적용됩니다.

액세스 범위 부여된 권한
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin Logging API에 대한 전체 액세스 권한
https://www.googleapis.com/auth/cloud-platform Logging API와 기타 사용 설정된 모든 Google Cloud API에 대한 전체 액세스 권한

이 기존 메서드를 사용하여 서비스 계정의 액세스 수준을 설정하는 방법은 서비스 계정 권한을 참조하세요.