이 페이지에서는 Cloud Logging이 ID 및 액세스 관리(IAM)를 사용하여 Google Cloud 리소스의 로깅 데이터에 대한 액세스를 제어하는 방법을 설명합니다.
개요
IAM 권한 및 역할에 따라 Logging API, 로그 탐색기, gcloud
명령줄 도구 사용 방법이 결정됩니다.
로그는 Google Cloud 프로젝트, 조직, 폴더, 결제 계정 내 로그 버킷에 있습니다. 이러한 각 Google Cloud 리소스에는 고유한 Cloud Logging 역할 및 권한 집합이 있는 자체 구성원 집합이 있을 수 있습니다.
Google Cloud 프로젝트에서 로깅 데이터와 함께 Logging을 사용하려는 사용자는 Logging 사용 권한을 부여하는 IAM 역할이 할당된 구성원이어야 합니다. Logging에 적용되는 IAM 역할은 다음과 같습니다.
roles/logging.viewer(로그 뷰어)는 액세스 투명성 로그와 데이터 액세스 감사 로그를 제외한 모든 Logging 기능에 대한 읽기 전용 액세스 권한을 부여합니다.
roles/logging.privateLogViewer(비공개 로그 뷰어)에는 roles/logging.viewer의 권한과 함께 액세스 투명성 로그 및 데이터 액세스 감사 로그를 읽을 수 있는 권한이 있습니다. 이 역할은
_Required
및_Default
버킷에만 적용됩니다.roles/logging.logWriter(로그 작성자)는 서비스 계정에 부여되어, 애플리케이션에 로그를 작성하는 데 필요한 권한만 부여합니다. 이 역할은 보기 권한을 부여하지 않습니다.
로그 버킷에 로그를 기록하기 위해 충분한 권한을 Cloud Logging에 제공할 수 있도록 roles/logging.bucketWriter(로그 버킷 작성자)를 서비스 계정에 부여할 수 있습니다. 이 역할을 특정 버킷으로 제한하기 위해서는 IAM 조건을 사용합니다. 예시는 프로젝트의 로그를 다른 프로젝트의 다른 버킷으로 라우팅을 참조하세요.
roles/logging.configWriter(로그 구성 작성자)는 로그 기반 측정항목, 제외, 버킷, 보기를 만들고 싱크를 내보낼 수 있는 권한을 부여합니다. 이러한 작업에 로그 탐색기(Console)를 사용하려면 roles/logging.viewer를 추가하세요.
roles/logging.admin(Logging 관리자)은 Logging과 관련된 모든 권한을 부여합니다.
roles/logging.viewAccessor(로그 뷰 접근자)는 뷰에서 로그를 읽을 수 있는 권한을 제공합니다. 이 역할을 특정 버킷의 뷰로 제한하려면 IAM 조건을 사용합니다. 예시는 버킷에서 로그 읽기를 참조하세요.
roles/viewer(프로젝트 뷰어)는 roles/logging.viewer와 동일합니다. 이 역할은 액세스 투명성 로그와 데이터 액세스 감사 로그를 제외한 모든 Logging 기능에 대한 읽기 전용 액세스 권한을 부여합니다. 이 역할은
_Required
및_Default
버킷에만 적용됩니다.roles/editor(프로젝트 편집자)에는 roles/logging.viewer의 권한과 함께 로그 항목을 작성하고, 로그를 삭제하고, 로그 기반 측정항목을 만들 수 있는 권한이 있습니다. 이 역할이 할당된 사용자는 내보내기 싱크를 만들거나 액세스 투명성 로그 또는 데이터 액세스 감사 로그를 읽을 수는 없습니다.
roles/owner(프로젝트 소유자)는 액세스 투명성 로그와 데이터 액세스 감사 로그를 비롯하여 Logging에 대한 전체 액세스 권한을 부여합니다.
Logging 역할 및 권한에 관한 자세한 내용은 이 페이지의 권한 및 역할을 참조하세요.
역할 부여
구성원에게 역할을 부여하려면 roles/owner(프로젝트 소유자)가 갖는 모든 권한을 갖고 있어야 합니다. 역할 부여 방법을 알아보려면 액세스 권한 부여, 변경, 취소를 참조하세요.
Google Cloud 리소스에 액세스하려는데 필요한 권한이 없다면 리소스의 소유자로 등록된 구성원에게 문의하세요.
권한 및 역할
다음 표에는 Cloud Logging에 대한 액세스 권한을 부여하는 IAM 역할이 나와 있습니다. 각 역할마다 특정한 로깅 권한 세트가 있습니다. 여기에 나열된 리소스 유형의 멤버에게 역할을 할당할 수 있습니다.
이 표에서 a.b.{x,y}
는 a.b.x
및 a.b.y
를 의미합니다.
역할 이름 | 역할 칭호 | Logging 권한 | 리소스 유형 |
---|---|---|---|
roles/ logging.viewer |
로그 뷰어 | logging.logEntries.list logging.logMetrics. {list ,
get }logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.sinks. {list ,
get }logging.buckets. {list ,
get }logging.usage.get resourcemanager.projects.get logging.queries. {get ,
list ,
update ,
create ,
delete }
|
프로젝트, 조직, 폴더, 결제 계정 |
roles/ logging.privateLogViewer |
비공개 로그 뷰어 | roles/logging.viewer 권한과 다음 권한 추가:logging.privateLogEntries.list |
프로젝트, 조직, 폴더, 결제 계정 |
roles/ logging.logWriter
|
로그 작성자 | logging.logEntries.create |
프로젝트, 조직, 폴더, 결제 계정 |
roles/ logging.configWriter |
로그 구성 작성자 | logging.buckets. {list ,
create ,
get ,
update ,
delete ,
undelete }logging.cmekSettings. {get ,
update }logging.exclusions. {list ,
create ,
get ,
update ,
delete }logging.locations. {list ,
get }logging.logMetrics. {list ,
create ,
get ,
update ,
delete }logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.sinks. {list ,
create ,
get ,
update ,
delete }logging.views. {list ,
create ,
get ,
update ,
delete }resourcemanager.projects. {get ,
list }
|
프로젝트, 조직, 폴더, 결제 계정 |
roles/ logging.bucketWriter |
로그 버킷 작성자 | logging.buckets.write |
프로젝트 |
roles/ logging.viewAccessor |
로그 뷰어 접근자 | logging.views. {access ,
listLogs ,
listResourceKeys ,
listResourceValues } |
프로젝트, 조직, 폴더, 결제 계정 |
roles/ logging.admin |
Logging 관리자 | logging.exclusions. {list ,
create ,
get ,
update ,
delete }logging.locations. {list ,
get }logging.logEntries. {create ,
list }logging.logMetrics. {list ,
create ,
get ,
update ,
delete }logging.logs. {delete ,
list } logging.logServiceIndexes.list logging.logServices.list logging.privateLogEntries.list logging.sinks. {list ,
create ,
get ,
update ,
delete }logging.buckets. {list ,
get ,
update ,
create ,
delete ,
undelete }logging.views. {list ,
access ,
create ,
get ,
update ,
delete ,
listLogs ,
listResourceKeys ,
listResourceValues }logging.cmekSettings. {get ,
update }logging.usage.get resourcemanager.projects. {get ,
list }logging.queries. {get ,
list ,
update ,
create ,
delete ,
share ,
updateShared ,
listShared } |
프로젝트, 조직, 폴더, 결제 계정 |
roles/viewer |
뷰어 | logging.logEntries.list logging.logMetrics. {list ,
get }logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.sinks. {list ,
get }resourcemanager.projects.get logging.queries. {get ,
list ,
update ,
create ,
delete ,
listShared } |
프로젝트, 조직, 폴더 |
roles/editor |
편집자 | roles/viewer Logging 권한과 다음 권한 추가:logging.logEntries.create logging.logMetrics. {create ,
update ,
delete }logging.logs.delete logging.queries. {get ,
list ,
update ,
create ,
delete ,
listShared } |
프로젝트, 조직, 폴더 |
roles/owner |
소유자 | roles/editor Logging 권한과 다음 권한 추가:logging.privateLogEntries.list logging.sinks. {create ,
update ,
delete }logging.queries. {get ,
list ,
update ,
create ,
delete ,
share ,
updateShared ,
listShared } |
프로젝트, 조직, 폴더 |
커스텀 역할
Logging 권한이 있는 커스텀 역할을 만들려면 다음과 같이 하세요.
Logging API에 대한 권한을 부여하는 역할이라면 API 권한의 권한 중에서 선택합니다.
로그 탐색기 사용 권한을 부여하는 역할이라면 Console 권한의 권한 그룹 중에서 선택합니다.
gcloud logging
사용 권한을 부여하는 역할이라면gcloud
도구의 개요로 이동합니다.
커스텀 역할에 대한 자세한 내용은 IAM 커스텀 역할 이해를 참조하세요.
API 권한
Logging API 메서드에는 특정 IAM 권한이 필요합니다. 다음 표에는 API 메서드별로 필요한 권한이 나와 있습니다.
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 |
프로젝트 |
콘솔 권한
다음 표에는 로그 탐색기를 사용하는 데 필요한 권한이 나와 있습니다.
이 표에서 a.b.{x,y}
는 a.b.x
및 a.b.y
를 의미합니다.
Console 활동 | 필수 권한 |
---|---|
최소한의 읽기 전용 액세스 | logging.logEntries.list logging.logs.list logging.logServiceIndexes.list logging.logServices.list resourcemanager.projects.get |
데이터 액세스 감사 로그를 보는 기능 추가 | logging.privateLogEntries.list 추가 |
액세스 투명성 로그를 볼 수 있는 기능 추가 | 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 } 추가 |
명령줄 권한
gcloud logging
명령어는 IAM 권한에 따라 제어됩니다.
gcloud logging
명령어를 사용하려면 serviceusage.services.use
권한이 있어야 합니다.
또한 로그 위치와 사용 사례에 해당하는 IAM 역할이 있어야 합니다. 자세한 내용은 명령줄 인터페이스 권한을 참조하세요.
내보낸 로그에 대한 액세스
로그를 내보내기 위해 싱크를 만들려면 roles/logging.configWriter
, roles/logging.admin
또는 roles/owner
의 권한이 있어야 합니다.
싱크는 로그 내보내기를 시작한 후부터 모든 수신 로그 항목에 대한 전체 액세스 권한을 갖습니다. 싱크는 액세스 투명성 로그와 데이터 액세스 감사 로그를 비롯한 비공개 로그 항목을 내보낼 수 있습니다.
로그 항목을 내보낸 후 내보낸 사본에 대한 액세스는 전적으로 대상 위치(Cloud Storage, BigQuery, Pub/Sub)에서의 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에 대한 전체 액세스 권한 |
권장사항
이제 IAM 역할을 사용할 수 있으므로 모든 VM 인스턴스에 '사용 설정된 모든 Google Cloud API에 대한 전체 액세스 권한' 범위를 제공하는 것이 좋습니다.
https://www.googleapis.com/auth/cloud-platform
VM 인스턴스의 서비스 계정에 특정 IAM 역할을 부여하여 특정 API에 대한 액세스를 제한할 수 있습니다. 자세한 내용은 서비스 계정 권한을 참조하세요.
제외 관리 권한이 포함된 커스텀 역할을 만들 때는
logging.exclusions.*
권한을 부여하는 대신logging.sinks.*
권한을 역할에 부여하는 것이 좋습니다.제외 관리는 로그 싱크의 일부이므로, 제외를 포함하여 싱크 관리와 관련된 모든 권한이
logging.sinks.*
권한에 포함됩니다.