액세스 제어

이 페이지에서는 BigQuery와 BigQuery Data Transfer Service에서 사용할 수 있는 액세스 제어에 대한 포괄적인 참조 정보를 제공합니다.

BigQuery ML의 액세스 제어에 대한 자세한 내용은 BigQuery ML 문서의 액세스 제어를 참조하세요.

개요

BigQuery는 IAM(ID 및 액세스 관리)을 사용하여 리소스에 대한 액세스를 관리합니다. BigQuery에서 제공되는 세 가지 리소스 유형은 조직, 프로젝트, 데이터세트입니다. IAM 정책 계층구조에서 데이터세트는 프로젝트의 하위 리소스입니다. 테이블과 보기는 데이터세트의 하위 리소스이며, 상위 데이터세트로부터 권한을 상속합니다.

리소스에 대한 액세스 권한을 부여하려면 사용자, 그룹 또는 서비스 계정역할을 하나 이상 할당합니다. 조직 및 프로젝트 역할은 작업 실행 또는 프로젝트 리소스 관리 능력에 영향을 주지만, 데이터세트 역할은 특정 데이터세트의 내부 데이터에 액세스하거나 이를 수정하는 기능에 영향을 줍니다.

IAM은 사전 정의된 역할과 기본 역할 등 두 가지 역할 유형을 제공합니다. 사전 정의된 역할과 기본 역할을 모두 한 사용자에게 할당할 경우, 각 역할의 권한이 통합되어 부여됩니다.

권한 및 역할

사전 정의된 역할 비교 표

다음과 같은 사전 정의된 BigQuery 역할을 할당할 수 있습니다.

기능 dataViewer dataEditor dataOwner metadataViewer user jobUser admin
프로젝트 나열/가져오기
테이블 나열
테이블 메타데이터 가져오기
테이블 데이터 가져오기
테이블 만들기
테이블 수정/삭제
데이터세트 메타데이터 가져오기
새 데이터세트 만들기
데이터세트 수정/삭제 자체 생성
데이터세트
작업/쿼리 만들기
작업 가져오기 자체 생성
작업
모든 작업
작업 나열 모든 작업(다른 사용자의 작업은 수정됨) 모든 작업
작업 취소 자체 생성
작업
자체 생성
작업
모든 작업
저장된 쿼리 가져오기/나열
저장된 쿼리 만들기/업데이트/삭제
BigQuery Storage API를 통해 읽기 세션 만들기
전송 가져오기
전송 만들기/업데이트/삭제

BigQuery 권한

다음 표에서는 BigQuery에서 제공하는 권한을 설명합니다.

권한 설명
bigquery.jobs.create 새 작업을 만듭니다.
bigquery.jobs.listAll 모든 작업을 나열하고 사용자가 제출한 모든 작업에서 메타데이터를 검색합니다.*
bigquery.jobs.list 모든 작업을 나열하고 사용자가 제출한 모든 작업에서 메타데이터를 검색합니다.* 다른 사용자가 제출한 작업의 경우, 세부정보 및 메타데이터가 수정됩니다.
bigquery.jobs.get 모든 작업의 데이터 및 메타데이터를 가져옵니다.*
bigquery.jobs.update 모든 작업을 취소합니다.*
bigquery.datasets.create 새로운 빈 데이터세트를 만듭니다.
bigquery.datasets.delete 데이터세트를 삭제합니다.
bigquery.datasets.get 데이터세트에 대한 메타데이터를 가져옵니다.
bigquery.datasets.update 데이터세트에 대한 메타데이터를 업데이트합니다.
bigquery.tables.create 새 테이블을 만듭니다.
bigquery.tables.list 테이블 및 테이블의 메타데이터를 나열합니다.
bigquery.tables.delete 테이블을 삭제합니다.
bigquery.tables.get 테이블 메타데이터를 가져옵니다.
테이블 데이터를 가져오려면 bigquery.tables.getData가 필요합니다.
bigquery.tables.getData 테이블 데이터를 가져옵니다.
테이블 메타데이터를 가져오려면 bigquery.tables.get이 필요합니다.
bigquery.tables.export BigQuery의 테이블 데이터를 내보냅니다.
bigquery.tables.update

