Tampilan aman yang diberi parameter di Cloud SQL untuk PostgreSQL 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 PostgreSQL, 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
Berikut adalah contoh tampilan aman yang diberi parameter:CREATE VIEW user_specific_items WITH (security_barrier) AS
SELECT item_id, item_name, description
FROM items t
WHERE owner_id = $@app_user_id;
Anda dapat membuat kueri tampilan menggunakan fungsi execute_parameterized_query, atau dengan menjalankan pernyataan EXECUTE .. WITH VIEW PARAMETERS.
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 PostgreSQL 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 cara 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, di 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 Bahasa Alami ke 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 setiap pengguna aplikasi. 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 di 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 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 yang dibuat menggunakan klausa
WITH (security barrier)memberikan keamanan tingkat baris dengan mencegah fungsi dan operator yang dipilih secara berbahaya meneruskan nilai dari baris hingga setelah tampilan selesai. Untuk mengetahui informasi selengkapnya tentang klausaWITH (security barrier), lihat Aturan dan Hak Istimewa.
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 Batasan pada kueri.
Batasan
Untuk menggunakan tampilan aman yang diberi parameter, Anda harus mengaktifkan flag database
cloudsql.enable_parameterized_viewsuntuk instance Cloud SQL, yang memerlukan restart database.Ekstensi
parameterized_viewsharus dibuat di setiap database tempat Anda ingin membuat tampilan aman yang diberi parameter.Jika tampilan yang diberi parameter direferensikan dalam fungsi yang ditentukan pengguna yang dipanggil menggunakan salah satu API yang digunakan dalam tampilan aman yang diberi parameter, akan terjadi error. Anda harus langsung mereferensikan tampilan yang diberi parameter dalam kueri induk.
- Ada batasan saat Anda membuat kueri tampilan aman yang diberi parameter. Untuk mengetahui informasi selengkapnya, lihat Batasan pada kueri.