태그로 액세스 제어
이 문서에서는 액세스 제어를 위해 BigQuery 리소스에 태그를 사용하는 방법을 설명합니다.
태그는 Google Cloud리소스에 연결할 수 있는 키-값 쌍입니다. 다음과 같은 방법으로 BigQuery에서 태그를 사용할 수 있습니다.
- 정책 조건부 부여 또는 거부: BigQuery 테이블, 뷰, 데이터 세트에 태그를 연결하고 Identity and Access Management (IAM)을 사용하여 태그를 기반으로 이러한 리소스에 역할을 조건부로 부여하거나 액세스를 거부할 수 있습니다(미리보기). 거부 정책에 대한 자세한 내용은 거부 정책을 참고하세요.
- 열 수준 액세스 제어: 데이터 거버넌스 태그(미리보기)를 테이블 열에 연결하고 데이터 정책과 함께 사용하여 열 데이터에 대한 액세스를 제한할 수 있습니다.
태그를 리소스에 직접 연결할 수도 있고, Google Cloud 리소스 계층 구조의 상위 리소스에서 상속할 수도 있습니다.
이 문서에서는 IAM과 함께 태그를 사용하여 BigQuery 테이블, 뷰, 데이터 세트에 대한 액세스를 조건부로 부여하거나 거부하는 데 중점을 둡니다.
Google Cloud 리소스 계층 구조에서 태그 사용에 대한 자세한 내용은 태그 개요를 참조하세요.
아직 존재하지 않는 리소스를 포함하여 여러 관련 BigQuery 리소스에 동시에 권한을 부여하려면 IAM 조건을 사용하는 것이 좋습니다.
제한사항
BigQuery Omni 테이블, 숨겨진 데이터 세트의 테이블 또는 임시 테이블에는 테이블 태그가 지원되지 않습니다. BigQuery Omni 데이터 세트에는 데이터 세트 태그가 지원되지 않습니다. 또한 BigQuery Omni의 리전 간 쿼리는 다른 리전의 테이블에 대한 액세스 제어 검사 중에 태그를 사용하지 않습니다.
테이블 또는 데이터 세트에 태그를 최대 50개까지 연결할 수 있습니다.
와일드 카드 쿼리에서 참조하는 모든 테이블의 태그 키와 값 집합이 정확히 동일해야 합니다.
데이터 세트나 테이블에 대한 조건부 액세스 권한이 있는 사용자는 Google Cloud 콘솔을 통해 해당 리소스에 대한 권한을 수정할 수 없습니다. 권한 수정은 bq 도구 및 BigQuery API를 통해서만 지원됩니다.
BigQuery 외부의 일부 서비스는 IAM 태그 조건을 올바르게 확인할 수 없습니다. 태그 조건이 양수인 경우, 즉 리소스에 특정 태그가 있는 경우에만 사용자에게 리소스에 대한 역할이 부여되는 경우, 연결된 태그에 관계없이 리소스에 대한 액세스가 거부됩니다. 태그 조건이 부정인 경우, 즉 해당 리소스에 특정 태그가 없는 경우에만 사용자에게 리소스에 대한 역할이 부여되는 경우에는 태그 조건을 확인하지 않습니다.
필요한 역할
사용자에게 이 문서의 각 태스크를 수행하는 데 필요한 권한을 부여하는 IAM 역할을 부여해야 합니다.
다음과 같은 사전 정의된 두 IAM 역할 모두에는 필요한 모든 BigQuery 권한이 포함되어 있습니다.
- BigQuery 데이터 소유자(
roles/bigquery.dataOwner) - BigQuery 관리자(
roles/bigquery.admin)
태그를 추가하고 삭제하는 Resource Manager 권한은 태그 사용자 역할(roles/resourcemanager.tagUser)에 포함되어 있습니다.
필수 권한
BigQuery에서 태그를 사용하려면 다음 권한이 필요합니다.
| 작업 | BigQuery 인터페이스(API, CLI, 콘솔) 및 Terraform | Cloud Resource Manager API 또는 gcloud |
|---|---|---|
| 테이블이나 뷰에 태그 연결 |
|
|
| 테이블이나 뷰에서 태그 삭제 |
|
|
| 데이터 세트에 태그 연결 |
|
|
| 데이터 세트에서 태그 삭제 |
|
|
Google Cloud 콘솔에서 태그 키와 키 값을 나열하려면 다음 권한이 필요합니다.
상위 조직이나 프로젝트와 연결된 태그 키를 나열하려면 태그 키 상위 수준의
resourcemanager.tagKeys.list권한과 각 태그 키에 대한resourcemanager.tagKeys.get권한이 필요합니다. BigQuery 콘솔에서 태그 키 목록을 보려면 데이터 세트 이름을 클릭한 후 세부정보 수정을 클릭하거나 테이블이나 뷰 이름을 클릭한 후 세부정보 > 세부정보 수정을 클릭합니다.상위 조직이나 프로젝트와 연결된 키의 태그 값을 나열하려면 태그 값 상위 수준의
resourcemanager.tagValues.list권한과 각 태그 값에 대한resourcemanager.tagValues.get권한이 필요합니다. BigQuery 콘솔에서 태그 키 값 목록을 보려면 데이터 세트 이름을 클릭한 후 세부정보 수정을 클릭하거나 테이블이나 뷰 이름을 클릭한 후 세부정보 > 세부정보 수정을 클릭합니다.
Cloud Resource Manager API 또는 gcloud에서 태그를 사용하려면 다음 권한이 필요합니다.
- Cloud Resource Manager API 또는 gcloud CLI를 사용하여 테이블 또는 뷰에 연결된 태그를 나열하려면
bigquery.tables.listTagBindingsIAM 권한이 필요합니다. - 테이블 또는 뷰의 유효 태그를 나열하려면
bigquery.tables.listEffectiveTagsIAM 권한이 필요합니다. - Cloud Resource Manager API 또는 gcloud CLI를 사용하여 데이터 세트에 연결된 태그를 나열하려면
bigquery.datasets.listTagBindingsIAM 권한이 필요합니다. - 데이터 세트의 유효 태그를 나열하려면
bigquery.datasets.listEffectiveTagsIAM 권한이 필요합니다.
태그 키 및 값 만들기
BigQuery 리소스에 태그를 연결하기 전에 태그를 만들거나Google Cloud 콘솔을 사용하여 리소스를 만들 때 수동으로 태그를 만들 수 있습니다.
태그 키와 태그 값을 만드는 방법은 Resource Manager 문서의 태그 만들기 및 태그 값 추가를 참조하세요.
데이터 세트 태그
다음 섹션에서는 새 데이터 세트와 기존 데이터 세트에 태그를 연결하고, 데이터 세트에 연결된 태그를 나열하고, 데이터 세트에서 태그를 분리하는 방법을 설명합니다.
새 데이터 세트를 만들 때 태그 연결
태그를 만든 후 새 BigQuery 데이터 세트에 연결할 수 있습니다. 지정된 태그 키의 데이터 세트에 태그 값 하나만 연결할 수 있습니다. 데이터 세트에 태그를 최대 50개까지 연결할 수 있습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