테이블 메타데이터를 업데이트합니다.
테이블 데이터를 업데이트하려면 bigquery.tables.updateData가 필요합니다.

bigquery.tables.updateData

테이블 데이터를 업데이트합니다.
테이블 메타데이터를 업데이트하려면 bigquery.tables.update가 필요합니다.

bigquery.transfers.get 전송 메타데이터를 가져옵니다.
bigquery.transfers.update 전송을 만들고, 업데이트, 삭제합니다.
bigquery.savedqueries.create 저장된 쿼리를 만듭니다.
bigquery.savedqueries.get 저장된 쿼리의 메타데이터를 가져옵니다.
bigquery.savedqueries.list 저장된 쿼리를 나열합니다.
bigquery.savedqueries.update 저장된 쿼리를 업데이트합니다.
bigquery.savedqueries.delete 저장된 쿼리를 삭제합니다.
bigquery.readsessions.create BigQuery Storage API를 통해 새 읽기 세션을 만듭니다.

* 사용자가 만드는 모든 작업의 경우, 해당 작업에 대해 bigquery.jobs.getbigquery.jobs.update에 상응하는 권한이 자동으로 부여됩니다.

메소드에 필요한 권한

다음 표에서는 호출자가 각 메소드를 호출하는 데 필요한 권한 목록을 보여줍니다.

메소드 필수 권한
datasets.delete bigquery.datasets.delete
대상 데이터세트가 비어 있지 않으면 bigquery.tables.delete도 필요합니다.
datasets.get bigquery.datasets.get
datasets.insert bigquery.datasets.create
datasets.list bigquery.datasets.get을 사용하여 반환된 데이터세트에서 권한을 확인합니다.
datasets.patch bigquery.datasets.update
datasets.update bigquery.datasets.update
jobs.cancel bigquery.jobs.update
사용자가 작업 소유자인 경우 이 권한이 없어도 작업을 취소할 수 있습니다.
jobs.get bigquery.jobs.get
사용자가 작업 소유자인 경우 이 권한이 없어도 작업을 취소할 수 있습니다.
jobs.getQueryResults bigquery.jobs.get
작업 결과를 가져오려면 bigquery.jobs.get 권한이 필요합니다. 또는 사용자가 작업 소유자여야 합니다. 또한 작업 결과가 기록되는 테이블의 소유자여야 합니다.
jobs.insert bigquery.jobs.create를 사용하여 작업을 시작합니다.
작업을 완료하기 위해 추가 권한이 필요할 수 있습니다.
jobs.list bigquery.jobs.list를 사용하여 모든 사용자의 모든 작업을 표시합니다. 다른 사용자가 제출한 작업은 세부정보 및 메타데이터가 수정됩니다. bigquery.jobs.listAllallUsers=true 매개변수를 사용하여 모든 사용자의 모든 작업에 대한 전체 세부정보를 표시합니다.
jobs.query bigquery.jobs.create를 사용하여 작업을 시작합니다.
작업을 완료하기 위해 추가 권한이 필요할 수 있습니다.
projects.list resourcemanager.projects.get
tabledata.insertAll bigquery.tables.updateData
tabledata.list bigquery.tables.getData
tables.delete bigquery.tables.delete
tables.get bigquery.tables.get
tables.insert bigquery.tables.create
메소드로 보기를 생성하는 경우, 보기에서 참조하는 모든 테이블에 대한 bigquery.tables.getData 권한도 필요합니다.
tables.list bigquery.tables.list
tables.patch bigquery.tables.update
tables.update bigquery.tables.update
메소드로 보기를 업데이트하는 경우, 보기에서 참조하는 모든 테이블에 대한 bigquery.tables.getData 권한도 필요합니다. 데이터세트에 보기 권한이 이미 부여된 경우 메소드에도 테이블과 관련된 모든 데이터세트에 대한 bigquery.datasets.update가 필요합니다.
projects.transferConfigs.create bigquery.transfers.update
projects.transferConfigs.get bigquery.transfers.get
projects.transferConfigs.patch bigquery.transfers.update

