Bagaimana Anda menangani kekurangan tingkat Skema di Oracle? Arsitektur keamanan Oracle bekerja dengan baik untuk aplikasi yang hanya membutuhkan hak-hak tingkat objek dan berfungsi dengan baik untuk DBA yang membutuhkan beberapa batasan. Namun, tampaknya ada lubang menganga besar dalam arsitektur untuk programmer melakukan pengembangan dengan aplikasi ujung depan dan PL / SQL dalam berbagai skema. Berikut adalah beberapa opsi saya dengan kelemahannya:
Buat setiap programmer melakukan pengembangan dalam skema mereka sendiri. DBA akan memberikan hak tingkat objek untuk programmer yang membutuhkannya. Setiap pengembangan paket harus dilakukan oleh DBA. Kelemahan utama adalah bahwa pemrogram akan menggunakan basis data seperti sedikit ember untuk merugikan kinerja basis data. Saya ingin para programmer untuk mengembangkan dalam database, tetapi metode ini akan sangat mencegahnya.
Berikan masing-masing programmer nama pengguna / kata sandi untuk selusin skema yang mereka butuhkan untuk melakukan pengembangan. Berikan izin skema aplikasi ini untuk membuat prosedur, tabel, dll. Beberapa kelemahan dengan pendekatan ini adalah bahwa programmer harus mempertahankan beberapa login dan jarang masuk sebagai diri mereka sendiri. Pengembangan lintas skema juga sulit.
Berikan hak istimewa autentikasi proksi pemrogram pada setiap skema yang mereka perlukan untuk pengembangan. Ini membuat mereka tetap masuk sebagai diri mereka sendiri tanpa harus memberi mereka hak istimewa selain hak proxy. Kerugian termasuk programmer harus mempertahankan koneksi terpisah untuk setiap skema yang mereka proksi, pengembangan lintas skema lebih rumit karena koneksi harus terus berubah, dan paket yang menggunakan tautan basis data publik dengan otentikasi yang dilewati tidak akan dikompilasi di dalam koneksi proxy.
Berikan masing-masing hak istimewa programmer DBA. - Kelemahan di sini adalah keamanan. Tidak ada pemrogram skema yang dapat dijauhkan dari skema apa pun dan pemrogram mana pun dapat menyamar sebagai pemrogram lainnya (DBA).
Tampaknya ada opsi yang hilang untuk memberikan masing-masing programmer SELECT / INSERT / CREATE / etc. hak istimewa pada skema yang mereka perlukan untuk melakukan pengembangan. Mereka masuk sebagai diri mereka sendiri untuk melakukan pekerjaan mereka menggunakan satu koneksi. Objek baru dalam skema yang dapat diakses langsung tersedia.
Apakah saya melewatkan sesuatu? Bagaimana Anda menangani pemrogram aplikasi yang melakukan pengembangan PL / SQL?
sumber
Jawaban:
Kembali pada hari-hari ketika saya bekerja di toko Oracle, kami memiliki server khusus 'dev' (pengembangan), yang memiliki batasan keamanan yang berbeda dari server 'prod' (produksi). Pengembang dapat melakukan apa pun yang mereka butuhkan, dan kemudian kami akan menyerahkan skrip yang diperlukan ke DBA untuk diterapkan ke server produksi.
Dalam hal sistem kritis kami (SCT Banner, untuk kelas pelacakan & siswa, dan Oracle Financials), ada juga server 'test' dan 'seed'. Tes untuk pengujian penerimaan pengguna sebelum barang dimigrasi dari dev ke prod; 'seed' adalah instalasi perangkat lunak, jadi jika kita menemukan bug, kita dapat memverifikasi apakah itu sesuatu yang telah kita perkenalkan atau berasal dari perangkat lunak SCT atau Oracle.
sumber
Gunakan peran untuk mengaitkan koleksi objek, lalu berikan akses ke peran
The GRANT pernyataan memungkinkan DBA untuk:
Karena hak objek dapat diberikan ke peran, relatif mudah untuk memberikan akses peran ke semua tabel dalam skema:
Ini, dikombinasikan dengan
GRANT CREATE TABLE
dikeluarkan oleh pengguna-skema yang sesuai untuk peran berarti bahwa pengembang dapat memilih dan membuat tabel. Itu tidak sempurna karena tabel yang dibuat mengharuskan skrip dijalankan lagi, tetapiWITH GRANT OPTION
menyarankan agar setiap pengembang kemudian dapat memberikan akses ke tabel yang mereka buat untuk peran yang sesuai.Ini menunjukkan bahwa Anda dapat membuat pemicu tingkat DDL yang dapat menjalankan proses pemberian yang sesuai, meskipun sejumlah besar pengujian jelas akan diperlukan, seharusnya memungkinkan untuk membuat pernyataan tabel buat secara otomatis memberikan izin yang sesuai ke peran yang sesuai.
Edit -
Menurut GRANT ,
CREATE TABLE
hak istimewa:Jadi, dengan memberi mereka buat tabel, ubah tabel, dll. Dari pengguna yang benar, mereka harus dapat mengakses skema pengguna itu seolah-olah mereka adalah pengguna yang tepat.
sumber