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:

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