Seperti praktik terbaik SQL Server mengatakan, " Mode Otentikasi Windows lebih aman daripada Otentikasi SQL ". Dan sekarang saya ingin tahu: apakah ada cara untuk melindungi SQL Server dari pengguna dengan hak administrator Windows?
Seperti praktik terbaik SQL Server mengatakan, " Mode Otentikasi Windows lebih aman daripada Otentikasi SQL ". Dan sekarang saya ingin tahu: apakah ada cara untuk melindungi SQL Server dari pengguna dengan hak administrator Windows?
Jawaban:
Tidak.
Jika pengguna adalah Administrator Windows dari sebuah kotak, asumsikan bahwa mereka memiliki semua yang ada di kotak (termasuk SQL Server). Dengan hak Administrator Windows, itu sepele untuk mem-bypass perlindungan bertarget apa pun yang Anda terapkan (seperti pemicu masuk yang mengidentifikasi nama pengguna mereka), dengan menyamar sebagai orang lain (termasuk NT AUTHORITY\SYSTEM
, yang mendapat hak admin de facto pada semua instance SQL Server lokal ). Audit juga tidak akan banyak membantu, karena mereka dapat dengan mudah mematikannya, tetapi Anda harus melakukannya untuk berjaga-jaga.
Jika Anda tidak mempercayai seseorang, jangan beri mereka hak Administrator Windows, titik.
Tidak, itu tidak mungkin untuk sepenuhnya mencegah administrator mendapatkan sysadmin
akses ke contoh SQL Server.
Jika contoh di- restart dalam mode pengguna tunggal , SQL Server adalah hard-kode untuk memungkinkan sysadmin
hak administrator lokal , meskipun mungkin tidak ada login eksplisit. Alasan ini ada adalah untuk tujuan pemulihan karena dimungkinkan untuk mengunci diri Anda dari sebuah instance.
Yang mengatakan, membatasi akses saat instance sedang berjalan dalam mode multi-user (tanpa gangguan layanan) tidak sesulit itu. Seperti yang disebutkan Aaron, administrator lokal dapat berkedok sebagai identitas NT AUTHORITY\SYSTEM
, yang secara default memiliki sysadmin
tingkat login yang dibuat dalam SQL Server 2008. Ini dapat dieksploitasi untuk memulihkan sysadmin
akses saat server sedang berjalan. (Catatan: di SQL Server 2012, login ini tidak lagi a sysadmin
.) Saya tidak tahu persis untuk apa login ini (upgrade / hot fixes / etc., Mungkin), tapi saya pikir aman untuk menonaktifkannya kecuali selama peristiwa itu. Jika tidak ada login impersonatable lain, itu harus cukup untuk menolak akses. Sekali lagi, hanya jika instance sedang berjalan, tidak terputus .
Secara default di SQL 2008 dan 2012, tidak ada akses default untuk administrator Windows ke SQL Server. Untuk administrator Windows (yaitu, seseorang yang merupakan Administrator Domain atau Administrator Lokal) untuk memiliki akses, login mereka perlu secara eksplisit diberikan akses atau grup yang mereka miliki diberikan akses bersama dengan hak-hak dalam SQL Server itu sendiri. Anda diharuskan, ketika membuat instance, untuk menentukan satu login atau grup Direktori Aktif sebagai administrator, tetapi login / grup tersebut dapat dilakukan oleh siapa saja di domain Anda.
Di SQL 2005, ada BUILTIN\Administrators
grup dengan hak akses sysadmin. Grup ini akan memungkinkan akses administrator lokal sysadmin ke SQL Server. Grup ini dapat dihapus dari SQL Server dan itu dianggap praktik terbaik untuk melakukannya.
Yang sedang berkata, tidak ada cara untuk mencegah Windows (lokal atau domain) dari mempengaruhi server tempat SQL Server hidup. Ini berarti administrator masih dapat mempengaruhi layanan dan konfigurasi level OS, mengubah keamanan direktori, dan tugas level OS lainnya. Lagi pula, inilah sebabnya mereka adalah administrator Windows.
Secara umum, Anda harus mempercayai administrator Anda, baik SQL Server dan Windows. Meskipun administrator Windows tidak dapat melakukan tugas atau mengakses data (secara default) dalam SQL Server itu sendiri, mereka masih mengendalikan lingkungan tempat SQL Server Anda hidup. Anda harus berhati-hati dengan siapa yang Anda tugaskan untuk peran itu.