BigQuery IAM 역할 및 권한
이 문서에서는 BigQuery의 Identity and Access Management(IAM) 역할과 권한에 대한 정보를 제공합니다. IAM을 사용하면 특정 BigQuery 리소스에 대한 세분화된 액세스 권한을 부여하고 다른 리소스에 대한 액세스를 방지할 수 있습니다. IAM은 최소 권한의 보안 원칙을 적용하여 실제로 필요한 것보다 더 많은 권한을 갖지 않도록 합니다.
주 구성원(사용자, 그룹 또는 서비스 계정)이 Google Cloud API를 호출하는 경우 해당 주 구성원에게 리소스를 사용할 적절한 IAM 권한이 있어야 합니다. 주 구성원에게 필수 권한을 부여하려면 주 구성원에게 IAM 역할을 부여합니다.
이 문서에서는 주 구성원이 BigQuery 리소스에 액세스할 수 있도록 사전 정의된 커스텀 IAM 역할을 사용하는 방법을 설명합니다.
Google Cloud에서 액세스를 관리하는 일반적인 방법을 알아보려면 IAM 개요를 참조하세요.
IAM 역할 유형
역할은 권한 모음입니다. IAM에서 다음 유형의 역할을 사용하여 BigQuery 리소스에 대한 액세스 권한을 제공할 수 있습니다.
- 사전 정의된 역할은 Google Cloud에서 관리되며 일반적인 사용 사례와 액세스 제어 패턴을 지원합니다.
- 커스텀 역할: 사용자 지정 권한 목록에 따라 액세스 권한을 제공합니다.
역할에 하나 이상의 권한이 포함되어 있는지 확인하려면 다음 방법 중 하나를 사용할 수 있습니다.
- IAM 권한 검색 참조
gcloud iam roles describe
명령어- IAM API의
roles.get()
메서드
사용자에게 여러 역할 유형을 할당할 때 부여되는 권한은 각 역할의 권한의 합집합입니다.
리소스 액세스를 위한 IAM 사용에 대한 자세한 내용은 IAM 문서의 리소스 액세스 권한 부여, 변경, 취소를 참조하세요.
커스텀 역할 만들기에 대한 자세한 내용은 IAM 문서의 커스텀 역할 만들기 및 관리를 참조하세요.
BigQuery의 IAM 역할
권한이 사용자, 그룹, 서비스 계정에 직접 할당되지 않습니다. 대신 사용자, 그룹 또는 서비스 계정에 리소스에 대해 작업을 수행할 수 있는 권한을 부여하는 하나 이상의 사전 정의된 역할 또는 커스텀 역할에 대한 액세스 권한이 부여됩니다.
다음 BigQuery 리소스 수준에서 액세스 권한을 부여할 수 있습니다.
- 조직 또는 Google Cloud 프로젝트 수준
- 데이터 세트 수준
- 테이블 또는 뷰 수준
조직 또는 Google Cloud 프로젝트 수준에서 적용된 역할
조직 및 프로젝트 수준에서 역할을 할당하면 BigQuery 작업을 실행하거나 프로젝트의 모든 BigQuery 리소스에 액세스할 수 있는 권한이 제공됩니다.
데이터 세트 수준에서 적용된 역할
프로젝트 리소스에 대한 전체 액세스 권한을 제공하지 않고 데이터 세트 수준에서 역할을 할당하여 특정 데이터 세트에 대한 액세스 권한을 제공할 수 있습니다. IAM 리소스 계층 구조에서 BigQuery 데이터 세트는 프로젝트의 하위 리소스입니다. 데이터 세트 수준에서 역할을 할당하는 방법에 대한 자세한 내용은 데이터 세트에 대한 액세스 제어를 참조하세요.
데이터 세트 내의 개별 리소스에 적용되는 역할
데이터 세트의 리소스에 대해 전체 액세스 권한을 제공하지 않고 데이터 세트 내의 특정 리소스 유형에 대해 개별적으로 역할을 할당할 수 있습니다.
다음 유형의 개별 리소스에는 역할이 적용될 수 있습니다.
- 테이블
- 뷰
다음 유형의 개별 리소스에는 역할이 적용될 수 없습니다.
- 루틴
- 모델
테이블 또는 뷰 수준에서 역할을 할당하는 방법에 대한 자세한 내용은 테이블 또는 뷰에 대한 액세스 제어를 참조하세요.
BigQuery 사전 정의된 IAM 역할
다음 표에서는 사전 정의된 BigQuery IAM 역할과 각 역할에 포함된 모든 권한 목록을 보여줍니다. 각 권한은 특정 리소스 유형에 적용할 수 있습니다.
Role | Permissions |
---|---|
BigQuery Admin( Provides permissions to manage all resources within the project. Can manage all data within the project, and can cancel jobs from other users running within the project. Lowest-level resources where you can grant this role:
|
|
BigQuery Connection Admin(
|
|
BigQuery Connection User(
|
|
BigQuery Data Editor( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role can also create new datasets. Lowest-level resources where you can grant this role:
|
|
BigQuery Data Owner( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role can also create new datasets. Lowest-level resources where you can grant this role:
|
|
BigQuery Data Viewer( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to list all of the resources in the dataset (such as tables, views, snapshots, models, and routines) and to read their data and metadata with applicable APIs and in queries. When applied at the project or organization level, this role can also enumerate all datasets in the project. Additional roles, however, are necessary to allow the running of jobs. Lowest-level resources where you can grant this role:
|
|
BigQuery Filtered Data Viewer( Access to view filtered table data defined by a row access policy |
|
BigQuery Job User( Provides permissions to run jobs, including queries, within the project. Lowest-level resources where you can grant this role:
|
|
BigQuery Metadata Viewer( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role provides permissions to:
Additional roles are necessary to allow the running of jobs. Lowest-level resources where you can grant this role:
|
|
BigQuery Read Session User( Provides the ability to create and use read sessions. Lowest-level resources where you can grant this role:
|
|
BigQuery Resource Admin( Administers BigQuery workloads, including slot assignments, commitments, and reservations. |
|
BigQuery Resource Editor( Manages BigQuery workloads, but is unable to create or modify slot commitments. |
|
BigQuery Resource Viewer( Can view BigQuery workloads, but cannot create or modify slot reservations or commitments. |
|
BigQuery Studio Admin( Combination role of BigQuery Admin, Dataform Admin, and Notebook Runtime Admin. |
|
BigQuery Studio User( Combination role of BigQuery Job User, BigQuery Read Session User, Dataform Code Creator, and Notebook Runtime User. |
|
BigQuery User( When applied to a dataset, this role provides the ability to read the dataset's metadata and list tables in the dataset. When applied to a project, this role also provides the ability to run jobs, including queries,
within the project. A principal with this role can enumerate their own jobs, cancel their own jobs, and
enumerate datasets within a project. Additionally, allows the creation of new datasets within the
project; the creator is granted the BigQuery Data Owner role ( Lowest-level resources where you can grant this role:
|
|
BigQuery Data Policy Admin( Role for managing Data Policies in BigQuery |
|
Masked Reader( Masked read access to sub-resources tagged by the policy tag associated with a data policy, for example, BigQuery columns |
|
Raw Data Reader Beta( Raw read access to sub-resources associated with a data policy, for example, BigQuery columns |
|
BigQuery Data Policy Viewer( Role for viewing Data Policies in BigQuery |
|
BigQuery용 커스텀 IAM 역할
BigQuery의 커스텀 IAM 역할을 만들려면 BigQuery 권한을 사용하여 IAM 커스텀 역할에 설명된 단계를 따르세요.
BigQuery 기본 역할
BigQuery 기본 역할에 대한 자세한 내용은 BigQuery 기본 역할 및 권한을 참조하세요.
BigQuery 권한
다음 표에서는 BigQuery에서 제공하는 권한을 설명합니다. 사전 정의된 역할에 포함되어 있으며 커스텀 역할 정의에 사용될 수 있습니다.
권한 | 설명 |
---|---|
bigquery.bireservations.get |
BI Engine 예약을 읽습니다. |
bigquery.bireservations.update |
BI Engine 예약을 업데이트합니다. |
bigquery.capacityCommitments.create |
프로젝트에서 용량 약정을 만듭니다. |
bigquery.capacityCommitments.delete |
용량 약정을 삭제합니다. |
bigquery.capacityCommitments.get |
용량 약정에 대한 세부정보를 가져옵니다. |
bigquery.capacityCommitments.list |
프로젝트의 모든 용량 약정을 나열합니다. |
bigquery.capacityCommitments.update |
프로젝트의 모든 용량 약정을 업데이트합니다. |
bigquery.config.update |
구성을 만듭니다. |
bigquery.config.get |
구성 세부정보를 가져옵니다. |
bigquery.connections.create |
프로젝트에서 새 연결을 만듭니다. |
bigquery.connections.delete |
연결을 삭제합니다. |
bigquery.connections.get |
연결 메타데이터를 가져옵니다. 사용자 인증 정보는 제외됩니다. |
bigquery.connections.list |
프로젝트의 연결을 나열합니다. |
bigquery.connections.update |
연결 및 사용자 인증 정보를 업데이트합니다. |
bigquery.connections.updateTag |
연결 태그를 업데이트합니다. |
bigquery.connections.use |
연결 구성을 사용하여 원격 데이터 소스에 연결합니다. |
bigquery.connections.delegate |
연결을 위임하여 승인된 외부 테이블 및 원격 함수를 만듭니다. |
bigquery.dataPolicies.create |
새 데이터 정책을 만듭니다. |
bigquery.dataPolicies.delete |
데이터 정책을 삭제합니다. |
bigquery.dataPolicies.get |
데이터 정책에 대한 메타데이터를 가져옵니다. |
bigquery.dataPolicies.getIamPolicy |
데이터 정책의 IAM 권한을 읽습니다. |
bigquery.dataPolicies.list |
프로젝트의 데이터 정책을 나열합니다. |
bigquery.dataPolicies.maskedGet |
데이터 정책과 연결된 정책 태그가 있는 열의 마스킹된 데이터를 봅니다. |
bigquery.dataPolicies.setIamPolicy |
데이터 정책의 IAM 권한을 설정합니다. |
bigquery.dataPolicies.update |
데이터 정책의 메타데이터를 업데이트합니다. |
bigquery.datasets.create |
새로운 빈 데이터 세트를 만듭니다. |
bigquery.datasets.createTagBinding |
데이터 세트에 리소스 태그 바인딩을 만듭니다. |
bigquery.datasets.delete |
데이터 세트를 삭제합니다. |
bigquery.datasets.deleteTagBinding |
데이터 세트에서 리소스 태그 바인딩을 삭제합니다. |
bigquery.datasets.get |
데이터 세트에 대한 메타데이터 및 권한을 가져옵니다.
Google Cloud 콘솔에서 권한을 보려면 bigquery.datasets.getIamPolicy 권한도 필요합니다. |
bigquery.datasets.getIamPolicy |
Google Cloud 콘솔에서 데이터 세트에 대한 IAM 권한을 가져오는 옵션을 제공하는 데 필요합니다. 오류 시 열림(Fails open). 권한을 가져오는 작업을 실제로 수행하는 기능은 bigquery.datasets.get 권한으로 관리됩니다. |
bigquery.datasets.link |
연결된 데이터 세트를 만듭니다. |
bigquery.datasets.listTagBindings |
데이터 세트의 리소스 태그 바인딩을 나열합니다. |
bigquery.datasets.setIamPolicy |
Google Cloud 콘솔에서 사용자에게 데이터 세트의 IAM 권한을 설정하는 옵션을 제공하는 데 필요합니다. 오류 시 열림(Fails open). 권한 설정 작업을 실제로 수행하는 기능은 bigquery.datasets.update 권한으로 관리됩니다. |
bigquery.datasets.update |
데이터 세트에 대한 메타데이터 및 권한을 업데이트합니다.
Google Cloud 콘솔에서 권한을 부여하려면 bigquery.datasets.setIamPolicy 권한도 필요합니다. |
bigquery.datasets.updateTag |
데이터 세트의 Data Catalog 태그를 업데이트합니다. |
bigquery.jobs.create |
프로젝트 내에서 쿼리를 비롯한 작업을 실행합니다. |
bigquery.jobs.get |
모든 작업의 데이터와 메타데이터를 가져옵니다.1 |
bigquery.jobs.list |
모든 작업을 나열하고 사용자가 제출한 모든 작업에서 메타데이터를 검색합니다. 다른 사용자가 제출한 작업의 경우 세부정보와 메타데이터가 수정됩니다. |
bigquery.jobs.listAll |
모든 작업을 나열하고 사용자가 제출한 모든 작업에서 메타데이터를 검색합니다. |
bigquery.jobs.listExecutionMetadata |
사용자가 제출한 작업에 대한 모든 작업 실행 메타데이터(민감한 정보 제외)를 나열합니다. 조직 수준에서만 적용될 수 있으며 관리 UI에서 사용됩니다. |
bigquery.jobs.delete |
작업의 메타데이터를 삭제합니다. |
bigquery.jobs.update |
모든 작업을 취소합니다.1 |
bigquery.models.create |
새 머신러닝 모델을 만듭니다. |
bigquery.models.delete |
머신러닝 모델을 삭제합니다. |
bigquery.models.getData |
머신러닝 모델 데이터를 가져옵니다. 모델 메타데이터를 가져오려면 bigquery.models.getMetadata 가 필요합니다. |
bigquery.models.getMetadata |
머신러닝 모델 메타데이터를 가져옵니다. 모델 데이터를 가져오려면 bigquery.models.getData 가 필요합니다. |
bigquery.models.list |
머신러닝 모델 및 모델의 메타데이터를 나열합니다. |
bigquery.models.updateData |
머신러닝 모델 데이터를 업데이트합니다. 모델 메타데이터를 업데이트하려면 bigquery.models.updateMetadata 가 필요합니다. |
bigquery.models.updateMetadata |
머신러닝 모델 메타데이터를 업데이트합니다. 모델 데이터를 업데이트하려면 bigquery.models.updateData 가 필요합니다. |
bigquery.models.export |
머신러닝 모델을 내보냅니다. |
bigquery.models.updateTag |
모델의 Data Catalog 태그를 업데이트합니다. |
bigquery.readsessions.create |
Storage API를 사용하여 새 읽기 세션을 만듭니다. |
bigquery.readsessions.getData |
Storage Read API를 사용하여 읽기 세션에서 데이터를 읽습니다. |
bigquery.readsessions.update |
Storage Read API를 사용하여 읽기 세션을 업데이트합니다. |
bigquery.reservations.create |
관리 프로젝트에서 슬롯 예약을 만듭니다. |
bigquery.reservations.delete |
슬롯 예약을 삭제합니다. |
bigquery.reservations.get |
슬롯 예약에 대한 세부정보를 가져옵니다. |
bigquery.reservations.list |
관리 프로젝트의 모든 슬롯 예약을 나열합니다. |
bigquery.reservations.update |
슬롯 예약의 속성을 업데이트합니다. |
bigquery.reservationAssignments.create |
예약 할당을 생성합니다.
이 권한은 소유자 프로젝트 및 할당된 담당자 리소스에 필요합니다. |
bigquery.reservationAssignments.delete |
예약 할당을 삭제합니다.
이 권한은 소유자 프로젝트 및 할당된 담당자 리소스에 필요합니다. |
bigquery.reservationAssignments.list |
프로젝트의 모든 예약 할당을 나열합니다. |
bigquery.reservationAssignments.search |
특정 프로젝트, 폴더 또는 조직의 예약 할당을 찾습니다. |
bigquery.rowAccessPolicies.create |
테이블에 새 행 수준 액세스 정책을 만듭니다. |
bigquery.rowAccessPolicies.delete |
테이블에서 행 수준 액세스 정책을 삭제합니다. |
bigquery.rowAccessPolicies.getFilteredData |
행 수준 액세스 정책 권한 수혜자 목록의 주 구성원에게만 표시할 테이블의 데이터를 가져옵니다. 이 권한은 행 수준 액세스 정책 리소스에만 부여하는 것이 좋습니다. |
bigquery.rowAccessPolicies.list |
테이블의 모든 행 수준 액세스 정책을 나열합니다. |
bigquery.rowAccessPolicies.overrideTimeTravelRestrictions |
행 수준 액세스 정책이 있거나 이전에 있었던 테이블의 이전 데이터에 액세스합니다. |
bigquery.rowAccessPolicies.getIamPolicy |
행 액세스 정책의 IAM 권한을 가져옵니다. |
bigquery.rowAccessPolicies.setIamPolicy |
행 액세스 정책의 IAM 권한을 설정합니다. |
bigquery.rowAccessPolicies.update |
행 수준 액세스 정책을 다시 만듭니다. |
bigquery.routines.create |
새 루틴(함수 및 저장 절차)을 만듭니다. |
bigquery.routines.delete |
루틴을 삭제합니다. |
bigquery.routines.get |
루틴 정의 및 메타데이터를 가져옵니다. |
bigquery.routines.list |
루틴 및 루틴의 메타데이터를 나열합니다. |
bigquery.routines.update |
루틴 정의 및 메타데이터를 업데이트합니다. |
bigquery.routines.updateTag |
루틴의 Data Catalog 태그를 업데이트합니다. |
bigquery.savedqueries.create |
저장된 쿼리를 만듭니다. |
bigquery.savedqueries.delete |
저장된 쿼리를 삭제합니다. |
bigquery.savedqueries.get |
저장된 쿼리의 메타데이터를 가져옵니다. |
bigquery.savedqueries.list |
저장된 쿼리를 나열합니다. |
bigquery.savedqueries.update |
저장된 쿼리를 업데이트합니다. |
bigquery.tables.create |
새 테이블을 만듭니다. |
bigquery.tables.createIndex |
테이블에 검색 색인을 만듭니다. |
bigquery.tables.createSnapshot
|
새 테이블 스냅샷을 만듭니다. |
bigquery.tables.createTagBinding
|
테이블에 리소스 태그 바인딩을 만듭니다. |
bigquery.tables.delete |
테이블을 삭제합니다. |
bigquery.tables.deleteIndex |
테이블에서 검색 색인을 제거합니다. |
bigquery.tables.deleteSnapshot
|
테이블 스냅샷을 삭제합니다. |
bigquery.tables.deleteTagBinding
|
테이블에서 리소스 태그 바인딩을 삭제합니다. |
bigquery.tables.export |
BigQuery의 테이블 데이터를 내보냅니다. |
bigquery.tables.get |
테이블 메타데이터를 가져옵니다. 테이블 데이터를 업데이트하려면 bigquery.tables.getData 가 필요합니다. |
bigquery.tables.getData |
테이블 데이터를 가져옵니다. 테이블 데이터를 쿼리하려면 이 권한이 필요합니다. 테이블 메타데이터를 가져오려면 bigquery.tables.get 이 필요합니다. |
bigquery.tables.getIamPolicy |
테이블의 IAM 정책을 읽습니다. |
bigquery.tables.list |
테이블 및 테이블의 메타데이터를 나열합니다. |
bigquery.tables.replicateData |
테이블 데이터를 복제합니다. 이 권한은 복제본의 구체화된 뷰를 만들 때 필요합니다. |
bigquery.tables.restoreSnapshot
|
테이블 스냅샷을 복원합니다. |
bigquery.tables.setCategory |
테이블 스키마에서 정책 태그를 설정합니다. |
bigquery.tables.setIamPolicy |
테이블의 IAM 정책을 변경합니다. |
bigquery.tables.update |
테이블 메타데이터를 업데이트합니다. |
bigquery.tables.updateData |
테이블 데이터를 업데이트합니다. |
bigquery.tables.updateTag |
테이블의 Data Catalog 태그를 업데이트합니다. |
bigquery.transfers.get |
전송 메타데이터를 가져옵니다. |
bigquery.transfers.update |
전송을 생성, 업데이트, 삭제합니다. |
1 사용자가 만드는 모든 작업은 해당 작업에 대해 bigquery.jobs.get
및 bigquery.jobs.update
에 상응하는 권한이 자동으로 부여됩니다.
BigQuery ML 태스크 권한
다음 표에서는 일반적인 BigQuery ML 태스크에 필요한 권한을 설명합니다.
권한 | 설명 |
---|---|
bigquery.jobs.create bigquery.models.create bigquery.models.getData bigquery.models.updateData |
CREATE MODEL 문을 사용하여 새 모델을 만듭니다. |
bigquery.jobs.create bigquery.models.create bigquery.models.getData bigquery.models.updateData bigquery.models.updateMetadata |
CREATE OR REPLACE MODEL 문을 사용하여 기존 모델을 교체합니다. |
bigquery.models.delete |
models.delete API를 사용하여 모델을 삭제합니다. |
bigquery.jobs.create bigquery.models.delete |
DROP MODEL 문을 사용하여 모델을 삭제합니다. |
bigquery.models.getMetadata |
models.get API를 사용하여 모델 메타데이터를 가져옵니다. |
bigquery.models.list |
models.list API를 사용하여 모델과 모델의 메타데이터를 나열합니다. |
bigquery.models.updateMetadata |
models.delete API를 사용하여 모델 메타데이터를 업데이트합니다. 모델의 만료 시간을 0이 아닌 값을 설정하거나 업데이트하는 경우 bigquery.models.delete 권한도 필요합니다. |
bigquery.jobs.create bigquery.models.getData
|
ML.EVALUATE , ML.PREDICT , ML.TRAINING_INFO , ML.WEIGHTS 와 같은 함수를 사용하여 평가, 예측, 모델 및 특성 검사를 수행합니다. |
bigquery.jobs.create bigquery.models.export
|
모델을 내보냅니다. |
bigquery.models.updateTag |
모델의 Data Catalog 태그를 업데이트합니다. |
다음 단계
- 데이터 세트 수준에서 역할을 할당하는 방법에 대한 자세한 내용은 데이터 세트에 대한 액세스 제어를 참조하세요.
- 테이블 또는 뷰 수준에서 역할을 할당하는 방법에 대한 자세한 내용은 테이블 및 뷰에 대한 액세스 제어를 참조하세요.