왼쪽 창이 표시되지 않으면 왼쪽 창 펼치기를 클릭하여 창을 엽니다.
탐색기 창에서 데이터 세트를 만들 프로젝트를 선택합니다.
작업 보기 > 데이터 세트 만들기를 클릭합니다.
새 데이터 세트의 정보를 입력합니다. 자세한 내용은 데이터 세트 만들기를 참조하세요.
태그 섹션을 펼칩니다.
기존 태그를 적용하려면 다음을 수행합니다.
범위 선택 옆에 있는 드롭다운 화살표를 클릭하고 현재 범위(현재 조직 선택 또는 현재 프로젝트 선택)를 선택합니다.
또는 범위 선택을 클릭하여 리소스를 검색하거나 현재 리소스 목록을 확인합니다.
키 1 및 값 1에 목록에서 적절한 값을 선택합니다.
새 태그를 수동으로 입력하려면 다음을 수행합니다.
범위 선택 옆에 있는 드롭다운 화살표를 클릭하고 ID 직접 입력 > 조직, 프로젝트 또는 태그를 선택합니다.
프로젝트나 조직의 태그를 만드는 경우 대화상자에
PROJECT_ID또는ORGANIZATION_ID를 입력한 후 저장을 클릭합니다.키 1 및 값 1에 목록에서 적절한 값을 선택합니다.
선택사항: 테이블에 태그를 추가하려면 태그 추가를 클릭하고 이전 단계를 수행합니다.
데이터 세트 만들기를 클릭합니다.
SQL
CREATE SCHEMA 문을 사용합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE SCHEMA PROJECT_ID.DATASET_ID OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.DATASET_ID: 개발자가 만들 데이터 세트의 IDTAG_KEY_1: 데이터 세트의 첫 번째 태그로 설정하려는 네임스페이스 키 이름(예:'my-project/env'또는'556741164180/department')TAG_VALUE_1: 태그 값 닉네임(예:'prod'또는'sales')TAG_KEY_2: 두 번째 태그의 네임스페이스 키 이름TAG_VALUE_2: 두 번째 태그 값 닉네임
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
--add_tags 플래그와 함께 bq mk --dataset 명령어를 사용합니다.
bq mk --dataset \ --add_tags=TAG \ PROJECT_ID:DATASET_ID
다음을 바꿉니다.
TAG: 새 데이터 세트에 연결할 태그입니다. 태그가 여러 개면 쉼표로 구분합니다. 예를 들면556741164180/env:prod,myProject/department:sales입니다. 각 태그에는 네임스페이스화된 키 이름 및 값 짧은 이름이 있어야 합니다.PROJECT_ID: 데이터 세트를 만들 프로젝트의 ID입니다.DATASET_ID: 새 데이터 세트의 ID
Terraform
google_bigquery_dataset 리소스를 사용합니다.
BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
다음 예시에서는 my_dataset라는 데이터 세트를 만든 후 resource_tags 필드를 채워 태그를 연결합니다.
Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.
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이 리소스를 만들었거나 업데이트했는지 확인합니다.
API
datasets.insert 메서드를 호출하고 resource_tags 필드에 태그를 추가합니다.
기존 데이터 세트에 태그 연결
태그를 만든 후 기존 데이터 세트에 연결할 수 있습니다. 지정된 태그 키의 데이터 세트에 태그 값 하나만 연결할 수 있습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

