Dokumen ini menjelaskan tampilan aman berparameter di AlloyDB untuk PostgreSQL, yang memberikan keamanan data aplikasi dan kontrol akses baris sambil mendukung SQL. Tampilan ini mendukung ekstraksi nilai data—proses pengambilan bagian data tertentu dari kolom—dan membantu melindungi dari serangan injeksi perintah. Tampilan aman berparameter membantu memastikan bahwa pengguna akhir hanya dapat melihat data yang seharusnya mereka akses.
Tampilan berparameter 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 berparameter:
CREATE VIEW secure_checked_items WITH (security_barrier) AS
SELECT bag_id, timestamp, location
FROM checked_items t
WHERE customer_id = $@app_end_userid;
Anda dapat membuat kueri tampilan menggunakan prosedur tersimpan execute_parameterized_query
,
atau dengan menjalankan pernyataan EXECUTE .. WITH VIEW PARAMETERS
.
Kasus penggunaan
Tampilan aman berparameter sangat cocok untuk administrasi keamanan data di tingkat database terhadap kueri ad-hoc dari sumber yang tidak tepercaya, seperti kueri yang diterjemahkan dari kueri bahasa alami. Misalnya, pertimbangkan aplikasi yang database-nya melacak bagasi check-in pelanggan yang bepergian. Pelanggan ini dapat mengeluarkan kueri ke aplikasi. Misalnya, pelanggan dengan ID pengguna aplikasi 12345 dapat memasukkan kueri ke dalam aplikasi seperti, "Di mana tas saya?"
Anda dapat menggunakan tampilan aman berparameter untuk menerapkan persyaratan berikut pada cara AlloyDB menjalankan kueri ini:
- Kueri hanya dapat membaca objek dan kolom database yang Anda cantumkan dalam tampilan aman berparameter database Anda.
- Kueri hanya dapat membaca baris database yang terkait dengan pengguna yang mengirimkan kueri. Baris yang ditampilkan memiliki hubungan data dengan
baris tabel pengguna yang nilai kolom ID-nya adalah
12345
.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi keamanan dan kontrol akses, lihat Mengamankan dan mengontrol akses ke data aplikasi menggunakan tampilan aman berparameter.
Tampilan aman berparameter membantu mengurangi 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 yang mendasarinya untuk mengungkapkan semua data yang dapat diakses aplikasi.
- LLM 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 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.
Mekanisme keamanan
Tampilan aman berparameter memberikan keamanan data dan kontrol akses baris kepada developer aplikasi menggunakan metode berikut:
- Tampilan yang dibuat menggunakan opsi
WITH (security barrier)
memberikan keamanan tingkat baris dengan mencegah fungsi dan operator yang dipilih secara berbahaya agar tidak meneruskan nilai dari baris hingga setelah tampilan selesai. Untuk mengetahui informasi selengkapnya tentang klausaWITH (security barrier)
ini, lihat Aturan dan Hak Istimewa. - Parameterisasi menggunakan parameter tampilan bernama memungkinkan tampilan database yang dibatasi yang diparameterisasi oleh nilai yang disediakan 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 yang diterapkan pada kueri.
Batasan
Jika tampilan berparameter dirujuk dalam fungsi yang ditentukan pengguna yang dipanggil menggunakan salah satu API yang digunakan dalam tampilan aman berparameter, terjadi error. Anda harus mereferensikan tampilan berparameter secara langsung dalam kueri induk.
Anda harus mengaktifkan tanda tampilan berparameter secara terpisah di setiap instance AlloyDB. Objek tampilan berparameter yang dibuat di instance utama disebarkan ke replika hanya baca dan replika lintas-region. Namun, setelan tanda
parameterized_views.enabled
tidak direplikasi secara otomatis dan harus direplikasi secara manual di setiap instance. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai. Anda tidak dapat membuat kueri tampilan berparameter pada replika sebelum mengaktifkan flagparameterized_views.enabled
pada setiap instance replika. Batasan ini tidak berlaku untuk instance standby.
Langkah berikutnya
- Mengelola keamanan data aplikasi menggunakan tampilan aman berparameter.
- Amankan dan kontrol akses ke data aplikasi menggunakan tampilan aman berparameter.