Menggunakan keamanan tingkat baris dengan fitur BigQuery lainnya
Dokumen ini menjelaskan cara menggunakan keamanan akses tingkat baris dengan fitur BigQuery lainnya.
Sebelum membaca dokumen ini, pahami keamanan tingkat baris dengan membaca Pengantar keamanan tingkat baris BigQuery dan Bekerja dengan keamanan tingkat baris.
Filter TRUE
Kebijakan akses tingkat baris dapat memfilter data hasil yang Anda lihat saat menjalankan
kueri. Untuk menjalankan operasi non-kueri, seperti DML, Anda memerlukan akses
penuh ke semua baris dalam tabel. Akses penuh diberikan
menggunakan kebijakan akses baris dengan ekspresi filter yang ditetapkan ke TRUE
. Kebijakan
akses tingkat baris ini disebut filter TRUE
.
Setiap pengguna dapat diberi akses filter TRUE
, termasuk akun layanan.
Contoh operasi non-kueri adalah:
- BigQuery API lainnya, seperti BigQuery Storage Read API.
- Beberapa
perintah alat command line
bq
, seperti perintahbq head
. - Menyalin tabel
Contoh
Membuat filter TRUE
CREATE ROW ACCESS POLICY all_access ON project.dataset.table1
GRANT TO ("group:all-rows-access@example.com")
FILTER USING (TRUE);
Fitur yang berfungsi dengan filter TRUE
Tugas penyalinan
Untuk menyalin tabel dengan satu atau beberapa
kebijakan akses tingkat baris, Anda harus terlebih dahulu diberi akses filter TRUE
pada
tabel sumber. Semua kebijakan akses tingkat baris pada tabel sumber juga
disalin ke tabel tujuan yang baru. Jika Anda menyalin tabel sumber tanpa
kebijakan akses tingkat baris ke tabel tujuan yang memiliki kebijakan akses tingkat baris,
maka kebijakan akses tingkat baris akan dihapus dari tabel tujuan,
kecuali flag --append_table
digunakan atau "writeDisposition": "WRITE_APPEND"
telah disetel.
Salinan lintas-region diizinkan dan semua kebijakan disalin. Kueri berikutnya mungkin rusak setelah penyalinan selesai jika kueri berisi referensi tabel yang tidak valid dalam kebijakan subkueri.
Kebijakan akses tingkat baris pada tabel harus memiliki nama yang unik. Terjadi konflik pada nama kebijakan akses tingkat baris selama penyalinan akan menyebabkan error input tidak valid.
Izin yang diperlukan untuk menyalin tabel dengan kebijakan akses tingkat baris
Untuk menyalin tabel dengan satu atau beberapa kebijakan akses tingkat baris, Anda harus memiliki izin berikut, selain izin yang diperlukan untuk menyalin tabel tanpa kebijakan akses tingkat baris.
Izin | Resource |
---|---|
bigquery.rowAccessPolicies.list
|
Tabel sumber. |
bigquery.rowAccessPolicies.getIamPolicy
|
Tabel sumber. |
Filter TRUE
|
Tabel sumber. |
bigquery.rowAccessPolicies.create
|
Tabel tujuan. |
bigquery.rowAccessPolicies.setIamPolicy
|
Tabel tujuan. |
Tabledata.list di BigQuery API
Anda memerlukan akses filter TRUE
untuk menggunakan metode tabledata.list
di
BigQuery API pada tabel dengan kebijakan akses tingkat baris.
DML
Untuk menjalankan pernyataan DML yang mengupdate tabel yang memiliki kebijakan akses
tingkat baris, Anda memerlukan akses filter TRUE
untuk tabel tersebut.
Secara khusus, pernyataan MERGE
berinteraksi dengan kebijakan akses tingkat baris seperti
berikut:
- Jika tabel target berisi kebijakan akses tingkat baris, Anda memerlukan akses filter
TRUE
ke tabel target. - Jika tabel sumber berisi kebijakan akses tingkat baris, pernyataan
MERGE
hanya berfungsi pada baris yang terlihat oleh pengguna.
Snapshot tabel
Snapshot tabel mendukung keamanan tingkat baris. Izin yang Anda perlukan untuk tabel dasar (tabel sumber) dan snapshot tabel (tabel tujuan) dijelaskan di Izin yang diperlukan untuk menyalin tabel dengan kebijakan akses tingkat baris.
Tabel BigQuery dengan kolom JSON
Kebijakan akses tingkat baris tidak dapat diterapkan pada kolom JSON. Untuk mempelajari lebih lanjut batasan keamanan tingkat baris, lihat Batasan.
Grafik eksekusi
Anda tidak dapat menggunakan grafik eksekusi kueri untuk tugas dengan kebijakan akses tingkat baris.
Tugas ekstraksi
Jika tabel memiliki kebijakan akses tingkat baris, hanya data yang dapat Anda lihat yang diekspor ke Cloud Storage saat Anda menjalankan tugas ekstrak.
Tabel berpartisi dan dikelompokkan
Keamanan tingkat baris tidak berpartisipasi dalam pruning kueri, yang merupakan fitur tabel berpartisi.
Meskipun keamanan tingkat baris kompatibel dengan tabel yang dipartisi dan dikelompokkan,
kebijakan akses tingkat baris yang memfilter data baris tidak diterapkan
selama pruning partisi. Anda masih dapat menggunakan pruning partisi pada tabel
yang menggunakan keamanan tingkat baris dengan menentukan klausa WHERE
yang beroperasi
di kolom partisi. Demikian pula, kebijakan akses tingkat baris sendiri
tidak memberikan manfaat performa apa pun untuk kueri terhadap tabel yang dikelompokkan,
tetapi tidak mengganggu pemfilteran lain yang Anda terapkan.
Pemangkasan kueri dilakukan selama eksekusi kebijakan akses tingkat baris menggunakan filter dengan kebijakan.
Mengganti nama tabel
Anda tidak memerlukan akses filter TRUE
untuk mengganti nama tabel dengan satu atau beberapa kebijakan akses bari
di tabel tersebut. Anda dapat
mengganti nama tabel dengan pernyataan DDL.
Sebagai alternatif, Anda juga dapat menyalin tabel dan memberi nama lain pada tabel tujuan. Jika tabel sumber memiliki kebijakan akses tingkat baris, lihat tugas penyalinan tabel di halaman ini untuk informasi selengkapnya.
Update streaming
Untuk melakukan operasi tabel streaming UPDATE
atau DELETE
dengan mengubah pengambilan data, Anda harus memiliki akses filter TRUE
.
Perjalanan waktu
Hanya administrator tabel yang dapat mengakses data historis untuk tabel yang memiliki, atau sebelumnya memiliki, kebijakan akses tingkat baris. Pengguna lain akan mendapatkan error access
denied
jika mereka menggunakan dekorator perjalanan waktu di tabel yang memiliki
akses tingkat baris. Untuk mengetahui informasi selengkapnya, lihat Perjalanan waktu dan akses tingkat baris.
Tampilan dan tampilan terwujud
Data yang ditampilkan dalam tampilan atau tampilan terwujud difilter sesuai dengan kebijakan akses tingkat baris tabel sumber yang mendasarinya.
Selain itu, jika tampilan terwujud berasal dari tabel pokok yang memiliki kebijakan akses tingkat baris, performa kuerinya akan sama seperti saat Anda membuat kueri sumber tabel secara langsung. Dengan kata lain, jika tabel sumber memiliki keamanan tingkat baris, Anda tidak akan melihat manfaat performa umum membuat kueri tampilan terwujud versus membuat kueri tabel sumber.
Anda tidak dapat mereferensikan tampilan atau tampilan terwujud dalam kebijakan akses tingkat baris.
Kueri karakter pengganti
Kueri karakter pengganti terhadap
tabel dengan kebijakan akses tingkat baris akan gagal dengan menampilkan error INVALID_INPUT
.
Langkah berikutnya
- Untuk mengetahui informasi tentang praktik terbaik terkait kebijakan akses tingkat baris, lihat Praktik terbaik untuk keamanan tingkat baris di BigQuery.