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:
- Konsol Google Cloud
- Perintah
bq update
- Metode API
datasets.update
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 diotorisasi. 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.
Peran | Deskripsi |
---|---|
bigquery.dataOwner
|
BigQuery Data Owner |
bigquery.admin
|
Admin BigQuery |
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
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data yang berisi data yang ingin Anda bagikan.
Klik ikon
Actions, lalu pilih Open.Di panel detail yang muncul, klik Shared lalu pilih opsi Authorize Datasets.
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
Klik Add Authorization, lalu klik Close.
bq
Buka Cloud Shell:
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
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" } } ]
Update set data bersama menggunakan perintah
bq update
. Contoh:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Untuk memverifikasi bahwa set data yang diizinkan telah ditambahkan, masukkan perintah
bq show
lagi. Contoh:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
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.Tambahkan set data yang ingin Anda beri otorisasi ke bagian
access
metadata JSON yang ditampilkan di resourceDataset
sebagai berikut:"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
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.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 diotorisasi untuk mengakses set data sumber lain, mungkin perlu waktu hingga 24 jam agar perubahan tersebut sepenuhnya tercermin 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 dihitung dalam batas set data yang diotorisasi. Hal ini dapat mencegah Anda membuat set data baru yang diotorisasi hingga 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
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data bersama.
Klik ikon
Actions, lalu pilih Open.Di panel detail yang muncul, klik Shared lalu pilih opsi Authorize Datasets.
Di panel Set data yang diizinkan yang muncul, cari entri untuk set data yang diizinkan di bagian Currently authorized datasets.
Klik ikon hapus di samping set data yang diberi otorisasi yang ingin Anda hapus, lalu klik Close.
bq
Buka Cloud Shell:
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
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" } }
Update set data bersama menggunakan perintah
bq update
. Contoh:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Untuk memverifikasi bahwa set data yang diizinkan telah dihapus, masukkan perintah
bq show
lagi. Contoh:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
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.Hapus set data yang diizinkan dari bagian
access
JSON yang ditampilkan di resourceDataset
, misalnya:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
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.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.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:
Berikan peran
bigquery.dataViewer
kepada pengguna untuk set datapublic_dataset
. Peran ini mencakup izinbigquery.tables.getData
, yang memungkinkan pengguna membuat kueri tabel virtual dalam set datapublic_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 tabelprivate_table
diprivate_dataset
. Jika pengguna mencoba membuat kueri tabelprivate_table
secara langsung, atau jika mencoba mengakses tabelprivate_table
secara tidak langsung dengan membuat kueri tabel virtualprivate_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.
Di halaman BigQuery Konsol Google Cloud, buka set data
private_dataset
, klik Sharing, lalu pilih Authorize Datasets.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 dataprivate_dataset
, yang mengizinkan tabel virtual di set datapublic_dataset
untuk membuat kueri data di set dataprivate_dataset
.Pengguna kini dapat membuat kueri tabel virtual
private_table_filtered
di set datapublic_dataset
, yang secara tidak langsung mengakses set dataprivate_dataset
, tanpa memiliki izin untuk mengakses data dalam set dataprivate_dataset
secara langsung.
Batasan
- Anda dapat membuat set data yang diizinkan di region yang berbeda, tetapi BigQuery tidak mendukung kueri lintas region. Oleh karena itu, sebaiknya buat set data di region yang sama.
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.