Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ist es möglich, bestimmten Programmen den Zugriff auf SQL Server zu verweigern?

Es ist NICHT möglich und alle gegenteiligen Behauptungen sind Schlangenöl.

Es stimmt zwar, dass Sie den Anwendungsnamen überprüfen und Anmeldeauslöser erstellen können, die Anmeldungen basierend auf dieser Eigenschaft verweigern, der Anwendungsname ist jedoch keine sichere Eigenschaft und kann von jedem leicht gefälscht werden. Verlassen Sie sich aus Gründen der Sicherheit darauf (d. h. Anmeldeverweigerung) ist #fail.

Solange Sie also Ihre Messlatte senken und Begriffe wie „Zugriff verweigern“ aus Ihrer Frage entfernen, ist es möglich, einen Anmeldeauslöser das den program_name der Sitzung untersucht in 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;

Der Programmname wird von einigen Anwendungen festgelegt, ich weiß nicht, ob die Office-Suite diese Eigenschaft auf etwas Nützliches setzt oder sie als Standard belässt. Und Sie müssen verstehen, dass dies von jedermann umgangen werden kann indem Sie einfach den ApplicationName ändern -Eigenschaft in der Verbindungszeichenfolge.