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 프로젝트 수준에서 사전 정의된 역할을 부여하거나 또는 대부분의 경우 계층 구조에서 더 높은 유형을 부여할 수 있습니다. 버킷의 로그 뷰에 대한 로그 뷰 접근자 역할을 제한하려면 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.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.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.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.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.logScopes.get

logging.logScopes.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 IAM 역할을 부여합니다.

  • 사용자가 특정 로그 뷰에서만 로그를 읽을 수 있도록 하려면 다음 두 가지 옵션이 있습니다.

    • 로그 뷰에 대한 IAM 정책을 만든 후 주 구성원에 로그 뷰에 대한 액세스 권한을 부여하는 IAM 바인딩을 해당 정책에 추가합니다.

    • 로그 뷰가 포함된 프로젝트에 대한 roles/logging.viewAccessor IAM 역할을 주 구성원에게 부여하되 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 맞춤 역할 이해를 참조하세요.

Cloud Logging 권한

다음 표에는 Cloud Logging의 특정 기능에 필요한 권한의 일부 목록이 나와 있습니다. 이 표를 통해 로그 탐색기와 같은 페이지를 사용하는 데 필요한 권한을 확인할 수 있습니다.

이 표에서 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.logEntries.{list, download}

로그를 다운로드하려면 이러한 권한 중 하나만 있으면 됩니다. 로그를 다운로드할 권한이 포함된 역할은 프로젝트 수준에서 부여해야 합니다. 이러한 권한이 포함된 역할이 로그 뷰의 IAM 정책 파일에서 부여된 경우 로그를 다운로드할 수 없습니다.

기본 로그 범위 보기 observability.scopes.get
로그 제외 logging.exclusions.{list, create, get, update, delete}

제외 필터를 관리할 수 있는 권한이 포함된 커스텀 역할을 만들 때 logging.exclusions.* 권한을 추가하는 대신 logging.sinks.* 권한을 역할에 추가합니다.

싱크 만들기 및 사용 logging.sinks.{list, create, get, update, delete}

싱크를 만들 때는 서비스 계정에 대상에 로그 항목을 쓸 수 있는 IAM 역할도 부여해야 합니다. 자세한 내용은 대상 권한 설정을 참조하세요.

로그 항목이 지원되는 대상에 라우팅되면 로그 항목에 대한 액세스는 대상의 IAM 권한과 역할에 의해 전적으로 제어됩니다.

로그 기반 알림 만들기 로그 기반 알림 정책을 만들고 사용하는 데 필요한 역할을 참고하세요.
로그 기반 측정항목 만들기 logging.logMetrics.{list, create, get, update, delete}

로그 기반 측정항목을 만들고 사용하는 데 필요한 다른 IAM 역할에 대한 자세한 내용은 로그 기반 측정항목을 만들고 사용하는 데 필요한 역할을 참고하세요.

비공개 쿼리 저장 및 사용 logging.queries.usePrivate
logging.queries.{listShared,getShared}
공유 쿼리 저장 및 사용 logging.queries.{share, getShared, updateShared, deleteShared, listShared}
최근 쿼리 사용 logging.queries.{create, list}
기본 로그 범위 설정 및 관리 observability.scopes.{get, update}

명령줄에 대한 권한

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

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

또한 주 구성원은 로그 리소스와 사용 사례에 해당하는 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 역할과 권한이 필요합니다.

  • Monitoring에서 로그 기반 알림 정책을 만들고 연관된 Logging 알림 규칙을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.

    역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

    이러한 사전 정의된 역할에는 Monitoring에서 로그 기반 알림 정책을 만들고 연관된 Logging 알림 규칙을 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

    필수 권한

    Monitoring에서 로그 기반 알림 정책을 만들고 연관된 Logging 알림 규칙을 만들려면 다음 권한이 필요합니다.

    • monitoring.alertPolicies.create
    • logging.notificationRules.create

    커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

Google Cloud CLI에서 알림 정책을 만들 경우 다음 역할 또는 권한도 필요합니다.

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

    이 사전 정의된 역할에는 Google Cloud CLI를 사용하여 알림 정책을 만드는 데 필요한 serviceusage.services.use 권한이 포함되어 있습니다.

    커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

Google Cloud 프로젝트에 이미 알림 채널이 있으면 추가 역할 또는 권한 없이 기존 채널을 사용하도록 알림 정책을 구성할 수 있습니다. 하지만 로그 기반 알림 정책에 대해 알림 채널을 만들어야 하는 경우에는 다음 역할 또는 권한이 필요합니다.

  • 로그 기반 알림 정책에 대해 알림 채널을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대해 Monitoring 알림 채널 편집자(roles/monitoring.notificationChannelEditor) IAM 역할을 부여해 달라고 요청하세요.

    이 사전 정의된 역할에는 로그 기반 알림 정책에 대해 알림 채널을 만드는 데 필요한 monitoring.notificationChannels.create 권한이 포함되어 있습니다.

SQL 기반 알림 정책에 대한 권한

SQL 기반 알림 정책은 로그 항목 그룹의 데이터에 대해 실행된 SQL 쿼리의 결과를 평가합니다. SQL 기반 알림 정책을 만들고 관리하는 데 필요한 역할에 대한 자세한 내용은 알림 정책으로 SQL 쿼리 결과 모니터링시작하기 전 섹션을 참고하세요.

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

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