승인된 뷰
이 문서에서는 BigQuery에서 승인된 뷰와 승인된 구체화된 뷰를 만드는 방법을 설명합니다.
개요
데이터 관리자는 승인된 뷰를 만들어 데이터 세트의 데이터 하위 집합을 특정 사용자 및 그룹(주 구성원)과 공유할 수 있습니다. 주 구성원은 공유된 데이터를 보고 이에 대해 쿼리를 실행할 수 있지만 소스 데이터 세트에 직접 액세스할 수는 없습니다.
뷰 유형
논리적 뷰는 BigQuery의 기본 뷰 유형이며 구체화된 뷰는 성능 및 효율성 향상을 위해 쿼리 결과를 주기적으로 캐시하는 미리 계산된 뷰입니다.
논리적 뷰의 승인된 뷰는 승인된 뷰라고 부르는 반면, 구체화된 뷰의 승인된 뷰는 승인된 구체화된 뷰라고 합니다.
논리적 뷰가 크거나 계산 비용이 높은 쿼리를 사용하는 경우 대신 구체화된 뷰를 만들 수 있습니다. 하지만 구체화된 뷰를 만들지 않아도 데이터의 하위 집합만 쿼리하거나 다른 기법을 사용하여 성능을 개선할 수 있는 경우가 많습니다.
자세한 내용은 다음 리소스를 참조하세요.
승인된 뷰를 만드는 대략적인 단계
뷰를 만들고 공유하려면 승인된 논리적 뷰와 승인된 구체화된 뷰에 동일하게 적용되는 다음 개략적인 단계를 검토하세요.
- 소스 데이터를 포함할 데이터 세트를 만듭니다.
- 쿼리를 실행하여 소스 데이터 세트의 대상 테이블에 데이터를 로드합니다.
- 승인된 뷰를 포함할 데이터 세트를 만듭니다.
- 데이터 분석가가 쿼리 결과에서 볼 수 있는 열을 제한하는 승인된 뷰를 SQL 쿼리에서 만듭니다.
- 데이터 분석가에게 쿼리 작업을 실행할 권한을 부여합니다.
- 데이터 분석가에게 승인된 뷰가 포함된 데이터 세트에 대한 액세스 권한을 부여합니다.
- 소스 데이터 세트에 대한 액세스 권한을 승인된 뷰에 부여합니다.
대안
승인된 뷰는 유연하고 확장 가능하지만 다음 방법 중 하나가 사용 사례에 더 적합할 수 있습니다.
- 테이블에 행 수준 정책을 설정합니다.
- 테이블에 열 수준 정책을 설정합니다.
- 별도의 테이블에 데이터를 저장합니다.
- 데이터 세트(승인된 데이터 세트)의 모든 뷰를 공유합니다.
행 수준 또는 열 수준 보안 또는 별도 테이블 사용
데이터 관리자는 테이블에 행 수준 액세스 정책을 설정하거나 민감한 정보를 저장할 별도의 테이블을 만들어 사용자가 해당 데이터를 볼 수 있는 기능을 제한할 수 있습니다. 별도의 테이블에 데이터를 저장하면 데이터가 격리되고 테이블에 있는 행 수를 확인할 수 없게 됩니다.
또한 데이터 관리자는 정책 태그를 만들어 적용하여 사용자가 테이블의 열을 볼 수 있는 기능을 제한할 수 있습니다.
별도의 테이블에 데이터를 저장하는 것이 가장 안전하지만 유연성이 가장 낮은 방법입니다. 행 수준 정책을 설정하면 유연하고 안전하며, 승인된 뷰를 공유하면 유연할 뿐만 아니라 최상의 성능을 제공할 수 있습니다.
이러한 방법을 자세히 비교하려면 다음 리소스를 참조하세요.
데이터 세트의 모든 뷰 공유
각 개별 뷰를 승인할 필요 없이 뷰 컬렉션에 데이터 세트에 대한 액세스 권한을 부여하려는 경우 해당 뷰를 데이터 세트로 그룹화한 다음 데이터가 포함된 데이터 세트에 뷰 액세스 권한을 부여할 수 있습니다.
그런 다음 필요에 따라 주 구성원에게 데이터 세트에 뷰 그룹이 포함된 데이터세트 또는 개별 뷰에 대해 액세스 권한을 부여할 수 있습니다. 다른 데이터 세트에 액세스할 수 있는 데이터 세트를 승인된 데이터 세트라고 합니다. 다른 데이터 세트가 데이터에 액세스하도록 승인하는 데이터 세트를 공유 데이터 세트라고 합니다.
자세한 내용은 승인된 데이터 세트 및 데이터 세트 승인을 참조하세요.
제한사항
- 다른 데이터 세트에서 승인된 뷰 또는 승인된 구체화된 뷰를 만들 때 소스 데이터 세트와 승인된 뷰 데이터 세트는 모두 같은 리전 위치에 있어야 합니다.
- 승인된 뷰를 삭제하는 경우 뷰 목록에서 승인된 뷰를 삭제하는 데 최대 24시간이 걸릴 수 있습니다. 이 시간 동안에는 승인된 뷰에 액세스할 수 없지만 삭제된 승인된 뷰는 뷰 목록에 나타날 수 있으며 승인된 뷰 한도에 포함됩니다. 이 한도로 인해 새 승인된 뷰가 해당 한도를 초과할 경우 승인된 뷰가 추가로 만들어지지 않을 수 있습니다.
시작하기 전에
공유하는 승인된 뷰 또는 승인된 구체화된 뷰를 쿼리하는 데 필요한 권한을 사용자에게 제공하는 Identity and Access Management(IAM) 역할을 부여합니다.
필요한 역할
승인된 뷰를 만들거나 업데이트하려면 뷰가 포함된 데이터 세트와 뷰에 대한 액세스를 제공하는 데이터 세트에 대한 권한이 필요합니다.
또한 뷰가 포함된 프로젝트 및 데이터 세트에 대한 액세스 권한을 사용자 또는 그룹에 부여해야 합니다.
뷰가 포함된 데이터 세트에 대한 관리자 권한
뷰는 BigQuery에서 테이블 리소스로 취급되므로 뷰를 만들려면 테이블을 만들 때와 동일한 권한이 필요합니다. 뷰의 SQL 쿼리에서 참조하는 모든 테이블을 쿼리할 권한도 필요합니다.
뷰를 만들려면 bigquery.tables.create
IAM 권한이 필요합니다. 사전 정의된 IAM 역할 roles/bigquery.dataEditor
에는 뷰를 만드는 데 필요한 권한이 포함됩니다.
또한 bigquery.datasets.create
권한이 있으면 사용자가 만든 데이터 세트에 뷰를 만들 수 있습니다. 소유하지 않은 데이터의 뷰를 만들려면 해당 테이블에 대한 bigquery.tables.getData
권한이 있어야 합니다.
BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 사전 정의된 역할 및 권한을 참조하세요.
뷰에 대한 액세스 권한을 제공하는 두 번째 데이터 세트에 대한 관리자 권한
데이터 세트 속성을 업데이트하려면 다음 IAM 권한이 필요합니다.
bigquery.datasets.update
bigquery.datasets.setIamPolicy
( Google Cloud 콘솔에서 데이터 세트 액세스 제어를 업데이트할 때만 필요)
사전 정의된 roles/bigquery.dataOwner
IAM 역할에는 데이터 세트 속성을 업데이트하는 데 필요한 권한이 포함됩니다.
또한 bigquery.datasets.create
권한이 있으면 만드는 데이터 세트의 속성을 업데이트할 수 있습니다.
BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 사전 정의된 역할 및 권한을 참조하세요.
뷰의 프로젝트 및 데이터 세트에 대한 사용자 권한
사용자 또는 그룹과 승인된 뷰를 공유하려면 사용자 또는 그룹에 다음 IAM 권한을 부여해야 합니다.
- 승인된 뷰가 포함된 프로젝트에 대한
roles/bigquery.user
IAM 역할 - 승인된 뷰가 포함된 데이터 세트에 대한
roles/bigquery.dataViewer
IAM 역할
승인된 뷰 사용
다음 섹션에서는 승인된 뷰 및 승인된 구체화된 뷰를 사용하는 방법을 설명합니다.
승인된 뷰 만들기
승인된 뷰를 만들려면 다음 옵션 중 하나를 선택합니다. 승인된 뷰를 승인, 공유, 삭제하는 전체 단계는 튜토리얼 승인된 뷰 만들기를 참조하세요.
콘솔
BigQuery 페이지로 이동합니다.
쿼리 편집기에서 승인된 뷰의 기반으로 사용할 쿼리를 입력합니다.
저장 > 뷰 저장을 클릭합니다.
다른 이름으로 저장 대화상자에서 다음을 수행합니다.
프로젝트에 뷰를 저장할 프로젝트를 입력합니다.
데이터 세트에 뷰를 저장할 데이터 세트를 입력합니다. 이는 소스 쿼리에서 사용된 데이터 세트와 다른 데이터 세트여야 합니다.
테이블에 뷰 이름을 입력합니다.
저장을 클릭합니다.
승인된 뷰를 사용할 수 있는 사용자에게 필요한 권한을 부여합니다.
탐색기 창에서 소스 쿼리에 사용된 데이터 세트를 선택합니다.
세부정보 창에서 공유 > 뷰 승인을 클릭합니다.
승인된 뷰 창의 승인된 뷰에 뷰의 정규화된 이름을 PROJECT_ID.DATASET_ID.VIEW_NAME 형식으로 입력합니다.
승인 추가를 클릭합니다.
Terraform
BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
프로젝트에 Terraform 구성을 적용하려면 Google Cloud 다음 섹션의 단계를 완료하세요.
Cloud Shell 준비
- Cloud Shell을 실행합니다.
-
Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.
이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.
디렉터리 준비
각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.
-
Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는
.tf
확장자가 있어야 합니다(예:main.tf
). 이 튜토리얼에서는 파일을main.tf
라고 합니다.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.
샘플 코드를 새로 만든
main.tf
에 복사합니다.필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.
- 환경에 적용할 샘플 파라미터를 검토하고 수정합니다.
- 변경사항을 저장합니다.
-
Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
terraform init
원하는 경우 최신 Google 공급업체 버전을 사용하려면
-upgrade
옵션을 포함합니다.terraform init -upgrade
변경사항 적용
-
구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
terraform plan
필요에 따라 구성을 수정합니다.
-
다음 명령어를 실행하고 프롬프트에
yes
를 입력하여 Terraform 구성을 적용합니다.terraform apply
Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.
- 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.
승인된 뷰의 사용자 또는 그룹 관리
뷰를 승인한 후 데이터 세트, 테이블 또는 뷰에 대해 다음 작업을 완료하여 뷰에 대한 액세스 권한을 유지보수할 수 있습니다.
- 액세스 정책을 확인합니다.
- 액세스 권한을 부여합니다.
- 액세스 권한을 취소합니다.
- 액세스 거부.
자세한 내용은 IAM을 사용하여 리소스 액세스 제어를 참조하세요.
뷰에 대한 승인 삭제
뷰에 대한 승인을 삭제하려면 다음 옵션 중 하나를 선택합니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색기 창에서 프로젝트를 확장하고 데이터 세트를 선택합니다.
> 뷰 승인을 클릭합니다.
공유를 클릭하여 승인을 삭제합니다.
닫기를 클릭합니다.
bq
뷰에서 승인을 삭제하려면 bq rm
명령어를 사용합니다. 승인을 삭제하려는 뷰의 table_id
를 입력합니다.
bq rm \ project_id:dataset:table_id
API
tables.delete
메서드를 호출하고 projectID
,datasetID
, tableID
속성을 사용하여 데이터 세트의 승인된 뷰를 삭제합니다. 자세한 내용은 테이블을 참조하세요.
할당량 및 한도
- 승인된 뷰에는 데이터 세트 한도가 적용됩니다. 자세한 내용은 데이터 세트 한도를 참조하세요.
- 승인된 뷰를 삭제하는 경우 뷰에 대한 모든 참조가 시스템에서 삭제되는 데 최대 24시간이 걸릴 수 있습니다. 오류를 방지하려면 24시간이 지나기를 기다렸다가 삭제된 뷰의 이름을 재사용하거나 뷰에 고유한 이름을 만드세요.
심화 주제
다음 섹션에서는 승인된 뷰를 사용하는 고급 방법을 설명합니다.
행 수준 보안과 승인된 뷰 결합
논리적 뷰 또는 구체화된 뷰에 표시되는 데이터는 기본 소스 테이블의 행 수준 액세스 정책에 따라 필터링됩니다.
행 수준 보안이 구체화된 뷰와 상호작용하는 방식에 대한 자세한 내용은 다른 BigQuery 기능과 함께 행 수준 보안 사용을 참조하세요.
열 수준 보안과 승인된 뷰 결합
열 수준 보안이 뷰에 미치는 영향은 뷰가 승인된 뷰인지 여부와 상관없습니다.
권한이 적용되는 방식에 관한 자세한 설명은 열 수준 보안에 대한 뷰 쿼리를 참조하세요.
승인된 뷰와 함께 BigQuery Sharing 사용
BigQuery Sharing(이전의 Analytics Hub)은 다음과 같은 기능을 갖춘 데이터 교환 플랫폼입니다.
- 조직 경계에서 대규모로 데이터와 인사이트를 공유할 수 있습니다.
- 강력한 보안 및 개인 정보 보호 프레임워크를 사용합니다.
- 공유 데이터 세트라고 하는 BigQuery 데이터 세트와 연결된 승인된 뷰 및 승인된 데이터 세트를 구독자 집합에 게시하는 것을 지원합니다.
연결된 데이터 세트는 공유 데이터 세트에 대한 포인터 또는 참조 역할을 하는 읽기 전용 BigQuery 데이터 세트입니다. Sharing 목록을 구독하면 데이터 세트의 사본이 아닌 프로젝트에 연결된 데이터 세트가 생성되므로 구독자가 데이터를 읽을 수 있지만 그 안에 객체를 추가하거나 업데이트할 수는 없습니다.
연결된 데이터 세트의 테이블을 참조하는 구체화된 뷰는 지원되지 않습니다.
자세한 내용은 Sharing 소개를 참조하세요.
다음 단계
- 승인된 뷰 만들기에 대한 튜토리얼은 승인된 뷰 만들기 참조하기
- 논리적 뷰를 만들려면 논리적 뷰 만들기를 참조하세요.
- 다른 유형의 액세스 제어를 지원하는 구체화된 뷰를 만들려면 구체화된 뷰 만들기를 참조하세요.
- 뷰 메타데이터를 가져오려면 뷰 정보 가져오기를 참조하세요.
- 뷰를 관리하려면 뷰 관리를 참조하세요.