Ringkasan tampilan aman berparameter

Tampilan aman berparameter di AlloyDB untuk PostgreSQL memungkinkan Anda menerapkan kontrol akses baris tingkat aplikasi sehingga pengguna hanya dapat melihat data yang diizinkan untuk mereka akses. Dibuat sebagai ekstensi tampilan aman PostgreSQL, tampilan ini memungkinkan Anda menyertakan parameter bernama khusus aplikasi dalam definisi tampilan dan meneruskan nilai parameter yang berlaku di seluruh eksekusi kueri.

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 aman berparameter menggunakan fungsi execute_parameterized_query, atau dengan menjalankan pernyataan EXECUTE .. WITH VIEW PARAMETERS. Untuk mengetahui informasi selengkapnya, lihat Mengelola keamanan data aplikasi menggunakan tampilan aman berparameter AlloyDB.

Manfaat tampilan aman berparameter

Tampilan aman berparameter sangat cocok untuk mengelola keamanan data di tingkat database, terutama saat Anda menangani kueri ad hoc dari sumber yang tidak tepercaya, seperti yang diterjemahkan dari bahasa alami. Tampilan ini menawarkan cara yang fleksibel untuk menerapkan kontrol akses yang sangat mendetail.

Misalnya, pertimbangkan aplikasi yang melacak bagasi terdaftar pelanggan. Pelanggan dengan ID pengguna 12345 bertanya, "Di mana tas saya?" Dalam skenario ini, tabel virtual aman berparameter memastikan bahwa kueri hanya menampilkan baris yang dapat diakses oleh pengguna yang mengirimkan kueri—misalnya, baris yang ditautkan ke ID pengguna 12345.

Mitigasi risiko keamanan

Tampilan aman berparameter membantu mengurangi risiko keamanan saat pengguna akhir menjalankan kueri yang tidak tepercaya—seperti kueri natural language—di database Anda. Risiko ini mencakup:

  • Perintah berbahaya: pengguna mungkin mencoba memanipulasi model yang mendasarinya untuk mengakses semua data aplikasi.

  • Kueri SQL dengan cakupan luas: model bahasa besar (LLM) mungkin menghasilkan kueri SQL yang mengekspos data sensitif, bahkan dari kueri pengguna yang bermaksud baik.

Dengan menggunakan tampilan aman berparameter, Anda dapat membatasi rentang baris yang tersedia untuk setiap pengguna aplikasi. Kontrol ini membantu melindungi data aplikasi, terlepas dari cara pengguna menyusun kueri mereka.

Pengelolaan akses data

Tampilan aman berparameter mengatasi tantangan umum dalam mengelola akses data untuk jumlah pengguna yang besar dan terus bertambah.

  • Pengelolaan pengguna yang disederhanakan: Dengan tampilan aman berparameter, Anda dapat menggunakan satu peran database untuk melayani semua pengguna akhir, alih-alih menggunakan metode yang mungkin mengharuskan Anda membuat pengguna atau peran database terpisah untuk setiap pengguna akhir. Tampilan aman berparameter membantu menyederhanakan pengelolaan pengguna dan koneksi untuk aplikasi yang setiap pengguna akhirnya hanya memerlukan akses ke datanya.

    Misalnya, dalam aplikasi maskapai penerbangan tempat pelanggan hanya boleh melihat pemesanan mereka sendiri, Anda dapat menentukan satu tampilan aman berparameter yang diberi parameter oleh ID pengguna akhir. Tampilan ini memungkinkan satu peran database—dengan akses ke tampilan, bukan tabel pokok—untuk melayani semua pengguna, sehingga menyederhanakan pengelolaan pengguna dan koneksi database.

  • Penegakan keamanan yang efisien: Tampilan aman berparameter secara inheren menggabungkan kontrol akses. Saat tampilan dikueri, parameter keamanan yang ditentukan akan diterapkan secara konsisten, terlepas dari pengguna yang mengakses tampilan tersebut. Pendekatan ini berbeda dengan situasi ketika kebijakan keamanan yang mendasari tabel dasar mungkin tidak otomatis berlaku untuk tampilan tanpa konfigurasi tambahan.

Untuk mengetahui informasi selengkapnya tentang mekanisme keamanan yang ada di PostgreSQL, seperti Kebijakan Keamanan Tingkat Baris (RLS), lihat Kebijakan Keamanan Baris.

Mekanisme keamanan

Tampilan aman yang diberi parameter memberi developer aplikasi keamanan data dan kontrol akses baris menggunakan metode berikut:

  • Tampilan yang dibuat menggunakan opsi WITH (security_barrier) memberikan keamanan tingkat baris dengan mencegah fungsi dan operator yang dipilih secara berbahaya meneruskan nilai dari baris hingga setelah tampilan selesai berfungsi. Untuk mengetahui informasi selengkapnya tentang klausa WITH (security_barrier), 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 berguna untuk aplikasi yang menjalankan kueri yang tidak tepercaya dari pengguna akhir—seperti kueri yang dihasilkan oleh pembuatan bahasa alami ke SQL AI. Penerapan ini mencegah kueri keluar dari amplop keamanan yang disediakan oleh tampilan aman berparameter dan membantu mengelola penggunaan resource. Untuk mengetahui informasi selengkapnya tentang batasan kueri, lihat Batasan yang diterapkan pada kueri.

Batasan

  • Anda harus mengaktifkan flag tampilan berparameter secara terpisah di setiap instance AlloyDB. Objek tampilan berparameter yang dibuat pada instance utama disebarkan ke instance kumpulan baca dan replika lintas region. Namun, setelan flag parameterized_views.enabled tidak diterapkan secara otomatis dan harus ditetapkan secara manual di setiap instance. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

    Anda tidak dapat membuat kueri tampilan berparameter pada instance kumpulan baca atau pada replika lintas region sebelum mengaktifkan flag parameterized_views.enabled di setiap instance.

Langkah berikutnya