Pengantar keamanan tingkat baris BigQuery

Dokumen ini menjelaskan konsep keamanan tingkat baris, cara kerjanya di BigQuery, kapan harus menggunakan keamanan tingkat baris untuk mengamankan data Anda, dan detail lainnya.

Apa yang dimaksud dengan keamanan tingkat baris?

Keamanan tingkat baris memungkinkan Anda memfilter data dan memberikan akses ke baris tertentu dalam tabel berdasarkan kondisi pengguna yang memenuhi syarat.

BigQuery telah mendukung kontrol akses di tingkat project, set data, dan tabel, serta keamanan tingkat kolom melalui tag kebijakan. Keamanan tingkat baris memperluas prinsip hak istimewa terendah dengan memungkinkan kontrol akses terperinci ke subset data dalam tabel BigQuery, melalui kebijakan akses tingkat baris.

Satu tabel dapat memiliki beberapa kebijakan akses tingkat baris. Kebijakan akses tingkat baris dapat ada berdampingan di tabel dengan keamanan tingkat kolom serta kontrol akses tingkat set data, tingkat tabel, dan tingkat project.

Cara kerja keamanan tingkat baris

Pada tingkat yang tinggi, keamanan tingkat baris melibatkan pembuatan kebijakan akses tingkat baris pada tabel BigQuery target. Kebijakan ini berfungsi sebagai filter untuk menyembunyikan atau menampilkan baris data tertentu, bergantung pada apakah pengguna atau grup tercantum dalam daftar yang diizinkan atau tidak. Setiap pengguna atau grup yang tidak secara spesifik disertakan dalam daftar yang diizinkan akan ditolak aksesnya.

Pengguna yang diotorisasi, dengan peran Identity and Access Management (IAM) BigQuery Admin atau BigQuery DataOwner, dapat membuat kebijakan akses tingkat baris di tabel BigQuery.

Saat membuat kebijakan akses tingkat baris, Anda menentukan tabel berdasarkan nama dan pengguna atau grup mana (disebut grantee-list) yang dapat mengakses data baris tertentu. Kebijakan ini juga menyertakan data tempat Anda ingin memfilter, yang disebut filter_expression. filter_expression berfungsi seperti klausa WHERE dalam kueri standar.

Untuk mengetahui petunjuk cara membuat dan menggunakan kebijakan akses tingkat baris, lihat Menangani keamanan tingkat baris.

Lihat referensi DDL untuk mengetahui sintaksis, penggunaan, dan opsi lengkap saat membuat kebijakan akses tingkat baris.

Contoh kasus penggunaan

Memfilter data baris berdasarkan region

Pertimbangkan kasus saat tabel dataset1.table1 berisi baris yang dimiliki region yang berbeda (ditunjukkan dengan kolom region).

Keamanan tingkat baris memungkinkan Pemilik Data atau Admin menerapkan kebijakan, seperti "Pengguna di group:apac hanya dapat melihat partner dari region APAC".

Kasus penggunaan keamanan tingkat baris untuk region

Perilaku yang dihasilkan adalah pengguna dalam grup sales-apac@example.com hanya dapat melihat baris yang memuat Region = "APAC". Demikian pula, pengguna dalam grup sales-us@example.com hanya dapat melihat baris di region US. Pengguna yang tidak berada dalam grup APAC atau US tidak melihat baris apa pun.

Kebijakan akses tingkat baris bernama us_filter memberikan akses ke beberapa entity, termasuk kepala penjualan di AS, jon@example.com, yang semuanya kini dapat mengakses baris milik region US.

Memfilter data baris berdasarkan data sensitif

Sekarang, pertimbangkan kasus penggunaan yang berbeda, di mana kita memiliki tabel data gaji.

Kasus penggunaan keamanan tingkat baris untuk gaji

