Batasi akses untuk administrator Windows

11

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?

tsionyx
sumber
4
Hukum Keamanan Keenam yang Tidak Berubah: "Komputer hanya seaman administrator itu dapat dipercaya." Hukum 2 dan 10 juga relevan di sini. technet.microsoft.com/library/cc722487.aspx
Dan is Fiddling oleh Firelight

Jawaban:

15

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.

Aaron Bertrand
sumber
2
+1 apa pun yang mengklaim untuk menolak administrator builtin \ adalah minyak ular
Remus Rusanu
1

Tidak, itu tidak mungkin untuk sepenuhnya mencegah administrator mendapatkan sysadminakses ke contoh SQL Server.

Jika contoh di- restart dalam mode pengguna tunggal , SQL Server adalah hard-kode untuk memungkinkan sysadminhak 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 sysadmintingkat login yang dibuat dalam SQL Server 2008. Ini dapat dieksploitasi untuk memulihkan sysadminakses 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 .

Jon Seigel
sumber
0

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\Administratorsgrup 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.

Mike Fal
sumber
3
Jangan terlalu nyaman dalam hal ini - sementara perubahan yang dilakukan Microsoft membuatnya sedikit lebih aman, belum ada antipeluru. Ini sepele untuk seorang administrator lokal berkedok dan melakukan penawaran mereka secara langsung ke setiap instance SQL Server lokal - jadi Anda perlu khawatir tentang lebih dari sekadar pengaruh tidak langsung di tingkat OS.
Aaron Bertrand
Saya harus bertanya - keadaan apa yang membenarkan pemberian akses administrator pengguna yang tidak tepercaya ke server?
Mark Allen
Secara pribadi, saya tidak berpikir apa-apa. Seperti yang telah dinyatakan oleh banyak orang dalam jawaban lain (dan tidak begitu jelas di sini), Anda harus memercayai administrator Anda. Dan jika Anda tidak mempercayai mereka, jangan buat mereka menjadi administrator.
Mike Fal