Tampilan aman yang diberi parameter di Cloud SQL untuk MySQL memberikan keamanan data dan kontrol akses baris ke aplikasi sekaligus mendukung SQL. Tampilan ini mendukung ekstraksi nilai data—proses pengambilan potongan data tertentu dari kolom—dan membantu melindungi dari serangan injeksi perintah. Tampilan aman yang diberi parameter membantu memastikan bahwa pengguna akhir hanya dapat melihat data yang seharusnya mereka akses.
Tampilan aman yang diberi parameter adalah ekstensi dari tampilan MySQL, yang memungkinkan Anda menggunakan parameter tampilan bernama khusus aplikasi dalam definisi tampilan. Kemampuan ini menyediakan antarmuka yang mengambil kueri dan nilai untuk parameter bernama. Tampilan menjalankan kueri dengan nilai tersebut, yang digunakan selama eksekusi kueri tersebut.Contoh tampilan aman yang diberi parameter
Contoh berikut menunjukkan cara membuat tampilan aman berparameter pada tabel dengan menambahkan variabel sesi ke klausaWHERE.
-- Create a view with a parameter
CREATE VIEW v_orders AS
SELECT * FROM orders
WHERE customer_id = @local_customer_id AND year >= @earliest_year;
Kemudian, Anda dapat menetapkan parameter untuk tampilan dan menjalankan kueri.
-- Set the parameter and query
SELECT /*+ SET_VIEW_VARS(local_customer_id=5, earliest_year=2021) */ * FROM v_orders;
-- Or query through a stored procedure
CALL mysql.execute_parameterized_query(
'SELECT * FROM db.v_orders',
'local_customer_id = 5, earliest_year = 2021');
Kasus penggunaan
Model bahasa besar (LLM) dapat menghasilkan kueri SQL yang mengekspos data sensitif.
Tampilan aman yang diberi parameter mengelola keamanan data di tingkat database, terutama kueri ad hoc dari sumber yang tidak tepercaya, seperti yang diterjemahkan dari bahasa alami. Misalnya, Anda dapat menggunakan tampilan aman berparameter untuk menyediakan keamanan data bagi aplikasi tempat pengguna dapat mengeluarkan kueri dalam bahasa alami, seperti, "Tampilkan pesanan saya".
Anda dapat menggunakan tampilan aman berparameter untuk menerapkan persyaratan berikut pada cara Cloud SQL untuk MySQL menjalankan kueri ini:
- Kueri hanya membaca objek dan kolom database yang Anda cantumkan dalam tampilan aman yang diberi parameter database.
- Kueri hanya membaca baris database yang terkait dengan pengguna yang mengirimkan kueri. Baris yang ditampilkan memiliki hubungan data dengan baris tabel pengguna.
Untuk mengetahui informasi selengkapnya tentang mengonfigurasi keamanan dan kontrol akses, lihat Menggunakan tampilan aman berparameter.
Tampilan aman yang diberi parameter membantu memitigasi risiko keamanan yang terjadi saat pengguna akhir diizinkan untuk menjalankan kueri yang tidak tepercaya, seperti kueri bahasa alami, pada tabel database. Risiko keamanan meliputi hal berikut:
- Pengguna dapat mengirimkan serangan injeksi perintah dan mencoba memanipulasi model pokok untuk mengungkapkan semua data yang dapat diakses oleh aplikasi.
- Model Natural Language to SQL (NL2SQL) dapat menghasilkan kueri SQL yang cakupannya lebih luas daripada yang sesuai untuk alasan keamanan data. Risiko keamanan ini dapat mengekspos data sensitif sebagai respons terhadap kueri pengguna yang bahkan bermaksud baik.
Dengan tampilan aman berparameter, Anda dapat menentukan tabel dan kolom yang dapat digunakan kueri yang tidak tepercaya untuk menarik data. Tampilan ini memungkinkan Anda membatasi rentang baris yang tersedia untuk setiap pengguna aplikasi. Pembatasan ini juga memungkinkan Anda mengontrol secara ketat data yang dapat dilihat pengguna aplikasi melalui kueri bahasa alami, terlepas dari cara pengguna menyusun kueri tersebut.
Misalnya, Anda mungkin memiliki aplikasi yang melacak pesanan pelanggan. Agen dukungan bertanya di aplikasi, "Bagaimana status pesanan untuk pelanggan 12345?" Dalam skenario ini, aplikasi dapat menggunakan tampilan aman berparameter dengan variabel sesi yang didasarkan pada ID pelanggan. Tampilan aman yang diberi parameter menggunakan kueri yang hanya menampilkan baris yang ditautkan ke dan dapat diakses oleh ID pelanggan 12345.
Dengan menggunakan tampilan aman berparameter, Anda dapat membatasi rentang baris yang tersedia untuk setiap pengguna aplikasi. Kontrol ini memastikan keamanan data, terlepas dari cara pengguna menyusun kueri mereka.
Keamanan data
Tampilan aman yang diberi parameter memberikan keamanan data dan kontrol akses baris kepada developer aplikasi menggunakan metode berikut:
- Tampilan aman yang diberi parameter MySQL menyediakan keamanan tingkat baris dengan mencegah fungsi dan operator yang dipilih secara berbahaya meneruskan nilai dari baris hingga setelah tampilan selesai melakukan tugasnya.
Parameter tampilan bernama memungkinkan tampilan terbatas dari database yang diparameterkan oleh nilai. Nilai diberikan oleh aplikasi berdasarkan keamanan tingkat aplikasi seperti autentikasi pengguna akhir.
Penerapan batasan tambahan pada kueri yang mengakses tampilan berparameter yang mencegah serangan terhadap penghindaran pemeriksaan dalam tampilan berdasarkan nilai parameter yang diberikan. Untuk mengetahui informasi selengkapnya, lihat Pembatasan pada kueri.
Menyederhanakan pengelolaan pengguna
Dengan tampilan aman berparameter, Anda dapat menggunakan satu peran database untuk melayani semua pengguna akhir, bukan menggunakan metode yang mungkin mengharuskan Anda membuat pengguna atau peran database terpisah untuk setiap pengguna akhir. Hal ini membantu menyederhanakan pengelolaan pengguna dan koneksi untuk aplikasi yang setiap pengguna akhirnya hanya memerlukan akses ke datanya.
Misalnya, dalam aplikasi yang hanya boleh menampilkan pesanan untuk pelanggan tertentu, Anda dapat menentukan satu tampilan aman berparameter yang diparameterkan oleh ID pengguna akhir. Tabel virtual ini memungkinkan satu peran database –dengan akses ke tabel virtual, bukan tabel pokok– untuk melayani semua pengguna, yang menyederhanakan pengelolaan pengguna dan koneksi database.
Batasan
Tampilan aman berparameter hanya didukung di Cloud SQL untuk MySQL versi 8.0.43 dan yang lebih baru. Jika Anda mencoba membuat tampilan aman berparameter di MySQL versi sebelumnya, maka Cloud SQL akan menampilkan error.
Anda tidak dapat menentukan variabel di luar klausa
WHERE,HAVING, atauON.Anda tidak dapat menggunakan
EXPLAINpada tampilan aman yang diberi parameter.
- Ada batasan saat Anda membuat kueri tampilan aman yang diberi parameter. Untuk mengetahui informasi selengkapnya, lihat Pembatasan pada kueri.