역할

다음 표에서는 Google BigQuery API IAM 역할과 각 역할에 포함되는 모든 권한 목록을 보여줍니다. 각 권한은 특정 리소스 유형에 적용할 수 있습니다.

역할 포함된 권한 리소스 유형
roles/bigquery.metadataViewer
resourcemanager.projects.get 조직
resourcemanager.projects.list 조직
bigquery.datasets.get 데이터세트
bigquery.tables.list 데이터세트
bigquery.tables.get 데이터세트
roles/bigquery.dataViewer
상기 모든 항목과 다음 항목을 포함
bigquery.tables.getData 데이터세트
bigquery.tables.export 데이터세트
roles/bigquery.dataEditor
상기 모든 항목과 다음 항목을 포함
bigquery.datasets.create 프로젝트
bigquery.tables.create 데이터세트
bigquery.tables.delete 데이터세트
bigquery.tables.update 데이터세트
bigquery.tables.updateData 데이터세트
roles/bigquery.dataOwner
상기 모든 항목과 다음 항목을 포함
bigquery.datasets.delete 프로젝트
bigquery.datasets.update 데이터세트
roles/bigquery.user
resourcemanager.projects.get 조직
resourcemanager.projects.list 조직
bigquery.jobs.create 프로젝트
bigquery.jobs.list 프로젝트
bigquery.datasets.create 프로젝트
bigquery.datasets.get 프로젝트
bigquery.tables.list 프로젝트
bigquery.transfers.get 프로젝트
bigquery.savedqueries.get 프로젝트
bigquery.savedqueries.list 프로젝트
bigquery.readsessions.create 프로젝트
roles/bigquery.jobUser
resourcemanager.projects.get 조직
bigquery.jobs.create 프로젝트
roles/bigquery.readSessionUser
resourcemanager.projects.get 조직
resourcemanager.projects.list 조직
bigquery.readsessions.create 프로젝트
roles/bigquery.admin
다른 역할의 모든 권한과 다음 항목을 포함
bigquery.jobs.get 프로젝트
bigquery.jobs.listAll 프로젝트
bigquery.jobs.update 프로젝트
bigquery.savedqueries.create 프로젝트
bigquery.savedqueries.delete 프로젝트
bigquery.savedqueries.update 프로젝트
bigquery.transfers.update 프로젝트

사전 정의된 역할 세부정보

사전 정의된 역할 세부정보

roles/bigquery.
user

프로젝트 내에서 쿼리 등의 작업을 실행하기 위한 권한입니다. 기업 내에서 대부분의 개인(데이터 과학자/분석가)은 사용자입니다. user 역할은 자신의 작업을 열거하고, 자신의 작업을 취소하고, 프로젝트 내의 데이터세트를 열거할 수 있습니다. 또한 프로젝트 내에서 새로운 데이터세트를 만들 수 있습니다. 생성자에게는 새로운 데이터세트에 대한 bigquery.dataOwner 역할이 부여됩니다.

사유: 이 역할을 사용하면 프로젝트에서 작업 실행 권한과 데이터 액세스 권한을 분리할 수 있으므로 팀 구성원이 여러 프로젝트에서 데이터를 쿼리할 때 유용합니다. 사용자가 이용 가능한 데이터 소스를 검색할 수 있도록 데이터세트 및 테이블 열거를 포함합니다.

리소스 유형:

  • 조직
  • 프로젝트

roles/bigquery.
jobUser

프로젝트 내에서 쿼리 등의 작업을 실행하기 위한 권한입니다. 이 jobUser 역할은 자신의 작업에 대한 정보를 가져오고 자신의 작업을 취소할 수 있습니다.

