IAM으로 액세스 제어

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

개요

IAM 권한역할에 따라 Logging API, 로그 탐색기, 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.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

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.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.usage.get

logging.views.*

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

observability.scopes.get

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.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

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.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(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.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

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) 역할을 부여하세요. 특정 로그 버킷의 특정 로그 뷰에 대한 승인을 제한할 수 있습니다. 로그 뷰를 만들고 액세스 권한을 부여하는 방법에 대한 자세한 내용은 로그 버킷에서 로그 뷰 구성을 참조하세요.

  • 사용자에게 주어진 버킷에서 제한된 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 맞춤 역할 이해를 참조하세요.

Google Cloud 콘솔에 대한 권한

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

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

콘솔 활동 필수 권한
최소한의 읽기 전용 액세스 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, getShared, updateShared, deleteShared, listShared} 추가
최근 쿼리를 사용하는 기능 추가 logging.queries.{create, list} 추가

명령줄에 대한 권한

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

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

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

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

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

쿼리 저장 권한

이 섹션에서는 사전 정의된 역할 및 로그 탐색기 또는 로그 애널리틱스 페이지의 쿼리 저장, 공유, 사용 권한에 대해 설명합니다 자신에게만 표시되는 비공개 저장된 쿼리를 사용하는 것과 Google Cloud 프로젝트의 다른 구성원과 공유되는 저장된 쿼리를 사용하는 것은 다른 권한이 필요합니다.

  • 비공개 저장된 쿼리를 사용하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 로그 뷰어(roles/logging.viewer) IAM 역할을 부여해 달라고 요청하세요.

    이 사전 정의된 역할에는 비공개 저장된 쿼리를 사용하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

    필수 권한

    비공개 저장된 쿼리를 사용하려면 다음 권한이 필요합니다.

    • logging.queries.list
    • logging.queries.create
    • logging.queries.get
    • logging.queries.update
    • logging.queries.delete
  • 공유 쿼리를 생성, 업데이트, 삭제하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Logging 관리자(roles/logging.admin) IAM 역할을 부여해 달라고 요청하세요.

    이 사전 정의된 역할에는 공유 쿼리를 생성, 업데이트, 삭제하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

    필수 권한

    공유 쿼리를 생성, 업데이트, 삭제하려면 다음 권한이 필요합니다.

    • logging.queries.share
    • logging.queries.updateShared
    • logging.queries.deleteShared
  • 공유 쿼리를 나열하고 가져오는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 로그 뷰어(roles/logging.viewer) IAM 역할을 부여해 달라고 요청하세요.

    이 사전 정의된 역할에는 공유 쿼리를 나열하고 가져오는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

    필수 권한

    공유 쿼리를 나열하고 가져오려면 다음 권한이 필요합니다.

    • logging.queries.listShared
    • logging.queries.getShared

로그 라우팅에 대한 권한

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

제외 필터 관리는 싱크 구성과 통합됩니다. 제외 필터 설정을 포함하여 싱크 관리와 관련된 모든 권한이 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) 역할에는 TimeSeries 데이터를 읽을 수 있는 권한이 포함되어 있습니다. 특히 주 구성원이 시계열 데이터를 읽으려면 monitoring.timeSeries.list 권한이 필요합니다.

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

로그 기반 알림 정책에 대한 권한

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

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

    이 사전 정의된 역할에는 로그를 읽고 Logging 알림 규칙을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

    필수 권한

    로그를 읽고 Logging 알림 규칙을 관리하려면 다음 권한이 필요합니다.

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

    이러한 사전 정의된 역할에는 로그 기반 알림 정책과 알림 채널을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

    필수 권한

    로그 기반 알림 정책과 알림 채널을 관리하려면 다음 권한이 필요합니다.

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

    이 사전 정의된 역할에는 Google Cloud CLI에서 알림 정책을 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

    필수 권한

    Google Cloud CLI에서 알림 정책을 만들려면 다음 권한이 필요합니다.

    • logging.queries.listShared
    • logging.queries.getShared

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에 대한 전체 액세스 권한

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