web-dev-qa-db-fra.com

Sécurité supplémentaire de la connexion sécurisée SQL Server

En utilisant l'authentification Windows, existe-t-il un moyen d'interdire aux utilisateurs de se connecter via ODBC à la base de données?

4
Xilmiki

La fonctionnalité conçue pour vous aider dans ce scénario est Rôles d'application . Avec un rôle d'application, vous pouvez autoriser l'utilisateur à se connecter à la base de données cible, mais ne pas pouvoir exécuter de requêtes tant que l'application n'a pas fourni de secret pour activer le rôle d'application.

Une solution possible consiste à créer un déclencheur de connexion au serveur qui vérifierait la app_name(). J'ai créé le déclencheur de serveur suivant sur mon instance locale et j'ai essayé de me connecter via ODBC. La connexion a été rejetée. Vous devrez modifier selon vos besoins.

CREATE TRIGGER trgGetAppName ON ALL SERVER
FOR LOGON AS

IF APP_NAME() NOT LIKE ('Microsoft SQL Server Management Studio%')
    AND APP_NAME() NOT LIKE ('.Net SqlClient Data Provider%')
BEGIN
    ROLLBACK
END

n mot d'avertissement sur les déclencheurs de connexion:

Un déclencheur de connexion peut empêcher efficacement les connexions réussies au moteur de base de données pour tous les utilisateurs, y compris les membres du rôle serveur fixe sysadmin. Lorsqu'un déclencheur d'ouverture de session empêche les connexions, les membres du rôle serveur fixe sysadmin peuvent se connecter en utilisant la connexion administrateur dédiée ou en démarrant le moteur de base de données en mode de configuration minimale (-f)

7
Scott Hodgin