Set data yang diizinkan

Dokumen ini menjelaskan cara menggunakan set data yang diizinkan di BigQuery. Set data yang diizinkan memungkinkan Anda mengizinkan semua tabel virtual dalam set data yang ditentukan untuk mengakses data dalam set data kedua. Dengan set data yang diizinkan, Anda tidak perlu mengonfigurasi setiap tabel virtual yang diizinkan.

Anda dapat membuat set data yang diizinkan di BigQuery menggunakan cara berikut:

Ringkasan

Tabel virtual di BigQuery adalah tabel virtual yang ditentukan oleh kueri SQL. Misalnya, kueri tabel virtual mungkin hanya menampilkan sebagian kolom tabel, tidak termasuk kolom yang berisi informasi identitas pribadi (PII). Untuk membuat kueri tabel virtual, pengguna harus memiliki akses ke resource yang diakses oleh kueri tabel virtual.

Jika Anda ingin mengizinkan pengguna membuat kueri tabel virtual, tanpa memberi mereka akses langsung ke resource yang direferensikan oleh tabel virtual, Anda dapat menggunakan tabel virtual yang diizinkan. Tabel virtual yang diizinkan memungkinkan Anda, misalnya, berbagi data yang lebih terbatas dalam tabel virtual dengan grup atau pengguna (akun utama) tertentu, tanpa memberi akun utama akses ke semua data pokok. Anda dapat melakukannya dengan memberikan akses kepada akun utama ke tabel virtual, dan dengan memberikan akses tabel virtual ke set data yang berisi data pokok.

Jika ingin memberikan akses koleksi tabel virtual ke set data, tanpa harus memberi otorisasi setiap tabel virtual tertentu, Anda dapat mengelompokkan tabel virtual ke dalam set data, lalu memberikan set data yang berisi akses tabel virtual ke set data yang berisi data. Selanjutnya, Anda dapat memberikan akses kepada akun utama ke set data dengan grup tabel virtual, atau ke setiap tabel virtual dalam set data, sesuai kebutuhan. Set data yang memiliki akses ke set data lain disebut set data yang diizinkan. Set data yang memberikan otorisasi pada set data lain untuk mengakses datanya disebut set data bersama.

Izin dan peran yang diperlukan

Untuk mengizinkan set data, atau mencabut otorisasi set data, Anda harus memiliki izin Identity and Access Management (IAM) berikut, yang memungkinkan Anda memperbarui daftar kontrol akses set data yang Anda bagikan.

Setelah set data diizinkan, Anda memerlukan izin yang sama ini jika ingin membuat atau memperbarui tabel virtual dalam set data yang diizinkan. Untuk mengetahui informasi selengkapnya, lihat Membuat atau memperbarui tabel virtual dalam set data yang diizinkan.

Izin Resource
bigquery.datasets.get Set data yang Anda bagikan.
bigquery.datasets.update Set data yang Anda bagikan.

Peran IAM yang telah ditetapkan berikut memberikan izin yang diperlukan.

Role Resource
bigquery.dataOwner Set data yang Anda bagikan.
bigquery.admin Set data yang Anda bagikan.

Kuota dan batas

Set data yang diizinkan tunduk kepada batas set data. Untuk mengetahui informasi selengkapnya, lihat Batas set data.

Mengizinkan set data

Anda dapat mengizinkan tabel virtual set data saat ini dan mendatang untuk mengakses set data lain dengan menambahkan set data yang ingin diberi otorisasi ke daftar akses set data yang ingin dibagikan, seperti berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda dan pilih set data yang berisi data yang ingin Anda bagikan.

  3. Klik ikon Actions, lalu pilih Open.

  4. Di panel detail yang muncul, klik Shared lalu pilih opsi Authorize Datasets.

    Izinkan set data

  5. Di panel Authorized set data yang muncul, masukkan Dataset ID dari set data yang ingin Anda beri otorisasi, dalam format berikut:

    PROJECT.AUTHORIZED_DATASET

    Contoh:

    myProject.myDataset

  6. Klik Add Authorization, lalu klik Close.

