標記資料表、檢視表和資料集
本文件說明如何使用標記,將身分與存取權管理 (IAM) 政策依條件套用至 BigQuery 資料表、檢視和資料集。
您也可以使用標記,透過 IAM 政策對 BigQuery 資料表、檢視和資料集 (預先發布版) 依條件拒絕存取權。詳情請參閱「拒絕政策」。
標記是一種鍵/值組合,可直接附加至資料表、檢視畫面或資料集,或是資料表、檢視畫面或資料集可繼承自其他Google Cloud 資源的鍵/值組合。您可以根據資源是否具備特定標記,有條件地套用政策。舉例來說,您可以將 BigQuery 資料檢視者角色授予任何具有 environment:dev
標記的資料集的實體。
如要進一步瞭解如何在 Google Cloud資源階層中使用標記,請參閱「標記總覽」。
如要同時授予多個相關 BigQuery 資源權限 (包括尚不存在的資源),建議您使用IAM 條件。
限制
您無法在 BigQuery Omni 資料表、隱藏資料集中的資料表或臨時資料表中使用資料表標記。BigQuery Omni 資料集不支援資料集標記。此外,BigQuery Omni 中的跨區查詢在其他區域的資料表存取權控管檢查期間不會使用標記。
您最多可以為資料表或資料集附加 50 個標記。
萬用字元查詢中參照的所有資料表,都必須有完全相同的標記鍵和值。
資料集或資料表的條件式存取權使用者無法透過 Google Cloud 主控台修改該資源的權限。您只能透過 bq 工具和 BigQuery API 修改權限。
部分 BigQuery 以外的服務無法正確驗證身分與存取權管理代碼條件。如果標記條件為正值,表示只有在資源具有特定標記時,使用者才會獲得資源的角色,則系統會拒絕存取該資源,不論該資源附加哪些標記。如果標記條件為否定,表示只有在資源「沒有」特定標記時,才會授予使用者資源角色,則不會檢查標記條件。
舉例來說,Data Catalog 無法驗證 BigQuery 資料集和資料表的 IAM 標記條件。假設有一個條件式 IAM 政策,會將 BigQuery 資料檢視者角色授予具有
employee_type=intern
標記的資料集。由於這是正面標記條件,即使資料集含有employee_type=intern
標記,實習生也無法透過在 Data Catalog 中搜尋來查看資料集。如果標記條件變更為否定條件,實習生就只能查看「沒有」employee_type=intern
標記的資料集,系統會完全略過檢查,實習生就能查看平常無法在 BigQuery 中存取的資料集。
必要的角色
您必須授予 IAM 角色,讓使用者具備執行本文件中各項工作的必要權限。
以下兩個預先定義的 IAM 角色都包含所有必要的 BigQuery 權限:
- BigQuery 資料擁有者 (
roles/bigquery.dataOwner
) - BigQuery 管理員 (
roles/bigquery.admin
)
代碼使用者角色 (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.listTagBindings
IAM 權限。 - 如要列出資料表或檢視表的有效標記,您必須具備
bigquery.tables.listEffectiveTags
IAM 權限。 - 如要使用 Cloud Resource Manager API 或 gcloud CLI 列出附加至資料集的標記,您需要具備
bigquery.datasets.listTagBindings
IAM 權限。 - 如要列出資料集的有效標記,您必須具備
bigquery.datasets.listEffectiveTags
IAM 權限。
建立標記鍵和值
您可以先建立標記,再將標記附加至 BigQuery 資源,也可以在使用Google Cloud 主控台建立資源時手動建立標記。
如要瞭解如何建立標記鍵和標記值,請參閱資源管理工具說明文件中的「建立標記」和「新增標記值」相關章節。
為資料集加上標記
以下各節將說明如何將標記附加至新資料集和現有資料集、列出附加至資料集的標記,以及從資料集中分離標記。
建立新資料集時附加標記
建立標記後,您可以將標記附加至新的 BigQuery 資料集。您只能為任何標記鍵將一個標記值附加至資料集。您最多可為資料集附加 50 個標記。
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中,選取要建立資料集的專案。
依序點選 >「Create dataset」。
「View actions」輸入新資料集的相關資訊。詳情請參閱「建立資料集」。
展開「代碼」部分。
如要套用現有標籤,請按照下列步驟操作:
按一下「選取範圍」旁的下拉式箭頭,然後選擇「目前範圍」:選取目前的機構或「選取目前的專案」。
或者,您也可以按一下「選取範圍」來搜尋資源,或查看目前資源清單。
針對「Key 1」和「Value 1」,請從清單中選擇適當的值。
如要手動輸入新代碼,請按照下列步驟操作:
按一下「選取範圍」旁的下拉式箭頭,然後選擇「手動輸入 ID」>「機構」、「專案」或「標記」。
如果您要為專案或機構建立代碼,請在對話方塊中輸入
PROJECT_ID
或ORGANIZATION_ID
,然後按一下「儲存」。針對「Key 1」和「Value 1」,請從清單中選擇適當的值。
選用:如要為表格新增其他標記,請按一下「新增標記」,然後按照前述步驟操作。
點選「建立資料集」。
SQL
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
CREATE SCHEMA PROJECT_ID.DATASET_ID OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
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 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
API
呼叫 datasets.insert
方法,並將標記新增至 resource_tags
欄位。
將標記附加至現有資料集
建立標記後,即可將標記套用至現有資料集。您只能為任何標記鍵將一個標記值附加至資料集。
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中展開專案並選取資料集。
在「資料集資訊」部分,按一下
「編輯詳細資料」。展開「代碼」部分。
如要套用現有標籤,請按照下列步驟操作:
按一下「選取範圍」旁的下拉式箭頭,然後選擇「目前範圍」:選取目前的機構或「選取目前的專案」。
或者,您也可以按一下「選取範圍」來搜尋資源,或查看目前資源清單。
針對「Key 1」和「Value 1」,請從清單中選擇適當的值。
如要手動輸入新代碼,請按照下列步驟操作:
按一下「選取範圍」旁的下拉式箭頭,然後選擇「手動輸入 ID」>「機構」、「專案」或「標記」。
如果您要為專案或機構建立代碼,請在對話方塊中輸入
PROJECT_ID
或ORGANIZATION_ID
,然後按一下「儲存」。針對「Key 1」和「Value 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')];)
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
以下範例使用 +=
運算子,將標記附加至資料集,且不會覆寫現有標記。如果現有標記的鍵相同,系統會覆寫該標記。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
ALTER SCHEMA PROJECT_ID.DATASET_ID SET OPTIONS ( tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
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
指令建立標記繫結資源:
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/
)。例如://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
方法傳回更新後的資料集資源。
列出資料集附加的標記
下列步驟會提供直接附加至資料集的標記繫結清單。這些方法不會傳回從父項資源繼承的標記。
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中展開專案並選取資料集。
標記會顯示在「Dataset info」部分。
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/
)。例如://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
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>>
) 和 option_value
,其中包含 STRUCT
物件陣列,代表與每個資料集相關聯的標記。如果資料集未指派標記,option_value
欄會傳回空陣列。
SELECT * from region-REGION.INFORMATION_SCHEMA.SCHEMATA_OPTIONS WHERE option_name='tags'
更改下列內容:
REGION
:資料集所在的區域。
從資料集中分離標記
您可以刪除標籤繫結資源,將標籤從資源中分離。如果要刪除代碼,您必須先將其從資料集中分離,再刪除。詳情請參閱刪除標記。
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中展開專案並選取資料集。
在「資料集資訊」部分,按一下
「編輯詳細資料」。在「標記」部分中,找出要刪除的標記,然後按一下旁邊的「刪除項目」圖示
。按一下 [儲存]。
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')];)
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
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。
或者,如要從資料集中移除所有代碼,請使用 bq update
指令搭配 --clear_all_tags
標記:
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/
)。例如://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」頁面。
在「Explorer」窗格中展開專案,然後選取資料集。
在「資料集資訊」部分,按一下
「建立資料表」。輸入新資料表的資訊。詳情請參閱「建立及使用資料表」。
展開「代碼」部分。
如要套用現有標籤,請按照下列步驟操作:
按一下「選取範圍」旁的下拉式箭頭,然後選擇「目前範圍」:選取目前的機構或「選取目前的專案」。
或者,您也可以按一下「選取範圍」來搜尋資源,或查看目前資源清單。
針對「Key 1」和「Value 1」,請從清單中選擇適當的值。
如要手動輸入新代碼,請按照下列步驟操作:
按一下「選取範圍」旁的下拉式箭頭,然後選擇「手動輸入 ID」>「機構」、「專案」或「標記」。
如果您要為專案或機構建立代碼,請在對話方塊中輸入
PROJECT_ID
或ORGANIZATION_ID
,然後按一下「儲存」。針對「Key 1」和「Value 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')];)
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
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 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
API
使用已定義的資料表資源呼叫 tables.insert
方法。在 resource_tags
欄位中加入標記。
將標記附加至現有資料表
建立標記後,即可將標記套用至現有資料表。您只能為任何指定的標記鍵,將一個標記值附加至表格。
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中展開專案和資料集,然後選取資料表。
依序點選「詳細資料」分頁卡 >
「編輯詳情」。展開「代碼」部分。
如要套用現有標籤,請按照下列步驟操作:
按一下「選取範圍」旁的下拉式箭頭,然後選擇「目前範圍」:選取目前的機構或「選取目前的專案」。
或者,您也可以按一下「選取範圍」來搜尋資源,或查看目前資源清單。
針對「Key 1」和「Value 1」,請從清單中選擇適當的值。
如要手動輸入新代碼,請按照下列步驟操作:
按一下「選取範圍」旁的下拉式箭頭,然後選擇「手動輸入 ID」>「機構」、「專案」或「標記」。
如果您要為專案或機構建立代碼,請在對話方塊中輸入
PROJECT_ID
或ORGANIZATION_ID
,然後按一下「儲存」。針對「Key 1」和「Value 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')];)
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
以下範例使用 +=
運算子,將標記附加至資料表,且不會覆寫現有標記。如果現有標記的鍵相同,系統會覆寫該標記。
前往 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')];)
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
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
指令建立標記繫結資源:
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
:表格的完整 ID,包括用於識別資源類型的 API 網域名稱 (//bigquery.googleapis.com/
)。例如://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」頁面。
在「Explorer」窗格中展開專案和資料集,然後選取資料表。
標記會顯示在「Details」分頁中。
bq
使用 bq show
指令,然後尋找 tags
欄。如果表格中沒有代碼,系統就不會顯示 tags
欄。
bq show \ PROJECT_ID:DATASET_ID.TABLE_ID
更改下列內容:
PROJECT_ID
:包含資料表的專案 ID。DATASET_ID
:包含資料表的資料集 ID。TABLE_ID
:資料表的 ID。
gcloud
如要取得已連結至資源的標記繫結清單,請使用 gcloud resource-manager tags bindings list
指令:
gcloud resource-manager tags bindings list \ --parent=RESOURCE_ID \ --location=LOCATION
更改下列內容:
RESOURCE_ID
:表格的完整 ID,包括用於識別資源類型的 API 網域名稱 (//bigquery.googleapis.com/
)。例如://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
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>>
) 和 option_value
,其中包含 STRUCT
物件陣列,代表與每個資料集相關聯的標記。如果是未指派標記的資料表,option_value
欄會傳回空的陣列。
SELECT * from DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name='tags'
請將 DATASET_ID
替換為包含資料表的資料集 ID。
從表格中分離標記
您可以刪除標記繫結,從資料表中移除標記關聯。如果要刪除標記,請先將標記從表格中卸離,再刪除標記。詳情請參閱刪除標記。
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中展開專案和資料集,然後選取資料表。
依序點選「詳細資料」分頁,然後點選
「編輯詳細資料」。在「標記」部分,找出要刪除的標記,然後按一下旁邊的「刪除項目」圖示
。按一下 [儲存]。
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')];)
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
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。
如要從資料表移除所有標記,請使用 bq update
指令搭配 --clear_all_tags
標記:
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
:表格的完整 ID,包括用於識別資源類型的 API 網域名稱 (//bigquery.googleapis.com/
)。例如://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 檢視表、具體化檢視表、複本和快照加上標記。
刪除標記
如果標記已被資料表、檢視畫面或資料集參照,就無法刪除。請先解除所有現有標記繫結資源,再刪除標記鍵或值本身。如要刪除標記鍵和標記值,請參閱刪除標記。
範例
假設您是機構的管理員。您的資料分析師都是「analysts@example.com」群組的成員,該群組在專案 userData
中具有「BigQuery Data Viewer」IAM 角色。公司聘請了一位資料分析師實習生,根據公司政策,該實習生只能查看 userData
專案中的 anonymousData
資料集。您可以使用標記控管他們的存取權。
使用鍵
employee_type
和值intern
建立標記:前往 Google Cloud 控制台的「IAM」頁面。
找出含有您要限制資料集存取權的實習生所在的資料列,然後點選該列中的
「Edit principal」(編輯主體)。在「角色」選單中,選取「BigQuery 資料檢視者」。
按一下「新增條件」。
在「Title」和「Description」欄位中,輸入描述要建立的 IAM 代碼條件值。
在「條件建構工具」分頁中,按一下「新增」。
在「Condition type」選單中,依序選取「Resource」和「Tag」。
在「運算子」選單中,選取「有值」。
在「Value path」欄位中,輸入代碼值路徑的
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
後續步驟
- 如要瞭解 Google Cloud中的標記,請參閱「標記總覽」。
- 如要進一步瞭解如何使用標籤,請參閱「建立及管理標籤」一文。
- 如要瞭解如何使用 IAM 條件控管 BigQuery 資源的存取權,請參閱「使用 IAM 條件控管存取權」。