Gli accessi all'autenticazione di Windows possono essere disabilitati su SQL Server 2008 (o R2)?


8

Quindi possiamo fare il login di Windows o la modalità mista, ma possiamo configurare SQL Server per usare solo accessi interni e bloccare tutti gli accessi di Windows?

È l'unica soluzione per aggiungere tutti i potenziali accessi di Windows e impostarli su privilegi limitati come procedura preventiva (o reattiva)?

Risposte:


5

Non può essere disabilitato completamente, per due motivi:

  • Su installare, gli accessi sono provisioning per NT AUTHORITY\SYSTEM, NT SERVICE\SQLSERVERAGENT(o un gruppo contenente l'account del servizio SQL Agent), e NT SERVICE\MSSQLSERVER(o un gruppo che contiene l'account di servizio motore di database SQL). Si tratta di sysadminaccessi di livello che devono essere disponibili affinché SQL Server funzioni correttamente.

    Mentre un rapido test ha rivelato che l'eliminazione di tutti e tre questi accessi ha impedito il riavvio di SQL Agent (il motore di database è andato bene), sono sicuro che ci sono altre funzioni che si basano sugli altri due accessi ... sono stati creati per impostazione predefinita per un motivo, quindi non vorrei scherzare con loro. (Cordiali saluti se lo testate voi stessi: l'opzione di scripting Drop & Create per un login in SSMS non fa parte dell'appartenenza al ruolo del server di script.)

  • In modalità utente singolo, agli amministratori locali vengono automaticamente concessi i sysadminprivilegi di livello indipendentemente dal fatto che sia stato creato un accesso che "contenga" tali utenti. Questo è un appendiabiti per quando hai bloccato le chiavi in ​​macchina.

Come menzionato nell'altra risposta, solo gli accessi Windows creati in modo esplicito avranno accesso alla connessione (il mio commento originale era errato) - la rimozione di tutti gli accessi Windows creati dall'utente è sufficiente per impedire l'accesso.

Se devi fare un passo ulteriore e impedire la creazione di accessi a Windows , ecco un punto di partenza (la gestione basata su criteri, almeno nel 2008, non supporta la prevenzione in questo caso):

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

Naturalmente, chiunque disponga di autorizzazioni sufficienti potrebbe sconfiggere questo, ma questo è un problema separato ...


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.