사유: 이 역할을 사용하면 프로젝트에서 작업을 실행할 수 있는 권한과 데이터 액세스 권한을 분리할 수 있으므로 팀 구성원이 여러 프로젝트에서 데이터를 쿼리할 때 유용합니다. 이 역할은 BigQuery 데이터에 대한 액세스를 허용하지 않습니다. 데이터 액세스가 필요한 경우 데이터세트 수준의 액세스 제어를 부여합니다.

리소스 유형:

  • 조직
  • 프로젝트

roles/bigquery.
readSessionUser

프로젝트 내에서 BigQuery Storage API를 통해 읽기 세션을 만들고 사용하기 위한 권한.

사유: 이 역할을 사용하면 프로젝트에서 읽기 세션을 만드는 권한에서 데이터 액세스를 분리할 수 있습니다. bigquery.readSessionUser가 부여된 사용자는 테이블 데이터에 액세스할 수 없습니다. 데이터를 읽으려면 bigquery.tables.getData 권한도 부여하거나, 해당 테이블이 포함된 데이터세트에 대해 READER 액세스 권한을 제공해야 합니다.

리소스 유형:

  • 조직
  • 프로젝트

roles/bigquery.
dataViewer

데이터세트에 적용될 때 dataViewer는 다음 권한을 제공합니다.

  • 데이터세트의 메타데이터를 읽고 데이터세트의 테이블을 열거하는 권한
  • 데이터세트의 테이블에서 데이터 및 메타데이터를 읽는 권한

프로젝트 또는 조직 수준에서 적용될 때 이 역할은 프로젝트의 모든 데이터세트를 열거할 수도 있습니다. 하지만 작업 실행을 허용하려면 추가적인 역할이 필요합니다.

예를 들어 데이터세트에 대해 다른 권한 없이 bigquery.dataViewer 권한만 가진 사용자는 데이터세트의 테이블을 나열하고, get() API를 사용하여 테이블 콘텐츠를 읽는 것만 가능합니다. 추가 권한 없이는 이 사용자가 데이터를 쿼리할 수 없습니다.

쿼리 실행 권한이 있는 사용자의 예시는 다음 시나리오를 참조하세요. projectA에 bigquery.user 권한이 있고 projectA:dataset1 및 projectB:dataset2에 bigquery.dataViewer 권한이 있는 사용자는 이러한 데이터세트 중 하나 또는 모두를 사용하는 쿼리를 projectA에서 실행할 수 있습니다.

BigQuery 스토리지 외부에 있는 외부 데이터 소스의 경우 BigQuery 이외의 데이터 소스에서 제공하는 추가 권한이 필요할 수 있습니다.

사유: dataViewer 역할은 읽기 전용 데이터 액세스를 위한 역할입니다. dataViewer가 데이터에 액세스할 수 있지만, 쿼리 작업을 실행하기 위해서는 bigquery.user 또는 bigquery.admin 역할이 부여하는 권한과 같은 추가 권한이 필요합니다. dataViewer에는 비용 청구 기능이 없습니다.

리소스 유형:

  • 조직
  • 프로젝트

roles/bigquery.
metadataViewer

프로젝트 또는 조직 수준에 적용할 경우 metadataViewer는 다음과 같은 권한을 제공합니다.

  • 모든 데이터세트를 열거하고 프로젝트에 있는 모든 데이터세트의 메타데이터를 읽는 권한
  • 모든 테이블과 뷰를 열거하고 프로젝트에 있는 모든 테이블과 뷰의 메타데이터를 읽는 권한

작업을 실행하려면 추가적인 역할이 필요합니다.

사유: metadataViewer 역할은 메타데이터 전용 액세스를 위한 역할입니다. metadataViewer는 데이터세트, 테이블에 액세스하고 메타데이터를 볼 수 있지만, 쿼리 작업을 실행하기 위해서는 bigquery.user 역할이 부여하는 권한과 같은 추가 권한이 필요합니다.

리소스 유형:

  • 조직
  • 프로젝트

roles/bigquery.
dataEditor

데이터세트에 적용하면 dataEditor는 다음에 대한 권한을 제공합니다.

  • 데이터세트의 메타데이터를 읽고 데이터세트의 테이블을 열거하는 권한
  • 데이터세트의 테이블에 대한 생성, 업데이트, 가져오기, 삭제 권한