bq

  1. Buka Cloud Shell:

    Buka Cloud Shell

  2. Tulis metadata yang ada (termasuk daftar kontrol akses) untuk set data yang ingin Anda bagikan ke dalam file JSON menggunakan perintah bq show.

    bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
  3. Gunakan editor teks untuk menambahkan set data yang ingin Anda beri otorisasi ke bagian access yang ada pada file JSON yang dibuat di FILE_PATH.

    Contoh:

     "access": [
       ...
       {
         "dataset": {
           "dataset": {
             "project_id": "PROJECT",
             "dataset_id": "AUTHORIZED_DATASET"
           },
           "target_types": "VIEWS"
         }
       }
     ]

  4. Update set data bersama menggunakan perintah bq update. Contoh:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
  5. Untuk memverifikasi bahwa set data yang diizinkan telah ditambahkan, masukkan perintah bq show lagi. Contoh:

    bq show --format=prettyjson PROJECT:SHARED_DATASET

API

  1. Dapatkan metadata saat ini untuk set data yang ingin Anda bagikan dengan memanggil metode datasets.get, seperti berikut:

    GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    Isi respons menampilkan resource Dataset yang berisi metadata JSON untuk set data tersebut.

  2. Tambahkan set data yang ingin Anda beri otorisasi ke bagian access metadata JSON yang ditampilkan di resource Dataset sebagai berikut:

    "access": [
     ...
     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    ]
  3. Gunakan metode datasets.update untuk mengupdate set data dengan otorisasi tambahan:

    PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    Sertakan resource Dataset yang diupdate dalam isi permintaan.

  4. Anda dapat memverifikasi bahwa set data yang diizinkan telah ditambahkan dengan memanggil lagi metode datasets.get.

Mencabut otorisasi set data

Saat Anda menghapus set data yang diberi otorisasi untuk mengakses set data sumber lain, diperlukan waktu hingga 24 jam agar perubahan diterapkan sepenuhnya dalam daftar kontrol akses (ACL) set data sumber. Selama waktu ini:

  • Anda tidak akan dapat mengakses data sumber melalui set data yang dihapus.
  • Set data yang dihapus mungkin masih muncul di ACL set data sumber dan diperhitungkan terhadap batas set data yang diotorisasi. Hal ini dapat mencegah Anda membuat {i>dataset<i} resmi baru sampai ACL diperbarui.

Untuk mencabut akses yang diberikan ke tabel virtual dalam set data yang diberi otorisasi, hapus set data yang diizinkan dari daftar akses set data bersama, sebagai berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

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

  3. Klik ikon Actions, lalu pilih Open.

  4. Di panel detail yang muncul, klik Shared lalu pilih opsi Authorize Datasets.

    Izinkan set data

  5. Di panel Set data yang diizinkan yang muncul, cari entri untuk set data yang diizinkan di bagian Currently authorized datasets.

  6. Klik ikon hapus di samping set data yang diberi otorisasi yang ingin Anda hapus, lalu klik Close.

bq

  1. Buka Cloud Shell:

    Buka Cloud Shell

  2. Tulis metadata yang ada (termasuk daftar kontrol akses) untuk set data bersama ke dalam file JSON menggunakan perintah bq show.

    bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
  3. Gunakan editor teks untuk menghapus set data yang diberi otorisasi dari bagian access file JSON yang dibuat di FILE_PATH, sebagai berikut:

       {
         "dataset": {
           "dataset": {
             "project_id": "PROJECT",
             "dataset_id": "AUTHORIZED_DATASET"
           },
           "target_types": "VIEWS"
         }
       }
  4. Update set data bersama menggunakan perintah bq update. Contoh:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
  5. Untuk memverifikasi bahwa set data yang diizinkan telah dihapus, masukkan perintah bq show lagi. Contoh:

    bq show --format=prettyjson PROJECT:SHARED_DATASET

API

  1. Dapatkan metadata saat ini untuk set data bersama dengan memanggil metode datasets.get, seperti berikut:

    GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    Isi respons menampilkan resource Dataset yang berisi metadata JSON untuk set data tersebut.

  2. Hapus set data yang diizinkan dari bagian access JSON yang ditampilkan di resource Dataset, misalnya:

     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
  3. Gunakan metode datasets.update untuk memperbarui set data dengan otorisasi yang dihapus:

    PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    Sertakan resource Dataset yang diupdate dalam isi permintaan.

  4. Anda dapat memverifikasi bahwa set data yang diizinkan telah dihapus dengan memanggil metode datasets.get lagi.

