Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Est-il possible de refuser l'accès à SQL Server à partir de programmes spécifiques ?

Ce n'est PAS possible et toutes les prétentions contraires sont de l'huile de serpent.

S'il est vrai que vous pouvez vérifier le nom de l'application et créer des déclencheurs de connexion qui refusent les connexions en fonction de cette propriété, le nom de l'application n'est pas une propriété sécurisée et peut être facilement falsifié par n'importe qui. Dépendance pour la sécurité (c.-à-d. refus de connexion) est #fail.

Ainsi, tant que vous abaissez votre barre et supprimez les termes tels que "refuser l'accès" de votre question, il est possible de fournir un Déclencheur de connexion qui inspecte le program_name de la session dans sys.dm_exec_sessions :

CREATE TRIGGER application_limit_trigger
ON ALL SERVER WITH EXECUTE AS '...'
FOR LOGON
AS
BEGIN
IF EXISTS (SELECT *
   FROM sys.dm_exec_sessions
   WHERE session_id = @@SPID
   AND program_name IN (N'Bad Program', N'Worse Program', N'Unmentionable')
    ROLLBACK;
END;

Le nom_programme est défini par certaines applications, je ne sais pas si la suite Office définit cette propriété sur quelque chose d'utile ou la laisse par défaut. Et vous devez comprendre que cela peut être contourné par n'importe qui en changeant simplement le ApplicationName propriété dans la chaîne de connexion.