Memutuskan Tempat Untuk Menerapkan Keamanan
Trade-off melekat dalam menegakkan keamanan. Database dapat menjadi tempat alami untuk menempatkan logika keamanan, mengingat bahwa pada akhirnya data adalah hal terpenting untuk dilindungi. Namun, melakukannya memiliki implikasi performa yang signifikan. Menegakkan keamanan di database bisa sangat mahal, menskalakan dengan buruk, dan tidak fleksibel.
Memberlakukan Keamanan di Tingkat Tengah
Aturan umum yang harus diikuti dengan aplikasi multi-tingkat yang dapat diskalakan menggunakan COM+ adalah, jika memungkinkan, Anda harus memberlakukan keamanan terperinci dalam aplikasi COM+ di tingkat menengah. Melakukannya memungkinkan Anda untuk sepenuhnya memanfaatkan layanan yang dapat diskalakan yang disediakan oleh COM+. Menerapkan autentikasi di database hanya ketika Anda benar-benar perlu, dan sepenuhnya menimbang implikasi performa melakukannya.
Situasi optimalnya adalah dapat mengamankan tabel database sehingga aplikasi COM+ dapat mengaksesnya di bawah identitasnya sendiri. Database hanya boleh mengautentikasi aplikasi COM+ dan mempercayainya untuk mengautentikasi dan mengotorisasi klien yang akan mengakses data dengan benar. Manfaat dari pendekatan ini adalah sebagai berikut:
- Ini memungkinkan pengumpulan koneksi di antara semua klien, karena koneksi sepenuhnya generik.
- Ini umumnya mengoptimalkan akses data, seringkali titik tersedak bermasalah saat menskalakan aplikasi.
- Ini dapat meminimalkan overhead logika untuk memberlakukan keamanan, terutama jika keamanan berbasis peran deklaratif dapat digunakan.
- Ini dapat memberikan fleksibilitas besar dalam kebijakan keamanan. Anda dapat mengonfigurasi dan mengonfigurasi ulang dengan mudah, seperti yang dijelaskan dalam Administrasi Keamanan Berbasis Peran.
Tetapi, seperti yang dibahas dalam Merancang Peran Secara Efektif, sementara peran dapat dengan mudah dan efektif diterapkan pada beberapa hubungan data pengguna, peran tersebut bukan solusi universal untuk keputusan akses keamanan.
Memberlakukan Keamanan di Database
Meskipun lebih disukai untuk memberlakukan keamanan di tingkat menengah, ada sejumlah alasan untuk memberlakukan keamanan di database, seperti berikut ini:
- Anda tidak memiliki pilihan, mungkin karena alasan warisan atau mungkin karena keputusannya tidak ada di tangan Anda.
- Database diakses oleh berbagai aplikasi, dan keamanannya tidak dapat dikonfigurasi berdasarkan satu aplikasi.
- Database dapat dibuat terlindungi secara terprediksi. Jika Anda menyimpan data penting perusahaan dalam database, Anda dapat menggambar gerobak ketat di sekitarnya dan membantu mengontrol siapa yang bisa melihatnya.
- Mengautentikasi klien asli di database memungkinkan pengelogan terperinci tentang siapa yang telah melakukan apa dalam database.
- Beberapa data secara bawaan terikat pada pengguna tertentu, dan logika membuat keputusan akses yang sangat halus mungkin paling efisien dilakukan di database itu sendiri, dekat dengan data.
Ketika Anda memiliki kemewahan merancang keamanan database dan aplikasi COM+ secara bersamaan, sebagian besar masalah ini berkaitan dengan karakteristik data itu sendiri dan hubungannya dengan pengguna yang mengaksesnya. Dengan data yang dapat diakses oleh kategori pengguna yang dapat diprediksi, efisien untuk mengontrol akses di tingkat menengah menggunakan peran. Dengan data yang secara rumit terikat pada kelas pengguna yang sangat kecil, hubungan tersebut harus sering diekspresikan dengan data itu sendiri dan karenanya Anda harus memberlakukan beberapa keamanan di database.
Implikasi Performa Penegakan Keamanan di Database
Jika Anda mengautentikasi atau mengotorisasi pengguna di database, identitas pengguna perlu disebarluaskan ke database untuk mendukung ini. Jika database mempercayai aplikasi tingkat menengah untuk melakukannya, dimungkinkan untuk meneruskan informasi keamanan pengguna dalam parameter. Jika tidak, panggilan ke database harus dilakukan di bawah identitas pengguna, yang berarti bahwa aplikasi server harus meniru klien. Ini dapat memiliki implikasi performa seperti berikut:
- Meniru klien bisa jauh lebih lambat daripada melakukan panggilan langsung di bawah identitas aplikasi. Untuk detail selengkapnya, lihat Peniruan Dan Delegasi Klien.
- Koneksi database yang dibuat di bawah identitas pengguna tertentu tidak dapat dikumpulkan.
- Menambahkan logika dalam database itu sendiri menjalankan risiko membuat hambatan penskalaan.
Topik terkait