프로젝트 또는 조직 수준에서 적용하는 경우 이 역할은 새로운 데이터세트를 만들 수도 있습니다.

사유: dataEditor 역할은 데이터세트 내에서 테이블에 대한 만들기, 업데이트, 삭제 권한을 실행하여 bigquery.dataViewer를 확장하지만 데이터세트 자체 변형을 허용하지 않습니다.

리소스 유형:

  • 조직
  • 프로젝트
  • 데이터세트

roles/bigquery.
dataOwner

데이터세트에 적용하는 경우 dataOwner는 다음에 대한 권한을 제공합니다.

  • 데이터세트 읽기, 업데이트. 삭제 권한
  • 데이터세트의 테이블에 대한 생성, 업데이트, 가져오기, 삭제 권한

프로젝트 또는 조직 수준에서 적용하는 경우 이 역할은 새로운 데이터세트를 만들 수도 있습니다.

사유: dataOwner 역할은 포함된 데이터세트를 수정 및 삭제할 수 있는 기능을 추가하여 bigquery.dataEditor를 확장합니다.

리소스 유형:

  • 조직
  • 프로젝트
  • 데이터세트

roles/bigquery.
admin

프로젝트 내에서 모든 리소스를 관리하기 위한 권한입니다. 프로젝트 내에서 모든 데이터를 관리할 수 있고 프로젝트 내에서 실행 중인 다른 사용자의 작업을 취소할 수 있습니다.

사유: 이 역할은 가장 광범위한 책임을 포함하는 최상위 역할이며, 동료 작업자들이 다양한 분석을 수행할 때 이를 지원하는 수퍼유저 역할입니다.

리소스 유형:

  • 조직
  • 프로젝트

커스텀 역할

사전 정의된 역할 외에도 BigQuery에서는 커스텀 역할이 지원됩니다. 자세한 내용은 Cloud IAM 문서의 커스텀 역할 만들기 및 관리를 참조하세요.

지원되지 않는 권한

다음 권한은 조직 수준의 커스텀 역할에만 추가할 수 있습니다. 이러한 권한은 프로젝트 수준 또는 그 이하에서 효과가 없습니다.

  • resourcemanager.projects.list

다음 권한은 이전 버전과 호환되지 않는 방식으로 변경될 수 있으며, 프로덕션용으로 권장되지 않습니다. 여기에는 어떠한 SLA 또는 지원 중단 정책도 적용되지 않습니다.

  • bigquery.config.get
  • bigquery.config.update

기본 IAM 역할

기본 IAM 역할은 이전 BigQuery 뷰어/편집자/소유자 프로젝트 역할, 리더/작성자/소유자 데이터세트 역할에 직접 매핑됩니다.

기본 역할에서 전환

이전 승인 설정 방식에 익숙한 사용자를 위해 BigQuery에서는 프로젝트 수준의 권한을 기본 역할의 조합(리더, 작성자, 소유자)으로 제공하였습니다.

호환성을 위해 사전 데이터세트 수준의 이전 권한은 해당하는 사전 정의된 역할에 직접 매핑됩니다.

BigQuery 이전 권한 IAM 해당 권한
프로젝트 - 보기 가능 기본 역할 - 뷰어
프로젝트 - 편집 가능 기본 역할 - 편집자
프로젝트 - 소유자 기본 역할 - 소유자
데이터세트 - 리더 bigquery.dataViewer
데이터세트 - 작성자 bigquery.dataEditor
데이터세트 - 소유자 bigquery.dataOwner

프로젝트에 대한 기본 역할

기본적으로 프로젝트에 액세스 권한을 부여하면 프로젝트 내에 있는 데이터세트에도 액세스 권한이 부여됩니다. 기본 액세스 권한은 데이터세트별 기준으로 재정의할 수 있습니다. 프로젝트 Owner 역할이 있는 모든 사용자는 모든 프로젝트 역할을 취소하거나 변경할 수 있습니다.

