Bisakah login Otentikasi Windows dinonaktifkan pada SQL Server 2008 (atau R2)?

8

Jadi kita bisa melakukan Login Windows atau Mode Campuran, tetapi bisakah kita mengkonfigurasi SQL Server hanya menggunakan login internal dan memblokir semua Login Windows?

Apakah satu-satunya solusi untuk menambahkan semua login Windows potensial dan mengaturnya untuk hak istimewa terbatas sebagai prosedur pencegahan (atau reaktif)?

jcolebrand
sumber

Jawaban:

5

Itu tidak dapat dinonaktifkan sepenuhnya, karena dua alasan:

  • Saat diinstal, login disediakan untuk NT AUTHORITY\SYSTEM, NT SERVICE\SQLSERVERAGENT(atau grup yang berisi akun layanan SQL Agent), dan NT SERVICE\MSSQLSERVER(atau grup yang berisi akun layanan engine database SQL). Ini adalah sysadmin-level login yang harus tersedia agar SQL Server berfungsi dengan benar.

    Sementara tes cepat mengungkapkan bahwa menghapus ketiga login tersebut hanya mencegah SQL Agen dari restart (mesin database baik-baik saja), saya yakin ada fungsi lain yang bergantung pada dua login lainnya ... mereka diciptakan secara default karena suatu alasan, jadi saya tidak akan dipusingkan dengan mereka. (FYI jika Anda menguji sendiri: opsi Drop & Buat skrip untuk masuk di SSMS tidak keanggotaan skrip peran server.)

  • Dalam mode single-user, administrator lokal secara otomatis diberikan sysadminhak-hak tingkat terlepas terlepas dari apakah ada login yang dibuat yang "mengandung" para pengguna tersebut. Ini gantungan baju ketika Anda mengunci kunci di mobil.

Seperti disebutkan dalam jawaban lain, hanya login Windows yang dibuat secara eksplisit akan memiliki akses untuk terhubung (komentar asli saya salah) - menghapus semua login Windows yang dibuat pengguna sudah cukup untuk mencegah akses.

Jika Anda perlu melangkah lebih jauh dan mencegah login Windows dibuat , berikut ini adalah titik awalnya (Manajemen Berbasis Kebijakan, setidaknya pada 2008, tidak mendukung mencegah hal ini saat terjadi):

CREATE TRIGGER trg_PreventWindowsLogins
    ON ALL SERVER
    AFTER CREATE_LOGIN
AS
BEGIN

    SET NOCOUNT ON;

    IF (EVENTDATA().exist('/EVENT_INSTANCE[1]/LoginType[1]/text()[1] eq "Windows (NT) Login"') = 1)
    BEGIN
        RAISERROR(N'Not allowed to create Windows logins!', 16, 1);
        ROLLBACK;
    END

END

Tentu saja, siapa pun dengan izin yang cukup dapat mengalahkan ini, tapi itu masalah terpisah ...

Jon Seigel
sumber
6

Sejauh yang saya ketahui tidak mungkin untuk menonaktifkan otentikasi Windows di SQL Server 2008 + R2:

http://msdn.microsoft.com/en-us/library/ms144284%28v=sql.105%29.aspx

Satu-satunya akun Windows yang akan memiliki akses adalah mereka yang secara eksplisit ditambahkan sebagai login (atau anggota grup yang memiliki login).

georgeb
sumber