Membuat atau memperbarui tabel virtual dalam set data yang diizinkan

Untuk membuat atau memperbarui tabel virtual yang ada dalam set data yang diizinkan, Anda harus memiliki izin untuk set data bersama yang tercantum dalam Izin dan peran yang diperlukan, selain izin yang diperlukan untuk membuat atau memperbarui tabel virtual dalam set data standar.

Tabel berikut merangkum izin Identity and Access Management (IAM) yang diperlukan untuk membuat atau memperbarui tabel virtual yang ada dalam set data yang diizinkan:

Izin Resource
bigquery.datasets.get Set data yang Anda bagikan.
bigquery.datasets.update Set data yang Anda bagikan.
bigquery.tables.getData Setiap tabel atau tabel virtual dari set data bersama yang direferensikan dalam tabel virtual baru yang Anda buat atau perbarui.
bigquery.tables.create Set data yang diizinkan tempat Anda membuat tabel virtual.
bigquery.tables.update Set data yang diizinkan tempat Anda memperbarui tabel virtual.

Anda tidak memerlukan izin tambahan untuk menghapus tabel virtual dari set data yang diizinkan.

Membuat kueri tabel virtual dalam set data yang diizinkan

Untuk membuat kueri tabel virtual dalam set data yang diizinkan, pengguna harus memiliki akses ke tabel virtual, tetapi akses ke set data bersama tidak diperlukan.

Untuk mengetahui informasi selengkapnya, lihat Tabel virtual yang diizinkan.

Contoh set data yang diizinkan

Contoh berikut menjelaskan cara membuat dan menggunakan set data yang diizinkan.

Anggaplah Anda memiliki dua set data, bernama private_dataset dan public_dataset. Set data private_dataset berisi tabel bernama private_table. Set data public_dataset berisi tabel virtual bernama private_table_filtered. Tabel virtual private_table_filtered didasarkan pada kueri yang menampilkan beberapa kolom, tetapi tidak semua, dalam tabel private_table.

Anda dapat memberi pengguna akses ke data yang ditampilkan oleh tabel virtual private_table_filtered, tetapi tidak semua data dalam tabel private_table, seperti berikut:

  1. Berikan peran bigquery.dataViewer kepada pengguna untuk set data public_dataset. Peran ini mencakup izin bigquery.tables.getData, yang memungkinkan pengguna membuat kueri tabel virtual dalam set data public_dataset. Untuk mengetahui informasi tentang cara memberikan peran kepada pengguna untuk set data, baca Mengontrol akses ke set data.

    Pengguna kini memiliki izin untuk membuat kueri tabel virtual di public_dataset, tetapi masih tidak dapat mengakses tabel private_table di private_dataset. Jika pengguna mencoba membuat kueri tabel private_table secara langsung, atau jika mencoba mengakses tabel private_table secara tidak langsung dengan membuat kueri tabel virtual private_table_filtered, pengguna akan mendapati pesan error yang mirip dengan berikut ini:

    Access Denied: Table PROJECT:private_dataset.private_table: User does not have permission to query table PROJECT:private_dataset.private_table.

  2. Di halaman BigQuery Konsol Google Cloud, buka set data private_dataset, klik Sharing, lalu pilih Authorize Datasets.

  3. Di panel Authorized dataset yang muncul, masukkan PROJECT.public_dataset di kolom Dataset ID, lalu klik Add Authorization.

    Set data public_dataset ditambahkan ke daftar kontrol akses set data private_dataset, yang mengizinkan tabel virtual di set data public_dataset untuk membuat kueri data di set data private_dataset.

    Pengguna kini dapat membuat kueri tabel virtual private_table_filtered di set data public_dataset, yang secara tidak langsung mengakses set data private_dataset, tanpa memiliki izin untuk mengakses data dalam set data private_dataset secara langsung.

Langkah selanjutnya

  • Untuk mengetahui informasi tentang cara memberikan otorisasi pada tabel virtual masing-masing untuk mengakses data dalam set data, lihat Tabel virtual yang diizinkan.

  • Untuk mengetahui informasi tentang cara mengizinkan fungsi tabel atau fungsi yang ditentukan pengguna (UDF) untuk mengakses data dalam set data, lihat Fungsi yang diizinkan.