Können Windows-Authentifizierungsanmeldungen unter SQL Server 2008 (oder R2) deaktiviert werden?


8

Wir können also Windows-Anmeldung oder gemischten Modus ausführen, aber können wir SQL Server so konfigurieren, dass nur interne Anmeldungen verwendet werden und alle Windows-Anmeldungen blockiert werden?

Ist die einzige Lösung, um alle potenziellen Windows-Anmeldungen hinzuzufügen und sie als vorbeugende (oder reaktive) Prozedur auf eingeschränkte Berechtigungen zu setzen?

Antworten:


5

Es kann aus zwei Gründen nicht vollständig deaktiviert werden:

  • On installiert, werden Anmeldungen bereitgestellt für NT AUTHORITY\SYSTEM, NT SERVICE\SQLSERVERAGENT(oder eine Gruppe mit dem SQL - Agent - Dienstkonto enthält) und NT SERVICE\MSSQLSERVER(oder eine Gruppe , die das SQL - Datenbank - Engine - Dienstkonto). Dies sind sysadminAnmeldungen auf Ebene, die verfügbar sein müssen, damit SQL Server ordnungsgemäß funktioniert.

    Während ein schneller Test ergab, dass das Löschen aller drei Anmeldungen nur den Neustart von SQL Agent verhinderte (das Datenbankmodul funktionierte einwandfrei), gibt es sicher noch andere Funktionen, die auf den beiden anderen Anmeldungen beruhen. Sie wurden standardmäßig erstellt aus einem Grund, damit ich nicht mit ihnen herumspielen würde. (Zu Ihrer Information, wenn Sie dies selbst testen: Die Drop & Create-Skriptoption für eine Anmeldung in SSMS führt keine Skript-Serverrollenmitgliedschaft durch.)

  • Im Einzelbenutzermodus erhalten lokale Administratoren automatisch Berechtigungen auf sysadminEbenenebene, unabhängig davon, ob ein Login erstellt wurde, das diese Benutzer "enthält". Dies ist ein Kleiderbügel, wenn Sie Ihre Schlüssel im Auto eingeschlossen haben.

Wie in der anderen Antwort erwähnt, haben nur explizit erstellte Windows-Anmeldungen Zugriff auf die Verbindung (mein ursprünglicher Kommentar war falsch). Das Entfernen aller vom Benutzer erstellten Windows-Anmeldungen reicht aus, um den Zugriff zu verhindern.

Wenn Sie noch einen Schritt weiter gehen und verhindern müssen, dass Windows-Anmeldungen erstellt werden , finden Sie hier einen Ausgangspunkt (Policy-Based Management unterstützt zumindest 2008 nicht, dies zu verhindern):

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

Natürlich könnte jeder mit genügend Berechtigungen dies besiegen, aber das ist ein separates Problem ...


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.