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".
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.
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
.
Memfilter data baris berdasarkan tabel pemeta
Untuk memberikan masukan atau meminta dukungan terkait fitur ini, kirim email ke bigquery-row-level-security-support@google.com.Dengan dukungan subkueri, kebijakan akses baris dapat mereferensikan tabel lain dan menggunakannya sebagai tabel pemeta. Data yang digunakan dalam aturan pemfilteran dapat disimpan dalam tabel, dan satu kebijakan akses baris subkueri dapat menggantikan beberapa kebijakan akses baris yang dikonfigurasi. Untuk memperbarui kebijakan akses baris, Anda hanya perlu memperbarui tabel pencarian, yang menggantikan beberapa kebijakan akses baris. Anda tidak perlu memperbarui setiap kebijakan akses baris satu per satu.
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:
Penagihan tambahan dapat disebabkan oleh kebijakan akses tingkat baris, khususnya kebijakan yang menyertakan subkueri yang mereferensikan tabel lain.
Filter kebijakan akses tingkat baris tidak berpartisipasi dalam pemangkasan kueri di tabel yang dipartisi dan dikelompokkan. Hal ini tidak berarti bahwa kueri tersebut membaca lebih banyak data selama eksekusi kueri utama. Aplikasi ini tidak memanfaatkan predikat kebijakan akses baris untuk melakukan pemangkasan lebih lanjut.
Dengan filter kebijakan akses tingkat baris, tidak semua filter pengguna diterapkan lebih awal. Hal ini dapat meningkatkan pembacaan data dari tabel dan mungkin membaca serta menagih untuk lebih banyak baris.
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
Beberapa fitur BigQuery tidak dipercepat saat menggunakan tabel yang berisi kebijakan akses tingkat baris, seperti BigQuery BI Engine dan tampilan terwujud.
Keamanan tingkat baris tidak berpartisipasi dalam pruning kueri, yang merupakan fitur tabel berpartisi. Untuk mengetahui informasi selengkapnya, lihat Tabel yang dipartisi dan dikelompokkan. Batasan ini tidak memperlambat eksekusi kueri utama.
Anda mungkin mengalami sedikit penurunan performa saat membuat kueri tabel dengan keamanan tingkat baris.
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.
Hasil kebijakan subkueri tingkat atas dibatasi hingga 100 MB. Batas ini berlaku per kebijakan akses tingkat baris.
Jika predikat kebijakan akses tingkat baris tidak dapat dievaluasi karena penghapusan tabel yang dirujuk, kueri akan gagal.
Pemantauan dan log audit
Saat data dalam tabel dengan satu atau beberapa kebijakan akses tingkat baris dibaca, kebijakan akses tingkat baris yang diotorisasi untuk akses baca dan tabel terkait yang direferensikan dalam subkueri 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
Untuk mengetahui informasi tentang cara mengelola keamanan tingkat baris, lihat Menggunakan keamanan tingkat baris.
Untuk mengetahui informasi tentang cara kerja keamanan tingkat baris dengan fitur dan layanan BigQuery lainnya, baca Menggunakan keamanan tingkat baris dengan fitur BigQuery lainnya.
Untuk mengetahui informasi tentang praktik terbaik terkait keamanan tingkat baris, lihat Praktik Terbaik untuk keamanan tingkat baris di BigQuery.