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 izin resourcemanager.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 izin resourcemanager.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 izin resourcemanager.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 izin resourcemanager.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 izin resourcemanager.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 izin resourcemanager.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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda dan pilih set data.

  3. Di bagian Dataset info, klik Edit details.

  4. Di bagian Tags, pilih tag yang ingin Anda tambahkan ke set data.

  5. 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, seperti tagValues/4567890123 atau 1234567/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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. 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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda dan pilih set data.

  3. Di bagian Dataset info, klik Edit details.

  4. Di bagian Tags, klik Delete item di samping tag yang ingin dihapus.

  5. 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, seperti tagValues/4567890123 atau 1234567/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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda, lalu pilih set data.

  3. Di bagian Dataset info, klik Create table.

  4. Masukkan informasi untuk tabel baru Anda. Untuk mengetahui detail selengkapnya, lihat Membuat dan menggunakan tabel.

  5. 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.

  6. 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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project dan set data Anda, lalu pilih sebuah tabel.

  3. Di tab Details, klik Edit details.

  4. 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.

  5. 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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. 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 Anda
  • DATASET_ID: ID set data yang berisi tabel Anda
  • TABLE_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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project dan set data Anda, lalu pilih sebuah tabel.

  3. Di tab Details, klik Edit details.

  4. Di bagian Tag, hapus tag yang ingin Anda lepaskan dari tabel.

  5. 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.

  1. Buat tag dengan kunci employee_type dan nilai intern:

    Contoh pembuatan kunci dan nilai tag.

  2. Di Konsol Google Cloud, buka halaman IAM.

    Buka IAM

  3. Cari baris yang berisi peserta magang yang akses set datanya ingin Anda batasi, lalu klik Edit principal di baris tersebut.

  4. Dari menu Role, pilih BigQuery Data Viewer.

  5. Klik Add condition.

  6. Di kolom Title dan Description, masukkan nilai yang mendeskripsikan kondisi tag IAM yang ingin Anda buat.

  7. Di tab Condition builder, klik Add.

  8. Di menu Condition type, pilih Resource, lalu pilih Tag.

  9. Di menu Operator, pilih has value.

  10. Di kolom Value path, masukkan jalur nilai tag dalam formulir ORGANIZATION/TAG_KEY/TAG_VALUE—misalnya, example.org/employee_type/intern.

    Contoh IAM Conditions yang menggunakan tag.

    Kondisi tag IAM ini akan membatasi akses karyawan magang ke set data yang memiliki tag intern.

  11. Untuk menyimpan kondisi tag, klik Save.

  12. Untuk menyimpan semua perubahan yang dibuat di panel Edit permissions, klik Save.

  13. Untuk melampirkan nilai tag intern ke set data anonymousData, gunakan command line untuk menjalankan perintah gcloud 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 tag employee_type=intern. Jika kondisi tag diubah menjadi negatif, sehingga karyawan magang hanya dapat melihat set data yang tidak memiliki tag employee_type=intern, pemeriksaan akan dilewati sepenuhnya dan karyawan magang dapat melihat set data yang biasanya tidak dapat mereka akses di BigQuery.

Langkah selanjutnya