Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

È possibile negare l'accesso a SQL Server da programmi specifici?

NON possibili e tutte le affermazioni contrarie sono olio di serpente.

Sebbene sia vero che puoi controllare il nome dell'applicazione e creare trigger di accesso che negano gli accessi in base a questa proprietà, il nome dell'applicazione non è una proprietà sicura e può essere facilmente falsificato da chiunque. Fai affidamento su di esso per la sicurezza (es. accesso negato) è #fallito.

Quindi, se abbassi la barra e rimuovi i termini come "negare l'accesso" dalla tua domanda, è possibile fornire un Trigger di accesso che controlla il program_name della sessione 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;

Il nome_programma è impostato da alcune applicazioni, non so se la suite Office imposta questa proprietà su qualcosa di utile o la lascia predefinita. E devi capire che questo può essere aggirato da chiunque semplicemente modificando ApplicationName proprietà nella stringa di connessione.