탐색기 창에서 프로젝트를 펼치고 데이터 세트를 클릭한 후 데이터 세트를 선택합니다.
데이터 세트 정보 섹션에서 세부정보 수정을 클릭합니다.
태그 섹션을 펼칩니다.
기존 태그를 적용하려면 다음을 수행합니다.
범위 선택 옆에 있는 드롭다운 화살표를 클릭하고 현재 범위(현재 조직 선택 또는 현재 프로젝트 선택)를 선택합니다.
또는 범위 선택을 클릭하여 리소스를 검색하거나 현재 리소스 목록을 확인합니다.
키 1 및 값 1에 목록에서 적절한 값을 선택합니다.
새 태그를 수동으로 입력하려면 다음을 수행합니다.
범위 선택 옆에 있는 드롭다운 화살표를 클릭하고 ID 직접 입력 > 조직, 프로젝트 또는 태그를 선택합니다.
프로젝트나 조직의 태그를 만드는 경우 대화상자에
PROJECT_ID또는ORGANIZATION_ID를 입력한 후 저장을 클릭합니다.키 1 및 값 1에 목록에서 적절한 값을 선택합니다.
선택사항: 테이블에 태그를 추가하려면 태그 추가를 클릭하고 이전 단계를 수행합니다.
저장을 클릭합니다.
SQL
ALTER SCHEMA SET OPTIONS 문을 사용합니다.
다음 예시에서는 기존 데이터 세트의 모든 태그를 덮어씁니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
ALTER SCHEMA PROJECT_ID.DATASET_ID SET OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 IDTABLE_ID: 태그를 지정할 테이블의 이름TAG_KEY_1: 테이블의 첫 번째 태그로 설정하려는 네임스페이스 키 이름(예:'my-project/env'또는'556741164180/department')TAG_VALUE_1: 태그 값 닉네임(예:'prod'또는'sales')TAG_KEY_2: 두 번째 태그의 네임스페이스 키 이름TAG_VALUE_2: 두 번째 태그 값 닉네임
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
다음 예시에서는 += 연산자를 사용하여 기존 태그를 덮어쓰지 않고 태그를 데이터 세트에 연결합니다. 기존 태그의 키가 같으면 태그를 덮어씁니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
ALTER SCHEMA PROJECT_ID.DATASET_ID SET OPTIONS ( tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 IDTABLE_ID: 태그를 지정할 테이블의 이름TAG_KEY_1: 테이블의 첫 번째 태그로 설정하려는 네임스페이스 키 이름(예:'my-project/env'또는'556741164180/department')TAG_VALUE_1: 태그 값 닉네임(예:'prod'또는'sales')TAG_KEY_2: 두 번째 태그의 네임스페이스 키 이름TAG_VALUE_2: 두 번째 태그 값 닉네임
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
--add_tags 플래그와 함께 bq update 명령어를 사용합니다.
bq update \ --add_tags=TAG \ PROJECT_ID:DATASET_ID
다음을 바꿉니다.
TAG: 데이터 세트에 연결하는 태그입니다. 태그가 여러 개면 쉼표로 구분합니다. 예를 들면556741164180/env:prod,myProject/department:sales입니다. 각 태그에는 네임스페이스화된 키 이름 및 값 짧은 이름이 있어야 합니다.PROJECT_ID: 기존 데이터 세트가 있는 프로젝트의 ID입니다.DATASET_ID: 기존 데이터 세트의 ID입니다.
gcloud
명령줄을 사용하여 태그를 데이터 세트에 연결하려면 gcloud resource-manager tags bindings create 명령어를 사용하여 태그 binding 리소스를 만듭니다.
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
다음을 바꿉니다.
TAG_VALUE_NAME: 연결할 태그 값의 영구 ID 또는 네임스페이스 이름(예:tagValues/4567890123또는1234567/my_tag_key/my_tag_value)입니다.RESOURCE_ID: 리소스 유형을 식별하는 API 도메인 이름(//bigquery.googleapis.com/)을 포함한 데이터 세트의 전체 ID입니다. 예를 들면//bigquery.googleapis.com/projects/my_project/datasets/my_dataset입니다.LOCATION: 데이터 세트 위치입니다.
Terraform
데이터 세트의 resource_tags 필드에 태그를 추가한 다음 google_bigquery_dataset 리소스를 사용하여 업데이트된 구성을 적용합니다. 자세한 내용은 새 데이터 세트를 만들 때 태그 연결의 Terraform 예시를 참조하세요.
API
datasets.get 메서드를 호출하여 resource_tags 필드를 포함한 데이터 세트 리소스를 가져옵니다. resource_tags 필드에 태그를 추가하고 datasets.update 메서드를 사용하여 업데이트된 데이터 세트 리소스를 다시 전달합니다.
데이터 세트에 연결된 태그 나열
다음 단계에서는 데이터 세트에 직접 연결된 태그 binding 목록을 제공합니다. 이러한 메서드는 상위 리소스에서 상속된 태그를 반환하지 않습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

탐색기 창에서 프로젝트를 펼치고 데이터 세트를 클릭한 후 데이터 세트를 선택합니다.
태그가 데이터 세트 정보 섹션에 표시됩니다.
bq
데이터 세트에 연결된 태그를 나열하려면 bq show 명령어를 사용합니다.
bq show PROJECT_ID:DATASET_ID
다음을 바꿉니다.
PROJECT_ID: 데이터 세트가 포함된 프로젝트의 ID입니다.DATASET_ID: 태그를 나열할 데이터 세트의 ID입니다.
gcloud
리소스에 연결된 태그 바인딩 목록을 가져오려면 gcloud resource-manager tags bindings list 명령어를 사용합니다.
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=LOCATION
다음을 바꿉니다.
RESOURCE_ID: 리소스 유형을 식별하는 API 도메인 이름(//bigquery.googleapis.com/)을 포함한 데이터 세트의 전체 ID입니다. 예를 들면//bigquery.googleapis.com/projects/my_project/datasets/my_dataset입니다.LOCATION: 데이터 세트 위치입니다.
출력은 다음과 비슷합니다.
name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123 parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset tagValue: tagValues/4567890123
gcloud resource-manager tags bindings list를 사용하여 BigQuery 데이터 세트별로 상속된 태그를 나열할 수 있습니다. namespacedTagValue 속성의 --filter 옵션을 사용하여 프로젝트 ID, 태그 값 또는 태그 키에 따라 태그를 필터링할 수도 있습니다.
gcloud resource-manager tags bindings list \
--parent=//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID \
--effective \
--filter=namespacedTagValue:TAG_FILTER
다음을 바꿉니다.
PROJECT_ID: 데이터 세트가 포함된 프로젝트의 ID입니다.DATASET_ID: 데이터 세트 IDTAG_FILTER: 다음 중 하나에 따라 상속된 태그를 필터링할 값을 지정합니다.프로젝트 ID로 태그를 필터링합니다. 예를 들면
myproject입니다.태그 값의 영구 ID 또는 네임스페이스화된 이름을 지정하여 태그 값을 필터링합니다. 예를 들면
tagValues/4567890123또는1234567/my_tag_key/my_tag_value입니다.태그 키의 표시 이름을 지정하여 태그 키를 필터링합니다. 예를 들면
tagkey입니다.
Terraform
terraform state show 명령어를 사용하여 resource_tags 필드를 포함한 데이터 세트의 속성을 나열합니다. 데이터 세트의 Terraform 구성 파일이 실행된 디렉터리에서 이 명령어를 실행합니다.
terraform state show google_bigquery_dataset.default
API
datasets.get 메서드를 호출하여 데이터 세트 리소스를 가져옵니다. 데이터 세트 리소스에는 resource_tags 필드의 데이터 세트에 연결된 태그가 포함됩니다.
뷰
INFORMATION_SCHEMA.SCHEMATA_OPTIONS 뷰를 사용합니다.
예를 들어 다음 쿼리는 한 리전의 모든 데이터 세트에 연결된 모든 태그를 보여줍니다. 이 쿼리는 schema_name(데이터 세트 이름), option_name(항상 'tags'), object_type(항상 ARRAY<STRUCT<STRING, STRING>>), 각 데이터 세트와 연결된 태그를 나타내는 STRUCT 객체의 배열이 포함된 option_value 열이 있는 테이블을 반환합니다. 할당된 태그가 없는 데이터 세트의 경우 option_value 열에서 빈 배열을 반환합니다.
SELECT * from region-REGION.INFORMATION_SCHEMA.SCHEMATA_OPTIONS WHERE option_name='tags'
다음을 바꿉니다.
REGION: 데이터 세트가 있는 리전입니다.
데이터 세트에서 태그 분리
태그 바인딩 리소스를 삭제하여 리소스에서 태그를 분리할 수 있습니다. 태그를 삭제하는 경우 삭제하기 전에 데이터 세트에서 분리해야 합니다. 자세한 내용은 태그 삭제를 참조하세요.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

탐색기 창에서 프로젝트를 펼치고 데이터 세트를 클릭한 후 데이터 세트를 선택합니다.
데이터 세트 정보 섹션에서 세부정보 수정을 클릭합니다.
태그 섹션에서 삭제하려는 태그 옆에 있는 항목 삭제를 클릭합니다.
저장을 클릭합니다.
SQL
ALTER SCHEMA SET OPTIONS 문을 사용합니다.
다음 예시에서는 -= 연산자를 사용하여 데이터 세트에서 태그를 분리합니다. 데이터 세트에서 모든 태그를 분리하려면 tags=NULL 또는 tags=[]를 지정하면 됩니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 IDTABLE_ID: 태그를 분리할 테이블의 이름TAG_KEY_1: 분리할 첫 번째 태그의 네임스페이스 키 이름(예:'my-project/env'또는'556741164180/department')TAG_VALUE_1: 분리할 태그 값의 닉네임(예:'prod'또는'sales')TAG_KEY_2: 분리할 두 번째 태그의 네임스페이스 키 이름TAG_VALUE_2: 분리할 두 번째 태그 값의 닉네임
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
--remove_tags 플래그와 함께 bq update 명령어를 사용합니다.
bq update \ --remove_tags=REMOVED_TAG \ PROJECT_ID:DATASET_ID
다음을 바꿉니다.
REMOVED_TAG: 데이터 세트에서 삭제할 태그입니다. 태그가 여러 개면 쉼표로 구분합니다. 값 쌍이 없는 키만 허용합니다. 예를 들면556741164180/env,myProject/department입니다. 각 태그에는 네임스페이스화된 키 이름이 있어야 합니다.PROJECT_ID: 데이터 세트가 포함된 프로젝트의 ID입니다.DATASET_ID: 태그를 분리할 데이터 세트의 ID입니다.
또는 데이터 세트에서 모든 태그를 삭제하려면 --clear_all_tags 플래그와 함께 bq update 명령어를 사용합니다.
bq update \ --clear_all_tags PROJECT_ID:DATASET_ID
gcloud
명령줄을 사용하여 데이터 세트에서 태그를 분리하려면 gcloud resource-manager tags bindings delete 명령어를 사용하여 태그 바인딩을 삭제합니다.
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
다음을 바꿉니다.
TAG_VALUE_NAME: 분리할 태그 값의 영구 ID 또는 네임스페이스 이름(예:tagValues/4567890123또는1234567/my_tag_key/my_tag_value)입니다.RESOURCE_ID: 리소스 유형을 식별하는 API 도메인 이름(//bigquery.googleapis.com/)을 포함한 데이터 세트의 전체 ID입니다. 예를 들면//bigquery.googleapis.com/projects/my_project/datasets/my_dataset입니다.LOCATION: 데이터 세트 위치입니다.
Terraform
데이터 세트의 resource_tags 필드에서 태그를 삭제한 다음 google_bigquery_dataset 리소스를 사용하여 업데이트된 구성을 적용합니다.
API
datasets.get 메서드를 호출하여 resource_tags 필드를 포함한 데이터 세트 리소스를 가져옵니다. resource_tags 필드에서 태그를 삭제하고 datasets.update 메서드를 사용하여 업데이트된 데이터 세트 리소스를 다시 전달합니다.
테이블 태그하기
다음 섹션에서는 새 테이블과 기존 테이블에 태그를 연결하고, 테이블에 연결된 태그를 나열하고, 테이블에서 태그를 분리하는 방법을 설명합니다.
새 테이블을 만들 때 태그 연결
태그를 만든 후 새 테이블에 연결할 수 있습니다. 지정된 태그 키의 테이블에 태그 값 하나만 연결할 수 있습니다. 테이블에 태그를 최대 50개까지 연결할 수 있습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

탐색기 창에서 프로젝트를 펼치고 데이터 세트를 클릭한 후 데이터 세트를 선택합니다.
데이터 세트 정보 섹션에서 테이블 만들기를 클릭합니다.
새 테이블의 정보를 입력합니다. 자세한 내용은 테이블 만들기 및 사용을 참조하세요.
태그 섹션을 펼칩니다.
기존 태그를 적용하려면 다음을 수행합니다.
범위 선택 옆에 있는 드롭다운 화살표를 클릭하고 현재 범위(현재 조직 선택 또는 현재 프로젝트 선택)를 선택합니다.
또는 범위 선택을 클릭하여 리소스를 검색하거나 현재 리소스 목록을 확인합니다.
키 1 및 값 1에 목록에서 적절한 값을 선택합니다.
새 태그를 수동으로 입력하려면 다음을 수행합니다.
범위 선택 옆에 있는 드롭다운 화살표를 클릭하고 ID 직접 입력 > 조직, 프로젝트 또는 태그를 선택합니다.
프로젝트나 조직의 태그를 만드는 경우 대화상자에
PROJECT_ID또는ORGANIZATION_ID를 입력한 후 저장을 클릭합니다.키 1 및 값 1에 목록에서 적절한 값을 선택합니다.
선택사항: 테이블에 태그를 추가하려면 태그 추가를 클릭하고 이전 단계를 수행합니다.
테이블 만들기를 클릭합니다.
SQL
CREATE TABLE 문을 사용합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.DATASET_ID: 테이블을 만들 데이터 세트의 IDTABLE_ID: 새 테이블 이름TAG_KEY_1: 테이블의 첫 번째 태그로 설정하려는 네임스페이스 키 이름(예:'my-project/env'또는'556741164180/department')TAG_VALUE_1: 태그 값 닉네임(예:'prod'또는'sales')TAG_KEY_2: 두 번째 태그의 네임스페이스 키 이름TAG_VALUE_2: 두 번째 태그 값 닉네임
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
--add_tags 플래그와 함께 bq mk --table 명령어를 사용합니다.
bq mk --table \ --schema=SCHEMA \ --add_tags=TAG \ PROJECT_ID:DATASET_ID.TABLE_ID
다음을 바꿉니다.
SCHEMA: 인라인 스키마 정의입니다.TAG: 새 테이블에 연결할 태그입니다. 태그가 여러 개면 쉼표로 구분합니다. 예를 들면556741164180/env:prod,myProject/department:sales입니다. 각 태그에는 네임스페이스화된 키 이름 및 값 짧은 이름이 있어야 합니다.PROJECT_ID: 테이블을 만들 프로젝트의 ID입니다.DATASET_ID: 테이블을 만들 데이터 세트의 ID입니다.TABLE_ID: 새 테이블 ID
Terraform
google_bigquery_table 리소스를 사용합니다.
BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
다음 예시에서는 mytable이라는 테이블을 만든 후 resource_tags 필드를 채워 태그를 연결합니다.
Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.
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이 리소스를 만들었거나 업데이트했는지 확인합니다.
API
테이블 리소스가 정의된 tables.insert 메서드를 호출합니다.
resource_tags 필드에 태그를 포함합니다.
기존 테이블에 태그 연결
태그를 만든 후 기존 테이블에 연결할 수 있습니다. 지정된 태그 키의 테이블에 태그 값 하나만 연결할 수 있습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

탐색기 창에서 프로젝트를 펼친 다음 데이터 세트를 클릭합니다.
개요 > 테이블을 클릭한 다음 테이블을 선택합니다.
세부정보 탭을 클릭한 후 세부정보 수정을 클릭합니다.
태그 섹션을 펼칩니다.
기존 태그를 적용하려면 다음을 수행합니다.
범위 선택 옆에 있는 드롭다운 화살표를 클릭하고 현재 범위(현재 조직 선택 또는 현재 프로젝트 선택)를 선택합니다.
또는 범위 선택을 클릭하여 리소스를 검색하거나 현재 리소스 목록을 확인합니다.
키 1 및 값 1에 목록에서 적절한 값을 선택합니다.
새 태그를 수동으로 입력하려면 다음을 수행합니다.
범위 선택 옆에 있는 드롭다운 화살표를 클릭하고 ID 직접 입력 > 조직, 프로젝트 또는 태그를 선택합니다.
프로젝트나 조직의 태그를 만드는 경우 대화상자에
PROJECT_ID또는ORGANIZATION_ID를 입력한 후 저장을 클릭합니다.키 1 및 값 1에 목록에서 적절한 값을 선택합니다.
선택사항: 테이블에 태그를 추가하려면 태그 추가를 클릭하고 이전 단계를 수행합니다.
저장을 클릭합니다.
SQL
ALTER TABLE SET OPTIONS 문을 사용합니다.
다음 예시에서는 기존 테이블의 모든 태그를 덮어씁니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 IDTABLE_ID: 태그를 지정할 테이블의 이름TAG_KEY_1: 테이블의 첫 번째 태그로 설정하려는 네임스페이스 키 이름(예:'my-project/env'또는'556741164180/department')TAG_VALUE_1: 태그 값 닉네임(예:'prod'또는'sales')TAG_KEY_2: 두 번째 태그의 네임스페이스 키 이름TAG_VALUE_2: 두 번째 태그 값 닉네임
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
다음 예시에서는 += 연산자를 사용하여 기존 태그를 덮어쓰지 않고 태그를 테이블에 연결합니다. 기존 태그의 키가 같으면 태그를 덮어씁니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 IDTABLE_ID: 태그를 지정할 테이블의 이름TAG_KEY_1: 테이블의 첫 번째 태그로 설정하려는 네임스페이스 키 이름(예:'my-project/env'또는'556741164180/department')TAG_VALUE_1: 태그 값 닉네임(예:'prod'또는'sales')TAG_KEY_2: 두 번째 태그의 네임스페이스 키 이름TAG_VALUE_2: 두 번째 태그 값 닉네임
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
--add_tags 플래그와 함께 bq update 명령어를 사용합니다.
bq update \ --add_tags=TAG \ PROJECT_ID:DATASET_ID.TABLE_ID
다음을 바꿉니다.
TAG: 테이블에 연결할 태그입니다. 태그가 여러 개면 쉼표로 구분합니다. 예를 들면556741164180/env:prod,myProject/department:sales입니다. 각 태그에는 네임스페이스화된 키 이름 및 값 짧은 이름이 있어야 합니다.PROJECT_ID: 테이블이 포함된 프로젝트의 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 ID입니다.TABLE_ID: 업데이트하려는 테이블의 ID입니다.
gcloud
명령줄을 사용하여 태그를 테이블에 연결하려면 gcloud resource-manager tags bindings create 명령어를 사용하여 태그 binding 리소스를 만듭니다.
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
다음을 바꿉니다.
TAG_VALUE_NAME: 연결할 태그 값의 영구 ID 또는 네임스페이스 이름(예:tagValues/4567890123또는1234567/my_tag_key/my_tag_value)입니다.RESOURCE_ID: 리소스 유형을 식별하는 API 도메인 이름(//bigquery.googleapis.com/)을 포함한 테이블의 전체 ID입니다. 예를 들면//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table입니다.LOCATION: 테이블의 위치입니다.
Terraform
테이블의 resource_tags 필드에 태그를 추가한 후 google_bigquery_table 리소스를 사용하여 업데이트된 구성을 적용합니다. 자세한 내용은 새 테이블을 만들 때 태그 연결의 Terraform 예시를 참조하세요.
API
테이블 리소스가 정의된 tables.update 메서드를 호출합니다.
resource_tags 필드에 태그를 포함합니다.
테이블에 연결된 태그 나열
테이블에 직접 연결된 태그를 나열할 수 있습니다. 이 프로세스는 상위 리소스에서 상속된 태그를 나열하지 않습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

탐색기 창에서 프로젝트를 펼친 다음 데이터 세트를 클릭합니다.
개요 > 테이블을 클릭한 다음 테이블을 선택합니다.
태그는 세부정보 탭에 표시됩니다.
bq
bq show 명령어를 사용하고 tags 열을 찾습니다. 테이블에 태그가 없으면 tags 열이 표시되지 않습니다.
bq show \ PROJECT_ID:DATASET_ID.TABLE_ID
다음을 바꿉니다.
PROJECT_ID: 테이블이 포함된 프로젝트의 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 ID입니다.TABLE_ID: 테이블의 ID입니다.
gcloud
리소스에 연결된 태그 binding 목록을 가져오려면 gcloud resource-manager tags bindings list 명령어를 사용합니다.
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=LOCATION
다음을 바꿉니다.
RESOURCE_ID: 리소스 유형을 식별하는 API 도메인 이름(//bigquery.googleapis.com/)을 포함한 테이블의 전체 ID입니다. 예를 들면//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table입니다.LOCATION: 데이터 세트 위치입니다.
출력은 다음과 비슷합니다.
name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123 parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset tagValue: tagValues/4567890123
gcloud resource-manager tags bindings list를 사용하여 BigQuery 테이블에서 상속된 태그를 나열할 수 있습니다. namespacedTagValue 속성의 --filter 옵션을 사용하여 프로젝트 ID, 태그 값 또는 태그 키에 따라 태그를 필터링할 수도 있습니다.
gcloud resource-manager tags bindings list \
--parent=//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID \
--effective \
--filter=namespacedTagValue:TAG_FILTER
다음을 바꿉니다.
PROJECT_ID: 데이터 세트가 포함된 프로젝트의 ID입니다.DATASET_ID: 데이터 세트 IDTAG_FILTER: 다음 중 하나에 따라 상속된 태그를 필터링할 값을 지정합니다.프로젝트 ID로 태그를 필터링합니다. 예를 들면
myproject입니다.태그 값의 영구 ID 또는 네임스페이스화된 이름을 지정하여 태그 값을 필터링합니다. 예를 들면
tagValues/4567890123또는1234567/my_tag_key/my_tag_value입니다.태그 키의 표시 이름을 지정하여 태그 키를 필터링합니다. 예를 들면
tagkey입니다.
Terraform
terraform state show 명령어를 사용하여 resource_tags 필드를 포함한 테이블의 속성을 나열합니다. 테이블의 Terraform 구성 파일이 실행된 디렉터리에서 이 명령어를 실행합니다.
terraform state show google_bigquery_table.default
API
정의된 테이블 리소스를 사용하여 tables.get 메서드를 호출하고 resource_tags 필드를 찾습니다.
뷰
INFORMATION_SCHEMA.TABLE_OPTIONS 뷰를 사용합니다.
예를 들어 다음 쿼리는 데이터 세트의 모든 테이블에 연결된 모든 태그를 보여줍니다. 이 쿼리는 schema_name(데이터 세트 이름), option_name(항상 'tags'), object_type(항상 ARRAY<STRUCT<STRING, STRING>>), 각 데이터 세트와 연결된 태그를 나타내는 STRUCT 객체의 배열이 포함된 option_value 열이 있는 테이블을 반환합니다. 할당된 태그가 없는 테이블의 경우 option_value 열에서 빈 배열을 반환합니다.
SELECT * from DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name='tags'
DATASET_ID를 테이블이 포함된 데이터 세트의 ID로 바꿉니다.
테이블에서 태그 분리
태그 바인딩을 삭제하여 테이블에서 태그 연결을 삭제할 수 있습니다. 태그를 삭제하는 경우 삭제하기 전에 테이블에서 분리해야 합니다. 자세한 내용은 태그 삭제를 참조하세요.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

탐색기 창에서 프로젝트를 펼친 다음 데이터 세트를 클릭합니다.
개요 > 테이블을 클릭한 다음 테이블을 선택합니다.
세부정보 탭을 클릭한 후 세부정보 수정을 클릭합니다.
태그 섹션에서 삭제하려는 태그 옆에 있는 항목 삭제를 클릭합니다.
저장을 클릭합니다.
SQL
ALTER TABLE SET OPTIONS 문을 사용합니다.
다음 예시에서는 -= 연산자를 사용하여 테이블에서 태그를 분리합니다. 테이블에서 모든 태그를 분리하려면 tags=NULL 또는 tags=[]를 지정하면 됩니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 IDTABLE_ID: 태그를 분리할 테이블의 이름TAG_KEY_1: 분리할 첫 번째 태그의 네임스페이스 키 이름(예:'my-project/env'또는'556741164180/department')TAG_VALUE_1: 분리할 태그 값의 닉네임(예:'prod'또는'sales')TAG_KEY_2: 분리할 두 번째 태그의 네임스페이스 키 이름TAG_VALUE_2: 분리할 두 번째 태그 값의 닉네임
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
테이블에서 일부 태그를 삭제하려면 --remove_tags 플래그와 함께 bq update 명령어를 사용합니다.
bq update \ --remove_tags=TAG_KEYS \ PROJECT_ID:DATASET_ID.TABLE_ID
다음을 바꿉니다.
TAG_KEYS: 테이블에서 분리할 태그 키이며 쉼표로 구분됩니다. 예를 들면556741164180/env,myProject/department입니다. 각 태그 키에는 네임스페이스화된 키 이름이 있어야 합니다.PROJECT_ID: 테이블이 포함된 프로젝트의 ID입니다.DATASET_ID: 테이블이 포함된 데이터 세트의 ID입니다.TABLE_ID: 업데이트하려는 테이블의 ID입니다.
테이블에서 모든 태그를 삭제하려면 --clear_all_tags 플래그와 함께 bq update 명령어를 사용합니다.
bq update \ --clear_all_tags \ PROJECT_ID:DATASET_ID.TABLE_ID
gcloud
명령줄을 사용하여 테이블에서 태그 연결을 삭제하려면 gcloud resource-manager tags bindings delete 명령어를 사용하여 태그 바인딩을 삭제합니다.
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
다음을 바꿉니다.
TAG_VALUE_NAME: 삭제할 태그 값의 영구 ID 또는 네임스페이스 이름(예:tagValues/4567890123또는1234567/my_tag_key/my_tag_value)입니다.RESOURCE_ID: 리소스 유형을 식별하는 API 도메인 이름(//bigquery.googleapis.com/)을 포함한 테이블의 전체 ID입니다. 예를 들면//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table입니다.LOCATION: 데이터 세트 위치입니다.
Terraform
테이블의 resource_tags 필드에서 태그를 삭제한 다음 google_bigquery_table 리소스를 사용하여 업데이트된 구성을 적용합니다.
API
정의된 테이블 리소스를 사용하여 tables.update 메서드를 호출하고 resource_tags 필드에서 태그를 삭제합니다. 모든 태그를 삭제하려면 resource_tags 필드를 삭제합니다.
다른 테이블과 유사한 리소스에 태그 지정
마찬가지로 BigQuery 뷰, 구체화된 뷰, 클론, 스냅샷에 태그를 지정할 수 있습니다.
태그 열
열 수준 액세스 제어 및 데이터 마스킹을 위해 데이터 거버넌스 태그로 테이블 열에 태그를 지정할 수 있습니다.
태그 삭제
테이블, 뷰, 데이터 세트에서 참조하는 태그는 삭제할 수 없습니다. 태그 키나 값 자체를 삭제하기 전에 기존 모든 태그 바인딩 리소스를 분리해야 합니다. 태그 키와 태그 값을 삭제하려면 태그 삭제를 참조하세요.
예
조직의 관리자라고 가정해 보겠습니다. 데이터 분석가는 프로젝트 userData에 대한 BigQuery 데이터 뷰어 IAM 역할이 있는 analysts@example.com 그룹의 모든 구성원입니다. 데이터 분석가 인턴은 채용되며 회사 정책에 따라 userData 프로젝트에서 anonymousData 데이터 세트를 볼 수 있는 권한만 부여받아야 합니다.
태그를 사용하여 액세스를 제어할 수 있습니다.
키가
employee_type이고 값이intern인 태그를 만듭니다.
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
제한하려는 데이터 세트 액세스 권한이 있는 인턴이 포함된 행을 찾고 이 행에서 주 구성원 수정을 클릭합니다.
역할 메뉴에서 BigQuery 데이터 뷰어를 선택합니다.
조건 추가를 클릭합니다.
제목 필드와 설명 필드에 만들려는 IAM 태그 조건을 설명하는 값을 입력합니다.
조건 작성 도구 탭에서 추가를 클릭합니다.
조건 유형 메뉴에서 리소스를 선택한 후 태그를 선택합니다.
연산자 메뉴에서 값 있음을 선택합니다.
값 경로 필드에
ORGANIZATION/TAG_KEY/TAG_VALUE형식으로 태그 값 경로(예:example.org/employee_type/intern)를 입력합니다.
이 IAM 태그 조건은
intern태그가 있는 데이터 세트에 대한 인턴의 액세스 권한을 제한합니다.태그 조건을 저장하려면 저장을 클릭합니다.
권한 수정 창에서 변경한 모든 사항을 저장하려면 저장을 클릭합니다.
intern태그 값을anonymousData데이터 세트에 연결하려면 명령줄을 사용하여gcloud resource-manager tags bindings create명령어를 실행합니다. 예를 들면 다음과 같습니다.gcloud resource-manager tags bindings create \ --tag-value=tagValues/4567890123 \ --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \ --location=US
데이터 거버넌스 태그로 열에 대한 액세스 제어
데이터 거버넌스 태그를 사용하여 BigQuery에서 열 수준 보안 및 데이터 마스킹을 적용할 수 있습니다. 데이터 거버넌스 태그는 민감한 열에 연결하고 BigQuery 데이터 정책에서 사용하여 사용자에게 조건부 액세스 권한을 부여할 수 있는 리소스 관리자 태그의 한 유형입니다.
데이터 거버넌스 태그를 만들고 BigQuery 열에 연결하여 열 수준 보안을 구성합니다. 그런 다음 이러한 태그를 참조하는 BigQuery 데이터 정책 데이터 정책을 만듭니다. 이러한 정책은 데이터 마스킹 규칙을 적용하거나 특정 사용자에게 원시 데이터 액세스 권한을 부여하여 승인된 보안 주체만 민감한 데이터를 볼 수 있도록 합니다.
자세한 내용은 열 수준 액세스 제어 소개 및 데이터 마스킹 소개를 참고하세요.
거버넌스 태그를 시작하기 전에
-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init - 데이터 거버넌스 태그를 만들고 관리하려면 BigQuery Enterprise edition을 사용해야 합니다.
데이터 거버넌스 태그에 필요한 역할
데이터 거버넌스 태그로 열 액세스를 제어하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
- 데이터 거버넌스 태그를 만듭니다.
-
열에 태그를 연결하거나 삭제합니다.
- 테이블에 대한 BigQuery 데이터 소유자 (
roles/bigquery.dataOwner) - 조직, 프로젝트 또는 태그 값에 대한 태그 사용자 (
roles/resourcemanager.tagUser)
- 테이블에 대한 BigQuery 데이터 소유자 (
-
데이터 정책 만들기 및 관리: 프로젝트의 BigQuery 관리자 (
roles/bigquerydatapolicy.admin)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
데이터 거버넌스 태그 만들기
데이터 거버넌스 태그 키와 값을 만듭니다.
태그 키 만들기
데이터 거버넌스 태그의 키를 만들려면 태그 키를 만들 때 purpose 필드를 DATA_GOVERNANCE로 설정합니다. 이 용도를 설정하면 열 수준 보안 또는 데이터 마스킹을 위한 태그가 분류되고 BigQuery의 일반 리소스 태그와 구분됩니다.
gcloud
gcloud resource-manager tags keys create명령어를 실행합니다.gcloud resource-manager tags keys create TAG_KEY \ --parent=projects/PROJECT_ID \ --purpose=DATA_GOVERNANCE다음을 바꿉니다.
TAG_KEY: 태그 키의 닉네임입니다.PROJECT_ID: Google Cloud프로젝트의 ID 프로젝트 대신 조직을 제공하려면projects/PROJECT_ID대신organizations/ORGANIZATION_ID를 사용하세요.
API
tagKeys엔드포인트에POST요청을 전송합니다.curl --request POST \ "https://cloudresourcemanager.googleapis.com/v3/tagKeys" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{"shortName":"TAG_KEY","parent":"projects/PROJECT_ID","purpose":"DATA_GOVERNANCE"}' \ --compressed다음을 바꿉니다.
TAG_KEY: 태그 키의 닉네임입니다.PROJECT_ID: Google Cloud프로젝트의 ID 프로젝트 대신 조직을 제공하려면projects/PROJECT_ID대신organizations/ORGANIZATION_ID를 사용하세요.
태그 값 만들기
태그 키에 하나 이상의 값을 추가하려면 다음 단계를 따르세요.
gcloud
gcloud resource-manager tags keys list명령어를 실행하여 태그 키의 네임스페이스 이름을 가져옵니다.gcloud resource-manager tags keys list --parent=projects/PROJECT_IDgcloud resource-manager tags values create명령어를 실행하여 새 값을 만듭니다.gcloud resource-manager tags values create TAG_VALUE \ --parent=PROJECT_ID/TAG_KEY다음을 바꿉니다.
TAG_VALUE: 사용자가 지정한 태그 값의 닉네임입니다.PROJECT_ID: Google Cloud프로젝트의 ID 프로젝트 대신 조직을 제공하려면ORGANIZATION_ID를 대신 사용하세요.
API
태그 키의 네임스페이스화된 이름을 가져옵니다.
curl --request GET \ "https://cloudresourcemanager.googleapis.com/v3/tagKeys/namespaced?name=PROJECT_ID/TAG_KEY" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json'응답에는
name필드(예:tagKeys/4567890123)가 포함됩니다.태그 키 이름과 함께
tagValues엔드포인트에POST요청을 보냅니다.curl --request POST \ "https://cloudresourcemanager.googleapis.com/v3/tagValues" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{"shortName":"TAG_VALUE","parent":"tagKeys/TAG_KEY_ID"}' \ --compressed다음을 바꿉니다.
TAG_VALUE: 사용자가 지정한 태그 값의 닉네임입니다.PROJECT_ID: Google Cloud프로젝트의 ID 프로젝트 대신 조직을 제공하려면ORGANIZATION_ID를 대신 사용하세요.TAG_KEY_ID: 1단계의 태그 키에 대한 네임스페이스 이름입니다. 예를 들어 태그 키 이름이tagKeys/4567890123이면 태그 키 ID는4567890123입니다.
계층 구조 태그 값 만들기
선택적으로 태그 값에 의해 상위가 지정된 하위 태그 값을 만들어 데이터 거버넌스 태그 값의 계층형 트리를 만들 수 있습니다. 계층 구조는 다음 다이어그램과 같이 5개 수준일 수 있습니다.
gcloud
하위 태그 값을 만들려면 gcloud resource-manager tags values create 명령어를 실행하고 --parent 플래그에 상위 태그 값을 지정합니다.
gcloud resource-manager tags values create CHILD_TAG_VALUE \
--parent=PROJECT_ID/TAG_KEY/PARENT_TAG_VALUE
다음을 바꿉니다.
CHILD_TAG_VALUE: 만들려는 하위 태그 값의 닉네임입니다.PROJECT_ID: Google Cloud 프로젝트의 ID입니다. 프로젝트 대신 조직을 제공하려면ORGANIZATION_ID를 사용하세요.TAG_KEY: 태그 값의 상위 태그 키의 닉네임입니다.PARENT_TAG_VALUE: 상위 태그 값의 닉네임입니다.
API
하위 태그 값을 만들려면 parent 필드에서 상위 태그 값의 태그 값 리소스 이름 (예: tagValues/123456789012)을 사용합니다.
curl --request POST \
"https://cloudresourcemanager.googleapis.com/v3/tagValues" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"shortName":"CHILD_TAG_VALUE","parent":"tagValues/PARENT_TAG_VALUE_ID"}' \
--compressed
다음을 바꿉니다.
CHILD_TAG_VALUE: 만들려는 하위 태그 값의 닉네임입니다.PARENT_TAG_VALUE_ID: 상위 태그 값의 숫자 ID입니다.
BigQuery 열에 데이터 거버넌스 태그 연결
생성한 데이터 거버넌스 태그를 보호할 BigQuery 열에 연결합니다.
SQL
태그가 지정된 열로 새 테이블 만들기
새 테이블을 만들 때 데이터 거버넌스 태그를 연결하려면 CREATE TABLE 문을 사용합니다. 열에서 data_governance_tags 옵션을 설정하여 태그를 지정합니다.
CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID (
COLUMN_NAME INT64 OPTIONS (data_governance_tags=[("PROJECT_ID/TAG_KEY", "TAG_VALUE")])
);
다음을 바꿉니다.
PROJECT_ID: Google Cloud 프로젝트의 ID입니다. 태그의 상위 항목으로 프로젝트 대신 조직을 제공하려면 태그 키 형식 (ORGANIZATION_ID/TAG_KEY)에ORGANIZATION_ID를 대신 사용하세요.DATASET_ID: 테이블이 있는 데이터 세트의 ID입니다.TABLE_ID: 만들려는 테이블의 ID입니다.COLUMN_NAME: 태그할 열의 이름입니다.TAG_KEY: 적용할 태그 키입니다.TAG_VALUE: 적용할 태그 값입니다.
기존 테이블에 태그 추가
기존 테이블의 열에 데이터 거버넌스 태그를 연결하려면 ALTER TABLE 문을 사용하여 열에 data_governance_tags 옵션을 설정합니다.
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
ALTER COLUMN COLUMN_NAME SET OPTIONS (data_governance_tags=[("PROJECT_ID/TAG_KEY", "TAG_VALUE")]);
bq CLI
태그가 지정된 열로 새 테이블 만들기
태그를 정의하는 로컬 JSON 스키마 파일을 만들려면
bq mk명령어를 실행합니다.bq mk \ --table \ --project_id=PROJECT_ID \ --description="description of my table" \ --schema=SCHEMA_FILE.json \ DATASET_ID.TABLE_ID다음을 바꿉니다.
PROJECT_ID: Google Cloud프로젝트의 ID 태그의 상위 항목으로 프로젝트 대신 조직을 제공하려면 태그 키 형식 (ORGANIZATION_ID/TAG_KEY)에ORGANIZATION_ID를 대신 사용하세요.DATASET_ID: 테이블이 있는 데이터 세트의 ID입니다.TABLE_ID: 만들려는 테이블의 ID입니다.
기존 테이블에 태그 추가
기존 테이블에 태그를 추가하려면 먼저 스키마를 로컬 파일로 내보내세요.
bq show \ --project_id=PROJECT_ID \ --schema \ --format=prettyjson \ DATASET_ID.TABLE_ID > SCHEMA_FILE.json스키마 파일을 수정하여
dataGovernanceTagsInfo객체를 열에 추가합니다. 예를 들면 다음과 같습니다.[ { "description": "my sensitive column", "mode": "NULLABLE", "name": "Column_X", "type": "INT64", "dataGovernanceTagsInfo": { "dataGovernanceTags": { "PROJECT_ID/TAG_KEY": "TAG_VALUE" } } }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" } ]bq update명령어를 사용하여 민감한 열에 태그를 연결하도록 테이블을 업데이트합니다.bq update \ --project_id=PROJECT_ID \ --schema=SCHEMA_FILE.json \ DATASET_ID.TABLE_IDbq update명령어를 사용하여 기존 태그를 삭제하고 새 태그를 연결할 수도 있습니다.
API
태그가 지정된 열로 새 테이블 만들기
tables.insert 메서드를 사용합니다. 요청 본문에 dataGovernanceTagsInfo 필드를 포함합니다.
```json
{
"schema": {
"fields": [
{
"name": "Column_X",
"type": "INT64",
"description": "sensitive column",
"dataGovernanceTagsInfo": {
"dataGovernanceTags": {
"PROJECT_ID/TAG_KEY": "TAG_VALUE"
}
}
}
]
}
}
```
기존 테이블에 태그 추가
tables.get메서드를 사용하여 현재 테이블 리소스를 가져옵니다.대상 열의
dataGovernanceTagsInfo필드를 포함하도록 표 리소스를 수정합니다.업데이트된 테이블 리소스를 사용하여
tables.update또는tables.patch메서드를 호출합니다.
데이터 정책 만들기 및 관리
데이터 거버넌스 태그를 참조하여 마스킹 규칙 또는 원시 데이터 액세스 정책을 적용하는 BigQuery 데이터 정책을 만들고 관리합니다.
태그가 지정된 열에 데이터 정책이 생성된 후에는 테이블에 대한 액세스 권한도 있는 해당 정책에 지정된 사용자만 열에 액세스할 수 있습니다. 다른 모든 사용자는 액세스가 거부됩니다.
데이터 정책 만들기
API
사전 정의된 SHA256 마스킹 규칙을 사용하는 데이터 정책을 만들거나 원시 데이터 액세스 정책을 만듭니다.
사전 정의된 SHA256 마스킹 규칙으로 데이터 정책 만들기
사전 정의된 SHA256 마스킹 규칙으로 데이터 정책을 만들려면 dataPolicies 엔드포인트에 POST 요청을 보냅니다.
curl --request POST \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"dataPolicy":{"dataPolicyType":"DATA_MASKING_POLICY","dataMaskingPolicy":{"predefinedExpression":"SHA256"},"grantees": ["principal://goog/subject/EMAIL_ADDRESS"],"dataGovernanceTag":{"key":"PROJECT_ID/TAG_KEY","value":"TAG_VALUE"}},"dataPolicyId":"POLICY_ID"}' \
--compressed
다음을 바꿉니다.
PROJECT_ID: Google Cloud프로젝트의 ID 태그의 상위 항목으로 프로젝트 대신 조직을 제공하려면dataGovernanceTag.key형식 (ORGANIZATION_ID/TAG_KEY) 대신ORGANIZATION_ID를 사용하세요.LOCATION: 데이터 정책을 만들려는 리전입니다. 자세한 내용은 데이터 정책 위치를 참고하세요.EMAIL_ADDRESS: 액세스 권한을 부여할 사용자의 이메일 주소입니다.TAG_KEY: 태그 키의 닉네임입니다.TAG_VALUE: 태그 값의 사용자 지정 닉네임입니다.POLICY_ID: 데이터 정책의 ID입니다.
원시 데이터 액세스 정책 만들기
원시 데이터 액세스 정책을 만들려면 dataPolicyType을 RAW_DATA_ACCESS_POLICY로 설정하세요.
curl --request POST \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"dataPolicy":{"dataPolicyType":"RAW_DATA_ACCESS_POLICY","grantees": ["principal://goog/subject/EMAIL_ADDRESS"],"dataGovernanceTag":{"key":"PROJECT_ID/TAG_KEY","value":"TAG_VALUE"}},"dataPolicyId":"POLICY_ID"}' \
--compressed
데이터 정책 업데이트
기존 데이터 정책을 업데이트하여 추가 사용자에게 액세스 권한을 부여합니다.
API
정책을 직접 업데이트하여 사용자를 추가하려면 먼저 현재 정책과 해당
etag를 가져옵니다.curl --request GET \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --compressed업데이트된 수혜자 목록과 이전 단계의
etag을 사용하여PATCH요청을 보냅니다.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"], "etag": "ETAG" }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID?updateMask=grantees"ETAG을 이전 단계의GET요청에서 반환된etag값으로 바꿉니다.또는
addGrantees메서드를 사용하여 정책에 사용자를 추가합니다.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"] }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID:addGrantees"정책에서 사용자를 삭제하려면
removeGrantees메서드를 사용합니다.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"] }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID:removeGrantees"
데이터 정책 삭제
API
데이터 정책을 삭제하려면 DELETE 요청을 dataPolicies 엔드포인트에 전송합니다.
curl --request DELETE \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--compressed
데이터 정책 나열
API
태그 키를 참조하는 데이터 정책을 나열하려면 filter 매개변수를 사용하여 dataPolicies 엔드포인트에 GET 요청을 보냅니다.
curl --request GET \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies?filter=dataGovernanceTag:PROJECT_ID/TAG_KEY" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--compressed
다른 기능과의 상호작용
이 섹션에서는 데이터 거버넌스 태그가 다른 BigQuery 기능과 상호작용하는 방법을 설명합니다.
| 기능 | 상호작용 |
|---|---|
| 정보 스키마 | 열에 연결된 데이터 거버넌스 태그는 INFORMATION_SCHEMA.COLUMNS 및 INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 뷰에 포함됩니다. |
| 테이블 복사 | 데이터 거버넌스 태그가 있는 테이블을 비롯해 열 수준 보안 기능이 있는 테이블의 경우 리전 간 테이블 복사가 사용 중지됩니다. |
| 시간 이동 | 이전 테이블 데이터에 대한 액세스는 테이블에 연결된 액세스 정책 및 태그에 의거하여 관리됩니다. |
기본 데이터 정책 프로젝트 구성
데이터 거버넌스 태그로 보호된 열에 액세스하면 BigQuery는 기본적으로 테이블이 있는 프로젝트의 데이터 정책만 평가합니다. 관리자가 조직 수준에서 기본 데이터 정책 프로젝트를 구성하지 않는 한 다른 프로젝트에 정의된 데이터 정책은 적용되지 않습니다.
조직에 기본 데이터 정책 프로젝트가 구성된 경우 BigQuery는 열 액세스를 결정할 때 테이블 프로젝트의 데이터 정책과 기본 데이터 정책 프로젝트의 데이터 정책을 모두 평가합니다.
사용자에게 테이블의 프로젝트와 기본 데이터 정책 프로젝트 모두에서 충돌하는 데이터 정책이 적용되는 경우 테이블의 프로젝트에 있는 데이터 정책이 우선 적용됩니다.
DDL 또는 INFORMATION_SCHEMA 뷰를 사용하여 조직 수준에서 default_data_policy_projects 옵션을 설정하거나 보려면 기본 구성 문서의 데이터 관리 설정을 참고하세요.
데이터 거버넌스 태그의 제한사항
- BigQuery Omni 테이블은 열의 데이터 거버넌스 태그를 지원하지 않습니다.
- Google Cloud 콘솔을 사용하여 열의 데이터 거버넌스 태그를 볼 수는 있지만 바인딩하거나 바인딩 해제할 수는 없습니다.
- 열당 하나의 태그와 테이블당 최대 1,000개의 고유 태그를 바인딩할 수 있습니다.
- BigQuery Storage Read API,
tabledata.list호출 또는 와일드 카드 테이블을 사용하여 태그된 열을 쿼리하는 경우 데이터 정책에서 액세스 권한을 부여하지 않으면 액세스 거부 오류가 표시됩니다. STRUCT필드의 경우 리프 필드에만 데이터 거버넌스 태그를 적용할 수 있습니다.- 열에 연결된 태그 값을 삭제할 수 있습니다. 태그 값을 삭제하면 태그 바인딩은 열에 유지되지만 태그 값이 더 이상 존재하지 않으므로 열에 대한 액세스 권한이 손실될 수 있습니다.
데이터 거버넌스 태그 문제 해결
이 섹션에서는 데이터 거버넌스 태그가 있는 열에 대한 액세스를 제어할 때 발생하는 일반적인 문제를 해결하는 방법을 설명합니다.
태그 이름의 형식이 잘못됨
태그를 만들 때 닉네임 (예: ssn)을 정의합니다. 하지만 스키마의 열에 태그를 연결하거나 조건에서 태그를 사용하는 경우 태그 키는 네임스페이스 형식 (PROJECT_ID/TAG_KEY 또는 ORGANIZATION_ID/TAG_KEY)을 사용해야 하지만 태그 값은 여전히 닉네임을 사용합니다. 태그 키의 닉네임만 제공하면 Invalid tagKey 또는 Invalid
tagValue 오류가 발생합니다.
교차 프로젝트 정책 적용
기본적으로 테이블 프로젝트의 데이터 정책만 평가됩니다. 조직 수준에서 기본 데이터 정책 프로젝트가 구성되지 않는 한 다른 프로젝트의 정책은 적용되지 않습니다. 프로젝트 간 정책 구성 및 평가에 대한 자세한 내용은 기본 데이터 정책 프로젝트 구성을 참고하세요.
다음 단계
- Google Cloud의 태그에 대한 개요는 태그 개요를 참조하세요.
- 태그 사용 방법에 대한 자세한 내용은 태그 생성 및 관리를 참조하세요.
- 열에 정책을 적용하는 방법을 자세히 알아보세요.
- IAM 조건으로 BigQuery 리소스에 대한 액세스를 제어하는 방법에 관한 자세한 내용은 IAM 조건으로 액세스 제어를 참조하세요.