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 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.
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
Tampilan aman yang diberi parameter memberikan keamanan data di tingkat database terhadap kueri ad hoc dari sumber yang tidak tepercaya, seperti kueri yang diterjemahkan dari kueri bahasa natural. Misalnya, Anda dapat menggunakan tampilan aman yang diberi parameter untuk memberikan keamanan data bagi aplikasi tempat pengguna dapat mengeluarkan kueri dalam bahasa natural, 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 Mengelola keamanan data aplikasi 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 natural, pada tabel database. Risiko keamanan mencakup hal berikut:
- Pengguna dapat mengirimkan serangan injeksi perintah dan mencoba memanipulasi model yang mendasarinya untuk menampilkan semua data yang dapat diakses aplikasi.
- Model Natural Language to SQL (NL2SQL) mungkin 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 natural secara ketat, terlepas dari cara pengguna menyusun kueri tersebut.
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 melakukan pekerjaannya. 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 yang diterapkan 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.