grantee_list membatasi pembuatan kueri untuk anggota domain perusahaan. Selain itu, penggunaan fungsi SESSION_USER() lebih membatasi akses hanya untuk baris milik pengguna yang menjalankan kueri, berdasarkan alamat email penggunanya sendiri. Dalam hal ini, nilainya adalah jim@example.com.

Kapan menggunakan keamanan tingkat baris vs. metode lainnya

Tampilan yang sah, kebijakan akses tingkat baris, dan menyimpan data dalam tabel terpisah semuanya memberikan tingkat keamanan, performa, dan kenyamanan yang berbeda. Memilih mekanisme yang tepat untuk kasus penggunaan Anda penting untuk memastikan tingkat keamanan yang tepat bagi data Anda.

Perbandingan dengan tampilan yang diotorisasi: kerentanan

Keamanan tingkat baris dan yang menerapkan akses tingkat baris dengan tampilan yang diotorisasi dapat memiliki kerentanan, jika digunakan dengan tidak benar.

Saat Anda menggunakan kebijakan tampilan yang sah atau akses tingkat baris untuk keamanan tingkat baris, sebaiknya pantau aktivitas mencurigakan menggunakan logging audit.

Side channels, seperti durasi kueri, dapat membocorkan informasi tentang baris yang berada di tepi shard penyimpanan. Serangan seperti itu mungkin memerlukan pengetahuan tentang cara sharding tabel, atau kueri dalam jumlah besar.

Untuk mengetahui informasi selengkapnya tentang cara mencegah serangan side-channel tersebut, lihat Praktik terbaik untuk keamanan tingkat baris.

Perbandingan tampilan yang diizinkan, keamanan tingkat baris, dan tabel terpisah

Tabel berikut membandingkan fleksibilitas, performa, dan keamanan tampilan yang diotorisasi, kebijakan akses tingkat baris, dan tabel terpisah.

Metode Pertimbangan keamanan Rekomendasi
Tampilan
yang diberi otorisasi
Direkomendasikan untuk fleksibilitas. Dapat rentan terhadap kueri yang dibuat dengan cermat, durasi kueri, dan jenis serangan side-channel lainnya. Tampilan yang sah adalah pilihan yang tepat jika Anda perlu berbagi data dengan orang lain dan fleksibilitas serta performa itu penting. Misalnya, Anda dapat menggunakan tampilan yang diizinkan untuk berbagi data dalam grup kerja.
Kebijakan akses tingkat baris Direkomendasikan untuk menyeimbangkan fleksibilitas dan keamanan. Dapat rentan terhadap serangan side-channel durasi kueri. Kebijakan akses tingkat baris adalah pilihan yang tepat jika Anda perlu berbagi data dengan orang lain dan ingin memberikan keamanan tambahan atas tampilan atau irisan tabel. Misalnya, Anda dapat menggunakan kebijakan akses tingkat baris untuk berbagi data dengan orang-orang yang semuanya menggunakan dasbor yang sama, meskipun beberapa orang memiliki akses ke lebih banyak data daripada yang lain.
Tabel terpisah Direkomendasikan untuk keamanan. Pengguna tidak dapat menyimpulkan data tanpa akses ke tabel. Tabel terpisah adalah pilihan yang baik saat Anda perlu berbagi data dengan orang lain dan harus menjaga data tetap terisolasi. Misalnya, Anda dapat menggunakan tabel terpisah untuk berbagi data dengan partner dan vendor pihak ketiga, saat jumlah total baris harus dirahasiakan.

Membuat dan mengelola kebijakan akses tingkat baris

Untuk mendapatkan informasi tentang cara membuat, mengupdate (membuat ulang), mencantumkan, melihat, dan menghapus kebijakan akses tingkat baris pada tabel, serta cara membuat kueri tabel dengan kebijakan akses tingkat baris, lihat Menggunakan keamanan akses tingkat baris.

Kuota

Untuk mengetahui informasi lebih lanjut tentang kuota dan batas keamanan tingkat baris, lihat Kuota dan batas BigQuery.