프로젝트가 생성될 때 BigQuery는 프로젝트를 만든 사용자에게 Owner 역할을 부여합니다.

기본 역할 기능
Viewer
  • 프로젝트에서 작업을 시작할 수 있습니다. 작업 유형에 따라 추가 데이터세트 역할이 필요합니다.
  • 모든 작업을 나열하고 가져올 수 있고, 프로젝트에 대해 시작한 작업을 업데이트할 수 있습니다.
  • 프로젝트에 뷰어를 포함하는 데이터세트를 만들 경우, BigQuery는 해당 사용자에게 새로운 데이터세트에 대해 사전 정의된 역할인 bigquery.dataViewer를 부여합니다.
Editor
  • Viewer와 동일하고 다음 권한이 추가됩니다.
    • 프로젝트에서 새 데이터세트를 만들 수 있습니다.
    • 프로젝트에 편집자를 포함하는 데이터세트를 만들 경우, BigQuery는 해당 사용자에게 새로운 데이터세트에 대해 사전 정의된 역할인 bigquery.dataEditor를 부여합니다.
Owner
  • Editor와 동일하고 다음 권한이 추가됩니다.
    • 프로젝트에서 모든 데이터세트를 나열할 수 있습니다.
    • 프로젝트에서 모든 데이터세트를 삭제할 수 있습니다.
    • 다른 프로젝트 사용자가 실행한 작업을 포함하여 프로젝트에서 실행된 모든 작업을 나열하고 가져올 수 있습니다.
    • 데이터세트를 만들 경우, BigQuery는 모든 프로젝트 소유자에게 새로운 데이터세트에 대한 사전 정의된 역할 bigquery.dataOwner를 부여합니다.

      예외: 사용자가 쿼리를 실행하면 익명 데이터세트가 생성되어 캐시된 결과 테이블이 저장됩니다. 쿼리를 실행하는 사용자에게만 이 익명 데이터세트에 대한 OWNER 액세스 권한이 부여됩니다.

프로젝트의 기본 역할은 Google Cloud Platform 콘솔을 통해 부여되거나 취소됩니다. 새 프로젝트 역할을 부여하거나 취소하려면 프로젝트에 대해 Owner 액세스 권한이 있어야 합니다.

프로젝트 역할에 대해 액세스 권한을 부여하거나 취소하는 방법은 프로젝트 구성원 관리를 참조하세요.

데이터세트의 기본 역할

데이터세트의 기본 역할은 기본 역할에서 전환에 설명된 사전 정의된 역할과 기능적으로 동일합니다.

데이터세트 역할은 다음 항목 유형에 부여할 수 있습니다.

항목 유형 API
단일 사용자, 이메일 주소 기준 access.userByEmail
Google 그룹, 이메일 주소 기준 access.groupByEmail
'모든 사용자'와 같이 사전 정의된 사용자 그룹이나 데이터세트를 포함하는 프로젝트에 대해 동일한 프로젝트 역할을 가진 사용자 그룹 access.specialGroup

다음 기본 역할이 데이터세트에 적용됩니다.

데이터세트 역할 기능
READER
  • 데이터세트에서 테이블에 대해 읽기, 쿼리, 복사 또는 내보내기를 수행할 수 있습니다.
    • 데이터세트에서 get을 호출할 수 있습니다.
    • 데이터세트의 테이블에서 getlist를 호출할 수 있습니다.
    • 데이터세트에서 테이블의 테이블 데이터에 대해 list를 호출할 수 있습니다.
WRITER
  • READER와 동일하고 다음 권한이 추가됩니다.
    • 데이터세트에서 데이터를 편집하거나 추가할 수 있습니다.
      • insert, insertAll, update 또는 delete를 호출할 수 있습니다.
      • 데이터세트에 있는 테이블을 로컬 복사 또는 쿼리 작업의 대상으로 사용할 수 있습니다.
OWNER
  • WRITER와 동일하고 다음 권한이 추가됩니다.
    • 데이터세트에서 update를 호출할 수 있습니다.
    • 데이터세트에서 delete를 호출할 수 있습니다.

