Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

É possível negar o acesso ao SQL Server de programas específicos?


É NÃO possível e todas as alegações em contrário são óleo de cobra.

Embora seja verdade que você pode verificar o nome do aplicativo e criar acionadores de login que negam logins com base nessa propriedade, o nome do aplicativo não é uma propriedade segura e pode ser facilmente falsificado por qualquer pessoa. Confiança nele para segurança (ou seja, negação de login) é #fail.

Portanto, desde que você diminua sua barra e remova termos como 'negar acesso' de sua pergunta, é possível fornecer um Acionador de logon que inspeciona o program_name da sessão em 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;

O program_name é definido por alguns aplicativos, não sei se o pacote Office define essa propriedade para algo útil ou deixa o padrão. E você precisa entender que isso pode ser contornado por qualquer um simplesmente alterando o ApplicationName propriedade na cadeia de conexão.