Harga

Keamanan tingkat baris disertakan dengan BigQuery tanpa biaya tambahan. Namun, kebijakan akses tingkat baris dapat memengaruhi biaya menjalankan kueri dengan cara berikut:

  • Jika kebijakan akses tingkat baris mencegah pengguna mengakses baris dalam kueri, baris tersebut tidak akan diproses atau ditagih.

  • Filter kebijakan akses tingkat baris tidak berpartisipasi dalam pemangkasan kueri pada tabel yang dipartisi dan dikelompokkan. Artinya, filter keamanan tingkat baris dapat menyebabkan lebih banyak data yang diproses dibandingkan jika tidak digunakan.

Untuk mengetahui informasi selengkapnya tentang harga kueri BigQuery, lihat harga BigQuery.

Batasan

Untuk mengetahui informasi tentang batas keamanan tingkat baris, lihat Batas keamanan tingkat baris BigQuery. Bagian berikut mendokumentasikan batasan keamanan tingkat baris tambahan.

Batasan performa

Untuk mengetahui informasi lebih lanjut tentang cara keamanan tingkat baris berinteraksi dengan beberapa fitur dan layanan BigQuery, baca Menggunakan keamanan tingkat baris dengan fitur BigQuery lainnya.

Batasan lainnya

  • Fitur ini mungkin tidak tersedia saat menggunakan pemesanan yang dibuat dengan edisi BigQuery tertentu. Untuk mengetahui informasi selengkapnya tentang fitur apa saja yang diaktifkan di setiap edisi, lihat Pengantar edisi BigQuery.

  • Kebijakan akses baris tidak kompatibel dengan Legacy SQL. Kueri tabel dengan kebijakan akses tingkat baris harus menggunakan GoogleSQL. Kueri SQL lama ditolak dengan error.

  • Anda tidak dapat menerapkan kebijakan akses tingkat baris pada kolom JSON.

  • Beberapa fitur BigQuery tidak kompatibel dengan keamanan tingkat baris. Untuk mengetahui informasi selengkapnya, lihat Menggunakan keamanan tingkat baris.

  • Operasi non-kueri, termasuk tugas akun layanan, yang memerlukan akses penuh ke data tabel dapat menggunakan keamanan tingkat baris dengan filter TRUE. Contohnya mencakup pembuatan salinan tabel, alur kerja dataproc, dan lainnya. Untuk mengetahui informasi selengkapnya, lihat Menggunakan keamanan tingkat baris.

  • Membuat, mengganti, atau menghapus kebijakan akses tingkat baris harus dilakukan dengan pernyataan DDL. Untuk mencantumkan dan melihat kebijakan akses tingkat baris, Anda dapat melakukannya melalui konsol Google Cloud atau alat command line bq.

  • Pengambilan sampel tabel tidak kompatibel dengan keamanan tingkat baris.

Pemantauan dan log audit

Jika data dalam tabel yang memiliki satu atau beberapa kebijakan akses tingkat baris dibaca, kebijakan akses tingkat baris yang diizinkan untuk akses baca akan muncul di informasi otorisasi IAM untuk permintaan baca tersebut.

Pembuatan dan penghapusan kebijakan akses tingkat baris dicatat dalam log audit, dan dapat diakses melalui Cloud Logging. Log audit menyertakan nama kebijakan akses tingkat baris. Namun, definisi filter_expression dan grantee_list dari kebijakan akses tingkat baris dihilangkan dari log, karena mungkin berisi informasi pengguna atau informasi sensitif lainnya. Listingan dan tampilan kebijakan akses tingkat baris tidak dicatat dalam log audit.

Untuk mengetahui informasi lebih lanjut tentang logging di BigQuery, lihat Pengantar pemantauan BigQuery.

Untuk mengetahui informasi selengkapnya tentang logging di Google Cloud, lihat Cloud Logging.

Langkah selanjutnya