Ringkasan tampilan aman yang diberi parameter di Cloud SQL

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 bagian 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 yang diberi parameter pada tabel dengan menambahkan variabel sesi ke klausa WHERE.

-- 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 yang diberi parameter untuk memberikan keamanan data bagi aplikasi tempat pengguna dapat mengeluarkan kueri dalam bahasa alami, seperti, "Tampilkan pesanan saya".

Anda dapat menggunakan tampilan aman yang diberi parameter 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 yang diberi parameter.

Tampilan aman yang diberi parameter membantu mengurangi risiko keamanan yang terjadi saat pengguna akhir diizinkan menjalankan kueri yang tidak tepercaya, seperti kueri bahasa alami, pada tabel database. Risiko keamanan mencakup hal berikut:

  • Pengguna dapat mengirimkan serangan injeksi perintah dan mencoba memanipulasi model yang mendasarinya untuk mengungkapkan semua data yang dapat diakses aplikasi.
  • Model Natural Language to SQL (NL2SQL) dapat menghasilkan kueri SQL yang cakupannya lebih luas daripada yang sesuai karena alasan keamanan data. Risiko keamanan ini dapat mengekspos data sensitif sebagai respons terhadap kueri pengguna yang bahkan memiliki niat baik.

Dengan menggunakan tampilan aman yang diberi parameter, Anda dapat menentukan tabel dan kolom tempat kueri yang tidak tepercaya dapat mengambil data. Tampilan ini memungkinkan Anda membatasi rentang baris yang tersedia untuk pengguna aplikasi tertentu. Pembatasan ini juga memungkinkan Anda mengontrol data yang dapat dilihat pengguna aplikasi melalui kueri bahasa alami secara ketat, terlepas dari cara pengguna menyusun kueri tersebut.

Misalnya, Anda mungkin memiliki aplikasi yang melacak pesanan pelanggan. Agen dukungan bertanya dalam aplikasi, "Bagaimana status pesanan untuk pelanggan 12345?" Dalam skenario ini, aplikasi dapat menggunakan tampilan aman yang diberi parameter 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 yang diberi parameter, Anda dapat membatasi rentang baris yang tersedia untuk pengguna aplikasi tertentu. 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 memberikan keamanan tingkat baris dengan mencegah fungsi dan operator yang dipilih secara berbahaya meneruskan nilai dari baris hingga setelah tampilan selesai melakukan pekerjaannya.
  • Parameter tampilan bernama memungkinkan tampilan database yang dibatasi dan diberi parameter berdasarkan nilai. Nilai diberikan oleh aplikasi berdasarkan keamanan tingkat aplikasi seperti autentikasi pengguna akhir.

  • Penerapan batasan tambahan pada kueri yang mengakses tampilan yang diberi parameter yang mencegah serangan terhadap penghindaran pemeriksaan dalam tampilan berdasarkan nilai parameter yang diberikan. Untuk mengetahui informasi selengkapnya, lihat Pembatasan pada kueri.

Mempermudah pengelolaan pengguna

Dengan tampilan aman yang diberi parameter, 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 tempat setiap pengguna akhir hanya memerlukan akses ke data mereka.

Misalnya, dalam aplikasi tempat pengguna hanya boleh melihat pesanan untuk pelanggan tertentu, Anda dapat menentukan satu tampilan aman yang diberi parameter yang diberi parameter berdasarkan ID pengguna akhir. Tampilan ini memungkinkan satu peran database—dengan akses ke tampilan, bukan tabel yang mendasarinya—untuk melayani semua pengguna, yang menyederhanakan pengelolaan pengguna dan koneksi database.

Batasan

  • Tampilan aman yang diberi parameter hanya didukung di Cloud SQL untuk MySQL versi 8.0.43 dan yang lebih baru. Jika Anda mencoba membuat tampilan aman yang diberi parameter di versi MySQL yang lebih lama, Cloud SQL akan menampilkan error.

  • Anda tidak dapat menentukan variabel di luar klausa WHERE, HAVING, atau ON.

  • Anda tidak dapat menggunakan EXPLAIN pada tampilan aman yang diberi parameter.

  • Ada batasan saat Anda membuat kueri tampilan aman yang diberi parameter. Untuk mengetahui informasi selengkapnya, lihat Pembatasan pada kueri.

Langkah berikutnya