sql >> Base de Datos >  >> RDS >> Sqlserver

¿Es posible denegar el acceso a SQL Server desde programas específicos?

Es NO posible y todas las afirmaciones en contrario son aceite de serpiente.

Si bien es cierto que puede verificar el nombre de la aplicación y crear activadores de inicio de sesión que nieguen los inicios de sesión en función de esta propiedad, el nombre de la aplicación no es una propiedad segura y cualquiera puede falsificarlo fácilmente. Confíe en él para seguridad (es decir, denegación de inicio de sesión) es #fail.

Entonces, siempre que baje la barra y elimine términos como 'denegar acceso' de su pregunta, es posible proporcionar un Activador de inicio de sesión que inspecciona el program_name de la sesión en 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;

Algunas aplicaciones establecen program_name, no sé si el paquete de Office establece esta propiedad en algo útil o la deja predeterminada. Y tienes que entender que esto puede ser eludido por cualquiera simplemente cambiando el Nombre de la aplicación propiedad en la cadena de conexión.