Saya memiliki aplikasi untuk digunakan dalam produksi yang menggunakan keamanan 'sistem kehormatan'. Artinya, semua pengguna terhubung ke DB menggunakan kredensial pengguna SQL / passwd dan aplikasi mengelola izin itu sendiri. Bagian terakhir tidak mengganggu saya sebanyak fakta bahwa objek koneksi berisi kredensial tertanam dan dapat disalin secara bebas. Saya mencoba mencari cara untuk membatasi koneksi ke klien yang lebih terbatas. Saya bisa membuat aturan firewall untuk dibatasi oleh IP, tentu saja. Apakah ada cara untuk 'prakualifikasi' login SQL baik dengan akun Mesin atau keanggotaan domain?
sql-server
sql-server-2012
security
Jeff Sacksteder
sumber
sumber
Jawaban:
Anda dapat mencapai ini melalui Pemicu Logon . Di pemicu masuk Anda dapat memiliki logika untuk melakukan pemeriksaan yang diperlukan yang Anda cari (seperti nama mesin). Sayangnya, saya tidak percaya ada cara untuk mengambil keanggotaan domain pengguna jika Anda menggunakan SQL Server Authentication.
Anda dapat melihat menggunakan fungsi EVENTDATA untuk melihat apakah Anda dapat mengekstrak informasi lain untuk menentukan apakah koneksi harus diizinkan atau tidak. Jika Anda tidak ingin login tersebut berhasil, Anda dapat dengan mudah menguji dan mengeluarkan kondisi a
ROLLBACK
.sumber
Seperti yang disebutkan Thomas bahwa itu dapat dilakukan dengan menggunakan LOGON Trigger. Di bawah ini adalah skrip yang akan membantu Anda
sumber
Host_Name()
ini tidak aman dan dapat dengan mudah palsu dengan hanya tentang siapa pun. Ini sangat mudah dilakukan dari Excel. Anda@IPAddress
akan jauh lebih andal untuk tujuan ini.