Ringkasan tampilan aman berparameter

Pilih versi dokumentasi:

Halaman ini menjelaskan tampilan aman dengan parameter di AlloyDB Omni, yang menyediakan keamanan data aplikasi dan kontrol akses baris menggunakan tampilan SQL serta membantu memastikan bahwa pengguna aplikasi hanya dapat melihat data yang seharusnya mereka akses.

Tampilan aman dengan parameter adalah ekstensi dari tampilan aman 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. Antarmuka menjalankan kueri dengan nilai tersebut, yang digunakan di seluruh eksekusi kueri.

Berikut adalah contoh tampilan aman dengan parameter:

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

Manfaat tampilan aman dengan parameter

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

Misalnya, pertimbangkan aplikasi yang melacak bagasi pelanggan yang check-in. Pelanggan dengan ID pengguna 12345 bertanya, "Di mana tas saya?" Dalam skenario ini, tampilan aman dengan parameter memastikan hal berikut:

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 dengan parameter membantu mengurangi risiko keamanan saat pengguna akhir menjalankan kueri yang tidak tepercaya—seperti kueri bahasa alami—di database Anda. Risiko ini mencakup hal berikut:

  • Perintah berbahaya: Pengguna mungkin mencoba memanipulasi model yang mendasarinya untuk mengakses semua data aplikasi.
  • Kueri SQL dengan cakupan luas: Model bahasa besar (LLM) mungkin membuat kueri SQL yang mengekspos data sensitif, bahkan dari kueri pengguna yang memiliki niat baik.

Dengan menggunakan tampilan aman dengan parameter, Anda dapat membatasi rentang baris yang tersedia untuk setiap pengguna aplikasi. Kontrol ini memastikan keamanan data, terlepas dari cara pengguna menyusun kueri mereka.

Pengelolaan akses data

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

  • Pengelolaan pengguna yang disederhanakan: Dengan tampilan aman dengan 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. Tampilan aman dengan parameter membantu menyederhanakan pengelolaan pengguna dan koneksi untuk aplikasi yang setiap pengguna akhirnya hanya memerlukan akses ke data mereka. Misalnya, di aplikasi maskapai penerbangan tempat pelanggan hanya boleh melihat pemesanan mereka sendiri, Anda dapat menentukan satu tampilan aman dengan parameter yang diparameterkan oleh 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.
  • Penegakan keamanan yang disederhanakan: Tampilan aman dengan parameter secara inheren menggabungkan kontrol akses. Saat kueri dibuat, parameter keamanan yang ditentukan akan diterapkan secara konsisten, terlepas dari pengguna yang mengakses tampilan. Pendekatan ini berbeda dengan situasi saat kebijakan keamanan yang mendasarinya pada 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 dengan parameter menambahkan lapisan keamanan ekstra dengan mengontrol cara kueri mengakses data yang mendasarinya. Tampilan ini 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 untuk meneruskan nilai dari baris hingga setelah tampilan selesai. Untuk mengetahui informasi selengkapnya tentang klausa WITH (security barrier), lihat Aturan dan Hak Istimewa.
  • Parameterisasi menggunakan parameter tampilan bernama memungkinkan tampilan database yang dibatasi diparameterkan oleh nilai yang diberikan oleh aplikasi berdasarkan keamanan tingkat aplikasi, seperti autentikasi pengguna akhir.
  • Penegakan batasan tambahan pada kueri yang mengakses tampilan dengan parameter berguna untuk aplikasi yang menjalankan kueri yang tidak tepercaya dari pengguna akhir—seperti kueri yang dibuat oleh pembuatan bahasa alami ke SQL AI. Hal ini mencegah lolos dari amplop keamanan yang disediakan oleh tampilan aman dengan parameter dan mengelola penggunaan resource. Untuk mengetahui informasi selengkapnya, lihat Batasan yang diterapkan pada kueri.

Batasan

  • Anda harus mengaktifkan flag tampilan dengan parameter secara terpisah di setiap instance AlloyDB Omni. Objek tampilan dengan parameter yang dibuat di 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 dengan parameter di instance kumpulan baca atau di replika lintas region sebelum mengaktifkan flag parameterized_views.enabled di setiap instance.

Langkah berikutnya