IAM으로 액세스 제어

이 문서에서는 Cloud Logging이 Identity and Access Management(IAM) 역할과 권한을 사용하여 로깅 리소스에 대한 액세스를 제어하는 방법을 이해하는 데 도움이 됩니다. IAM 역할에 따라 로그 싱크 또는 로그 버킷을 만들거나, 로그 버킷에 저장된 로그 데이터를 읽거나, 로그 탐색기와 같은 페이지에 액세스하는 등의 작업을 실행할 수 있는지 여부가 결정됩니다. Logging API 또는 Google Cloud CLI 명령어를 실행하는 경우 IAM 역할에 따라 명령어를 실행할 권한이 있는지 여부가 결정됩니다.

개요

IAM 역할에 따라 Logging 내에서 수행할 수 있는 작업이 결정됩니다. 역할권한 모음입니다. 주 구성원에게 역할을 부여하면 해당 역할에 포함된 모든 권한이 부여됩니다. 같은 주 구성원에 여러 역할을 부여할 수도 있습니다.

IAM 역할은 Trusted Cloud 프로젝트, 폴더, 버킷, 조직과 같은 리소스에 부여됩니다. 예를 들어 특정 Trusted Cloud 프로젝트에서 주 구성원에게 로그 뷰어 역할(roles/logging.viewer)을 부여할 수 있습니다.

이 페이지의 사전 정의된 역할로깅 역할 섹션에서는 로깅 역할 및 권한에 관한 포괄적인 정보를 제공합니다. 이 페이지의 다른 섹션에서는 특정 사용 사례의 역할 또는 권한에 관한 정보를 제공합니다.

이 섹션의 나머지 부분에서는 주 구성원에게 로그 버킷에 대한 액세스 권한을 부여하거나 로그 버킷의 일부 로그 항목에만 액세스 권한을 부여하는 방법을 요약합니다.

로그 버킷에 대한 액세스 권한 부여

로그 뷰어 역할(roles/logging.viewer)을 사용하면 주 구성원은 데이터 액세스 로그를 제외한 _Required_Default 로그 버킷에 저장된 모든 로그 데이터에 액세스할 수 있습니다. 주 구성원에게 데이터 액세스 로그에 액세스해야 하는 경우 비공개 로그 뷰어 역할(roles/logging.privateLogViewer)을 부여합니다.

커스텀 로그 버킷의 경우 _AllLogs 뷰 또는 커스텀 로그 뷰에 대한 액세스 권한을 부여할 수 있습니다. 로깅은 로그 버킷의 모든 로그 항목을 포함하는 _AllLogs 뷰를 자동으로 만듭니다. 로그 뷰에 대한 액세스 권한을 부여하려면 로그 뷰 또는 프로젝트에 연결된 IAM 정책에 IAM 바인딩을 추가합니다. 자세한 내용은 로그 뷰에 대한 액세스 제어를 참조하세요.

로깅은 로그 버킷의 태그도 지원하므로 비용을 파악하는 데 도움이 됩니다. 태그를 사용하여 사용자가 로그 버킷을 삭제하지 못하도록 할 수도 있습니다. 자세한 내용은 태그를 사용하여 로그 버킷에 대한 액세스 관리를 참조하세요.

로그 버킷의 일부 로그 항목에 대한 액세스 권한 부여

주 구성원에게 로그 버킷에 저장된 일부 로그 항목에만 액세스 권한을 부여하려면 로그 뷰를 만든 후 주 구성원에게 로그 뷰에 대한 액세스 권한을 부여합니다. 예를 들어 리소스 유형이 Compute Engine 인스턴스인 로그 항목만 포함하는 _Default 로그 버킷에 로그 뷰를 만들 수 있습니다. 로그 뷰를 만들고 뷰에 대한 액세스 권한을 부여하는 데 사용할 수 있는 다양한 전략에 대해 자세히 알아보려면 로그 버킷에서 로그 뷰 구성을 참조하세요.

사전 정의된 역할

IAM은 특정 Trusted Cloud 리소스에 대한 세분화된 액세스 권한을 부여하고 다른 리소스에 대한 무단 액세스를 방지할 수 있는 사전 정의된 역할을 제공합니다. Trusted Cloud by S3NS 는 이러한 역할을 만들고 유지하며 Logging에서 새 기능을 추가하는 경우와 같이 필요에 따라 자동으로 권한을 업데이트합니다.

다음 표에서는 Logging을 위해 사전 정의된 역할을 보여줍니다. 이 표에서는 각 역할에 대해 역할 제목, 설명, 포함된 권한, 역할을 부여할 수 있는 최저 수준의 리소스 유형을 보여줍니다. Trusted 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.operations.get

logging.operations.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.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

(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 조건을 연결하여 해당 로그 뷰에 대한 권한 부여를 제한합니다.

    로그 뷰를 만들고 액세스 권한을 부여하는 방법에 대한 자세한 내용은 로그 버킷에서 로그 뷰 구성을 참조하세요.

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

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

프로젝트 수준 역할

  • 대부분의 Trusted Cloud by S3NS 서비스에 대한 보기 액세스 권한을 부여하려면 뷰어(roles/viewer) 역할을 부여합니다.

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

  • 대부분의 Trusted Cloud by S3NS 서비스에 대한 편집자 액세스 권한을 부여하려면 편집자(roles/editor) 역할을 부여합니다.

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

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

역할 부여

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

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

Trusted 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.sinks.{list, get}
로그 사용량 보기 logging.usage.get
로그 다운로드 logging.logEntries.{list, download}

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

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

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

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

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

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

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

명령줄에 대한 권한

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

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

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