Memberi tag pada tabel dan set data
Dokumen ini menjelaskan cara menggunakan tag untuk menerapkan kebijakan Identity and Access Management (IAM) secara kondisional ke tabel dan set data BigQuery.
Tag adalah pasangan nilai kunci yang dapat Anda lampirkan langsung ke tabel atau set data, atau yang dapat diwarisi oleh tabel atau set data dari resource Google Cloud lainnya. Anda dapat menerapkan kebijakan secara bersyarat berdasarkan apakah resource memiliki tag tertentu atau tidak. Misalnya, Anda dapat memberikan peran BigQuery Data Viewer secara bersyarat ke akun utama di set data apa pun dengan tag environment:dev
.
Untuk mengetahui informasi selengkapnya tentang penggunaan tag di seluruh hierarki resource Google Cloud, lihat Ringkasan tag.
Untuk memberikan izin ke banyak resource BigQuery terkait secara bersamaan, termasuk resource yang belum ada, pertimbangkan untuk menggunakan IAM Conditions.
Izin yang diperlukan
Untuk menggunakan tag di BigQuery, Anda memerlukan izin berikut:
- Untuk melampirkan tag ke set data, Anda memerlukan izin IAM
bigquery.datasets.createTagBinding
pada set data, dan izinresourcemanager.tagValueBindings.create
di tingkat project pada nilai tag yang ingin Anda lampirkan. - Untuk melampirkan tag ke tabel, Anda memerlukan izin IAM
bigquery.tables.createTagBinding
pada tabel, dan izinresourcemanager.tagValueBindings.create
di level project pada nilai tag yang ingin Anda lampirkan. - Untuk menghapus tag dari set data, Anda memerlukan izin IAM
bigquery.datasets.deleteTagBinding
pada set data, dan izinresourcemanager.tagValueBindings.delete
di tingkat project pada nilai tag yang ingin dihapus. - Untuk menghapus tag dari tabel, Anda memerlukan izin IAM
bigquery.tables.deleteTagBinding
pada tabel, dan izinresourcemanager.tagValueBindings.delete
di tingkat project pada nilai tag yang ingin dihapus. - Untuk mencantumkan tag yang dilampirkan ke set data atau melihat bagian Tags di panel Edit details untuk set data, Anda memerlukan izin IAM
bigquery.datasets.listTagBindings
. - Untuk mencantumkan kunci tag yang terkait dengan organisasi atau project induk di panel Edit details untuk set data atau tabel, Anda memerlukan izin
resourcemanager.tagKeys.list
di tingkat induk kunci tag dan izinresourcemanager.tagKeys.get
untuk setiap kunci tag. - Untuk mencantumkan nilai tag kunci yang terkait dengan organisasi atau project induk di panel Edit details untuk set data atau tabel, Anda memerlukan izin
resourcemanager.tagValues.list
di tingkat induk nilai tag dan izinresourcemanager.tagValues.get
untuk setiap nilai tag.
Kedua peran IAM yang telah ditetapkan berikut mencakup semua izin BigQuery yang diperlukan:
- BigQuery Data Owner (
roles/bigquery.dataOwner
) - BigQuery Admin (
roles/bigquery.admin
)
Izin Resource Manager disertakan dalam peran Tag User (roles/resourcemanager.tagUser
).
Anda juga dapat menggunakan tag untuk menolak akses secara bersyarat dengan kebijakan IAM ke tabel dan set data BigQuery (pratinjau). Untuk mengetahui informasi selengkapnya, lihat Kebijakan penolakan.
Membuat kunci dan nilai tag
Sebelum dapat memasang tag, Anda harus membuat tag dan mengonfigurasi nilainya. Untuk membuat kunci tag dan nilai tag, baca artikel Membuat tag dan Menambahkan nilai tag.
Memasang tag ke set data
Setelah membuat tag, Anda dapat memasangnya ke set data. Anda hanya dapat memasang satu nilai tag ke set data untuk setiap kunci tag tertentu. Anda dapat melampirkan maksimal 50 tag ke set data.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data.
Di bagian Dataset info, klik
Edit details.Di bagian Tags, pilih tag yang ingin Anda tambahkan ke set data.
Klik Save.
gcloud
Untuk memasang tag ke set data menggunakan command line, buat resource binding tag menggunakan perintah gcloud resource-manager tags bindings create
:
gcloud resource-manager tags bindings create \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Ganti kode berikut:
TAGVALUE_NAME
: ID permanen atau nama dengan namespace dari nilai tag yang akan dipasang, sepertitagValues/4567890123
atau1234567/my_tag_key/my_tag_value
RESOURCE_ID
: ID lengkap set data, termasuk nama domain API (//bigquery.googleapis.com/
) untuk mengidentifikasi jenis resource—misalnya,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset
LOCATION
: lokasi set data Anda
Mencantumkan tag yang dipasang ke set data
Langkah-langkah berikut menyediakan daftar binding tag yang dipasang langsung ke set data. API ini tidak menampilkan tag apa pun yang diwarisi dari resource induk.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data.
Tag akan muncul di bagian Info set data.
gcloud
Untuk mendapatkan daftar binding tag yang dipasang ke resource, gunakan perintah gcloud resource-manager tags bindings list
:
gcloud resource-manager tags bindings list \ --parent=RESOURCE_ID \ --location=LOCATION
Ganti kode berikut:
RESOURCE_ID
: ID lengkap set data, termasuk nama domain API (//bigquery.googleapis.com/
) untuk mengidentifikasi jenis resource—misalnya,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset
LOCATION
: lokasi set data Anda
Output-nya akan mirip dengan berikut ini:
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
Melepaskan tag dari set data
Anda dapat melepaskan tag dari resource dengan menghapus resource binding tag. Jika perlu menghapus tag, Anda harus melepaskan tag tersebut terlebih dahulu.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data.
Di bagian Dataset info, klik
Edit details.Di bagian Tags, klik
Delete item di samping tag yang ingin dihapus.Klik Save.
gcloud
Untuk melepaskan tag dari set data menggunakan command line, hapus binding tag menggunakan perintah gcloud alpha resource-manager tags bindings delete
:
gcloud alpha resource-manager tags bindings delete \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Ganti kode berikut:
TAGVALUE_NAME
: ID permanen atau nama dengan namespace untuk nilai tag yang akan dipasang, sepertitagValues/4567890123
atau1234567/my_tag_key/my_tag_value
RESOURCE_ID
: ID lengkap set data, termasuk nama domain API (//bigquery.googleapis.com/
) untuk mengidentifikasi jenis resource—misalnya,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset
LOCATION
: lokasi set data Anda
Lampirkan tag saat membuat tabel baru
Setelah membuat tag, Anda dapat melampirkannya ke tabel baru. Anda hanya dapat melampirkan satu nilai tag ke set data untuk kunci tag tertentu. Anda dapat melampirkan maksimal 50 tag ke tabel.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project Anda, lalu pilih set data.
Di bagian Dataset info, klik
Create table.Masukkan informasi untuk tabel baru Anda. Untuk mengetahui detail selengkapnya, lihat Membuat dan menggunakan tabel.
Di bagian Tags, pilih tag yang ingin Anda tambahkan ke tabel baru. Anda tidak dapat memasukkan ID tag secara manual pada langkah ini. Anda hanya dapat memilih tag dari project atau organisasi Anda.
Klik Create table.
bq
Gunakan perintah bq mk --table
dengan flag --add_tags
:
bq mk --table \ --schema=SCHEMA \ --add_tags=TAGS \ PROJECT_ID:DATASET_ID.TABLE_ID
Ganti kode berikut:
SCHEMA
: definisi skema inline.TAGS
: tag yang Anda lampirkan ke tabel baru, yang dipisahkan dengan koma—misalnya,556741164180/env:prod,myProject/department:sales
. Setiap tag harus memiliki nama kunci dengan namespace dan nama pendek nilai.PROJECT_ID
: ID project tempat Anda membuat tabel.DATASET_ID
: ID set data tempat Anda membuat tabel.TABLE_ID
: ID tabel baru yang Anda buat.
API
Panggil
metode tables.insert
dengan resource tabel yang ditentukan,
dan sertakan tag di kolom resource_tags
.
Melampirkan tag ke tabel yang ada
Setelah membuat tag, Anda dapat melampirkannya ke tabel yang ada. Anda hanya dapat menambahkan satu nilai tag ke tabel untuk setiap kunci tag tertentu. Anda dapat melampirkan maksimum 50 tag ke tabel.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project dan set data Anda, lalu pilih sebuah tabel.
Di tab Details, klik
Edit details.Di bagian Tags, pilih tag yang ingin Anda tambahkan ke tabel. Anda tidak dapat memasukkan ID tag secara manual pada langkah ini. Anda hanya dapat memilih tag dari project atau organisasi Anda.
Klik Save.
bq
Gunakan perintah bq update
dengan flag --add_tags
:
bq update \ --add_tags=TAGS \ PROJECT_ID:DATASET_ID.TABLE_ID
Ganti kode berikut:
TAGS
: tag yang Anda lampirkan ke tabel, dipisahkan dengan koma—misalnya,556741164180/env:prod,myProject/department:sales
. Setiap tag harus memiliki nama kunci dengan namespace dan nama pendek nilai.PROJECT_ID
: ID project yang berisi tabel Anda.DATASET_ID
: ID set data yang berisi tabel Anda.TABLE_ID
: ID tabel yang Anda perbarui.
API
Panggil
metode tables.update
dengan resource tabel yang ditentukan,
dan sertakan tag di kolom resource_tags
.
Mencantumkan tag yang dilampirkan ke tabel
Anda dapat mencantumkan tag yang dilampirkan langsung ke tabel. Proses ini tidak mencantumkan tag yang diwarisi dari resource induk.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project dan set data Anda, lalu pilih sebuah tabel.
Tag tersebut terlihat di tab Details.
bq
Gunakan
perintah bq show
dan cari kolom tags
. Jika tidak ada tag pada tabel, kolom tags
tidak akan ditampilkan.
bq show \ PROJECT_ID:DATASET_ID.TABLE_ID
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi tabel AndaDATASET_ID
: ID set data yang berisi tabel AndaTABLE_ID
: ID tabel Anda
API
Panggil
metode tables.get
dengan resource tabel yang ditentukan,
dan cari kolom resource_tags
.
Melepaskan tag dari tabel
Anda dapat melepaskan tag dari tabel dengan menghapus resource binding tag. Jika perlu menghapus tag, Anda harus melepaskan tag tersebut terlebih dahulu.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project dan set data Anda, lalu pilih sebuah tabel.
Di tab Details, klik
Edit details.Di bagian Tag, hapus tag yang ingin Anda lepaskan dari tabel.
Klik Save.
bq
Untuk menghapus beberapa tag dari tabel, gunakan perintah bq update
dengan flag --remove_tags
:
bq update \ --remove_tags=TAG_KEYS \ PROJECT_ID:DATASET_ID.TABLE_ID
Ganti kode berikut:
TAG_KEYS
: kunci tag yang Anda lepaskan dari tabel, yang dipisahkan dengan koma—misalnya,556741164180/env,myProject/department
. Setiap kunci tag harus memiliki nama kunci dengan namespace.PROJECT_ID
: ID project yang berisi tabel Anda.DATASET_ID
: ID set data yang berisi tabel Anda.TABLE_ID
: ID tabel yang Anda perbarui.
Untuk menghapus semua tag dari tabel, gunakan perintah bq update
dengan flag --clear_all_tags
:
bq update \ --clear_all_tags \ PROJECT_ID:DATASET_ID.TABLE_ID
API
Panggil
metode tables.update
dengan resource tabel yang ditentukan,
dan hapus tag di kolom resource_tags
. Untuk menghapus semua tag, hapus kolom resource_tags
.
Menghapus tag
Anda tidak dapat menghapus tag jika tag tersebut dirujuk oleh set data atau tabel. Anda harus melepaskan semua resource binding tag yang ada sebelum menghapus kunci atau nilai tag itu sendiri. Untuk menghapus kunci tag dan nilai tag, baca artikel Menghapus tag.
Contoh
Misalkan Anda adalah administrator dari suatu organisasi. Analis data Anda adalah semua anggota grup analyst@example.com, yang memiliki peran IAM BigQuery Data Viewer pada project userData
. Pekerja magang analis data dipekerjakan, dan sesuai dengan kebijakan perusahaan, mereka seharusnya hanya memiliki izin untuk melihat set data anonymousData
di project userData
.
Anda dapat mengontrol akses mereka menggunakan tag.
Buat tag dengan kunci
employee_type
dan nilaiintern
:Di Konsol Google Cloud, buka halaman IAM.
Cari baris yang berisi peserta magang yang akses set datanya ingin Anda batasi, lalu klik
Edit principal di baris tersebut.Dari menu Role, pilih BigQuery Data Viewer.
Klik Add condition.
Di kolom Title dan Description, masukkan nilai yang mendeskripsikan kondisi tag IAM yang ingin Anda buat.
Di tab Condition builder, klik Add.
Di menu Condition type, pilih Resource, lalu pilih Tag.
Di menu Operator, pilih has value.
Di kolom Value path, masukkan jalur nilai tag dalam formulir
ORGANIZATION/TAG_KEY/TAG_VALUE
—misalnya,example.org/employee_type/intern
.Kondisi tag IAM ini akan membatasi akses karyawan magang ke set data yang memiliki tag
intern
.Untuk menyimpan kondisi tag, klik Save.
Untuk menyimpan semua perubahan yang dibuat di panel Edit permissions, klik Save.
Untuk melampirkan nilai tag
intern
ke set dataanonymousData
, gunakan command line untuk menjalankan perintahgcloud alpha resource-manager tags bindings create
:gcloud alpha resource-manager tags bindings create \ --tag-value=tagValues/4567890123 \ --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \ --location=US
Batasan
Tag tabel tidak didukung di tabel BigQuery Omni, tabel dalam set data tersembunyi, atau tabel sementara. Selain itu, kueri lintas region di BigQuery Omni tidak menggunakan tag selama pemeriksaan kontrol akses pada tabel di region lain.
Anda tidak dapat menggunakan tag tabel dengan Cloud Resource Manager API.
Anda dapat melampirkan maksimal 50 tag ke set data atau tabel.
Kueri karakter pengganti tidak didukung untuk tabel yang memiliki tag.
Beberapa layanan di luar BigQuery tidak dapat memverifikasi kondisi tag IAM dengan benar. Jika kondisi tag positif, artinya pengguna diberi peran pada resource hanya jika resource tersebut memiliki tag tertentu, akses ditolak ke resource tersebut, terlepas dari tag mana yang dipasang ke resource tersebut. Jika kondisi tag negatif, artinya pengguna diberi peran pada resource hanya jika resource tersebut tidak memiliki tag tertentu, kondisi tag tidak diperiksa.
Misalnya, Data Catalog tidak dapat memverifikasi kondisi tag IAM pada set data BigQuery. Misalkan ada kebijakan IAM bersyarat yang memberi karyawan magang peran BigQuery Data Viewer di set data dengan tag
employee_type=intern
. Karena ini adalah kondisi tag positif, karyawan magang tidak dapat melihat set data dengan melakukan penelusuran di Data Catalog meskipun set data tersebut memiliki tagemployee_type=intern
. Jika kondisi tag diubah menjadi negatif, sehingga karyawan magang hanya dapat melihat set data yang tidak memiliki tagemployee_type=intern
, pemeriksaan akan dilewati sepenuhnya dan karyawan magang dapat melihat set data yang biasanya tidak dapat mereka akses di BigQuery.
Langkah selanjutnya
- Untuk ringkasan tag di Google Cloud, lihat Ringkasan tag.
- Untuk mengetahui informasi selengkapnya tentang cara menggunakan tag, lihat Membuat dan mengelola tag.
- Untuk mengetahui informasi tentang cara mengontrol akses ke resource BigQuery dengan IAM Conditions, lihat Mengontrol akses dengan IAM Conditions.