참고: 데이터세트에는 OWNER 역할이 있는 항목이 최소한 한 개 이상 있어야 합니다. OWNER 역할이 부여된 사용자는 본인의 OWNER 역할을 삭제할 수 없습니다.

사용자가 새 데이터세트를 만들 때, BigQuery는 다음 항목에 대해 기본 데이터세트 액세스 권한을 추가합니다. 데이터세트를 만들 때 지정하는 역할은 기본값을 덮어씁니다.

항목 데이터세트 역할
프로젝트에 Viewer 액세스 권한이 있는 모든 사용자 READER
프로젝트에 Editor 액세스 권한이 있는 모든 사용자 WRITER
프로젝트에 Owner 액세스 권한이 있는 모든 사용자

OWNER

예외: 사용자가 쿼리를 실행하면 익명 데이터세트가 생성되어 캐시 처리된 결과 테이블이 저장됩니다. 쿼리를 실행하는 사용자에게만 이 익명 데이터세트에 대한 OWNER 액세스 권한이 부여됩니다.

데이터세트 역할은 다음 옵션 중 하나를 사용하여 부여되거나 취소됩니다.

  • BigQuery API의 경우 update 사용
  • 웹 UI의 경우 데이터세트 이름 옆에 있는 드롭다운을 클릭한 후 데이터세트 공유 클릭
  • 'bq' 명령줄 도구의 경우 'bq update' 명령어 사용. '--source' 플래그를 사용하여 'access' 필드가 설정된 부분적인 'dataset' 리소스를 포함하는 JSON 파일 지정

시나리오 예

다음 예에서는 이름이 AnalystGroup인 Google 그룹에 속하는 모든 데이터 과학자의 그룹이 사용됩니다.

데이터세트의 데이터에 대한 읽기 및 쓰기 액세스 권한

CompanyProject는 dataset1과 dataset2가 포함된 프로젝트입니다. AnalystGroup1은 dataset1에서만 작업을 수행하는 데이터 과학자의 그룹이고, AnalystGroup2는 dataset2에서만 작업을 수행하는 그룹입니다. 데이터 과학자는 데이터에 대해 쿼리를 실행하기 위한 액세스 권한을 포함하여 자신이 작업을 수행하는 데이터세트에 대해서만 전체 액세스 권한을 가져야 합니다.

데이터세트에 대한 읽기 및 쓰기 액세스 권한
CompanyProject:dataset1 데이터세트 dataset1에 대한 AnalystGroup1 WRITER 액세스 권한을 부여합니다. 이 역할은 사전 정의된 IAM 역할 bigquery.dataEditor에 매핑됩니다.
CompanyProject:dataset2 데이터세트 dataset2에 대한 AnalystGroup2 WRITER 액세스 권한을 부여합니다. 이 역할은 사전 정의된 IAM 역할 bigquery.dataEditor에 매핑됩니다.
CompanyProject 프로젝트 CompanyProject에 대한 AnalystGroup1 및 AnalystGroup2 bigquery.user 액세스 권한을 부여합니다.

데이터 과학자에게 데이터세트 수준의 WRITER 액세스 권한을 부여하면 데이터 과학자에게 데이터세트의 테이블에 있는 데이터를 쿼리할 수 있는 권한을 부여하지만, 프로젝트에서 쿼리 작업을 실행할 수 있는 권한을 부여하지 않습니다. 액세스 권한이 부여된 데이터세트에 대해 쿼리 작업을 실행할 수 있으려면 먼저 데이터과학자 그룹에 프로젝트 수준의 사전 정의된 역할 bigquery.user를 부여해야 합니다. bigquery.user 역할은 bigquery.jobs.create 권한을 부여합니다.

또는 데이터과학자 그룹을 bigquery.jobs.create 권한을 부여하는 프로젝트 수준 IAM 커스텀 역할에 추가할 수 있습니다.

프로젝트의 데이터에 대한 전체 액세스 권한

