Les connexions d'authentification Windows peuvent-elles être désactivées sur SQL Server 2008 (ou R2)?


8

Nous pouvons donc faire la connexion Windows ou le mode mixte, mais pouvons-nous configurer SQL Server pour utiliser uniquement les connexions internes et bloquer toutes les connexions Windows?

Est-ce la seule solution pour ajouter toutes les connexions Windows potentielles et les définir sur des privilèges restreints en tant que procédure préventive (ou réactive)?

Réponses:


5

Il ne peut pas être complètement désactivé, pour deux raisons:

  • Lors de l' installation, les connexions sont provisionnées NT AUTHORITY\SYSTEM, NT SERVICE\SQLSERVERAGENT(ou un groupe contenant le compte de service Agent SQL), et NT SERVICE\MSSQLSERVER(ou un groupe contenant le compte de service du moteur de base de données SQL). Ce sont des sysadminconnexions de niveau qui doivent être disponibles pour que SQL Server fonctionne correctement.

    Alors qu'un test rapide a révélé que la suppression de ces trois connexions n'empêchait que SQL Agent de redémarrer (le moteur de base de données fonctionnait correctement), je suis sûr qu'il existe d'autres fonctions qui reposent sur les deux autres connexions ... elles ont été créées par défaut pour une raison, donc je ne déconnerais pas avec eux. (Pour info si vous le testez vous-même: l'option de script Drop & Create pour une connexion dans SSMS ne script pas l'appartenance au rôle de serveur.)

  • En mode mono-utilisateur, les administrateurs locaux se voient automatiquement accorder des sysadminprivilèges de niveau, qu'il y ait ou non une connexion créée qui "contient" ces utilisateurs. Ceci est un cintre pour quand vous avez verrouillé vos clés dans la voiture.

Comme mentionné dans l'autre réponse, seules les connexions Windows créées explicitement auront accès à la connexion (mon commentaire d'origine était incorrect) - la suppression de toutes les connexions Windows créées par l'utilisateur est suffisante pour empêcher l'accès.

Si vous devez aller plus loin et empêcher la création de connexions Windows , voici un point de départ (la gestion basée sur les politiques, au moins en 2008, ne prend pas en charge la prévention de ce problème en temps réel):

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

Bien sûr, toute personne disposant de suffisamment d'autorisations pourrait vaincre cela, mais c'est un problème distinct ...


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.