AnalystGroup은 이름이 CompanyProject인 프로젝트 내에서 모든 사용 속성을 담당하며, BigQuery에서 작업을 수행하는 데이터 과학자 그룹입니다. 이 그룹은 모든 구성원이 모든 데이터에 대해 읽기 및 쓰기 액세스 권한을 갖는 것을 선호합니다. 조직에서 다른 그룹은 다른 Cloud Platform 제품을 사용하지만 아무도 BigQuery를 사용하지 않습니다. AnalystGroup은 다른 Cloud Platform 서비스를 사용하지 않습니다.

프로젝트의 데이터에 대한 전체 액세스 권한
CompanyProject 프로젝트 AnalystGroup을 사전 정의된 역할 bigquery.admin에 추가합니다.

조직 전반의 전체 액세스 권한

CompanyA는 이름이 Admin1인 특정 사용자를 해당 프로젝트 전체의 모든 BigQuery 데이터 관리자로 지정하려는 조직입니다. MonitoringServiceAccount는 조직 내 모든 프로젝트 전반의 모든 테이블 크기를 모니터링할 책임이 있는 서비스 계정입니다.

조직 전반의 전체 액세스 권한
CompanyA 조직

회사에서 MonitoringServiceAccount로 특정 크기를 초과하는 테이블 크기를 잘라내고 특정 기간보다 오래된 데이터를 삭제하기로 결정할 경우 MonitoringServiceAccount를 사전 정의된 역할 bigquery.user에 추가해야 합니다.

동일 프로젝트의 데이터에 대한 읽기 액세스 권한

AnalystGroup은 이름이 CompanyProject인 프로젝트 내에서 애널리틱스 서비스를 담당하는 데이터 과학자 집합입니다. OperationsServiceAccount는 특정 CompanyProject:AppLogs 데이터세트에 대한 대량 로드 작업을 통해 BigQuery에 애플리케이션 로그를 로드할 책임이 있는 서비스 계정입니다. 분석가는 로그를 수정하도록 허용되지 않습니다.

동일 프로젝트의 데이터에 대한 읽기 액세스 권한
CompanyProject 프로젝트
  • OperationsServiceAccount를 사전 정의된 역할 bigquery.user에 추가합니다.
  • AnalystGroup을 사전 정의된 역할 bigquery.user에 추가합니다.
CompanyProject:AppLogs 데이터세트

다른 프로젝트의 데이터에 대한 읽기 액세스 권한

AnalystGroup은 이름이 CompanyAnalytics인 프로젝트 내에서 애널리틱스 서비스를 담당하는 데이터 과학자의 집합입니다. 하지만 이들이 분석하는 데이터는 이름이 CompanyLogs인 별개의 프로젝트에 저장됩니다. OperationsServiceAccount는 CompanyLogs 프로젝트의 다양한 데이터세트에 대한 대량 로드 작업을 통해 BigQuery에 애플리케이션 로그를 로드할 책임이 있는 서비스 계정입니다.

AnalystGroup은 CompanyLogs 프로젝트에서 데이터를 읽을 수만 있으며, 해당 프로젝트에서 추가 저장소를 만들거나 쿼리 작업을 실행할 수 없습니다. 대신 분석가는 프로젝트 CompanyAnalytics를 사용하여 자신의 작업을 수행하고, CompanyAnalytics 프로젝트 내에서 결과물을 유지합니다.

다른 프로젝트의 데이터에 대한 읽기 액세스 권한
CompanyLogs 프로젝터
  • OperationsServiceAccount를 사전 정의된 역할 bigquery.admin에 추가합니다.
  • AnalystGroup을 사전 정의된 역할 bigquery.dataViewer에 추가합니다.
CompanyAnalytics 프로젝트
  • AnalystGroup을 사전 정의된 역할 bigquery.user에 추가합니다.

프로그래매틱 방식으로 역할 조작

다음 메소드를 사용하여 데이터세트, 프로젝트, 조직 수준에서

프로그래매틱 방식으로 사전 정의된 역할을 조작할 수 있습니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.