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

Er det muligt at nægte adgang til SQL Server fra specifikke programmer?

Det er IKKE muligt, og alle påstande om det modsatte er slangeolie.

Selvom det er rigtigt, at du kan kontrollere applikationsnavnet og oprette login-triggere, der nægter logins baseret på denne egenskab, er applikationsnavnet ikke en sikker ejendom og kan let forfalskes af enhver. Stol på det for sikkerhed (dvs. login-nægtelse) er #fail.

Så så længe du sænker baren og fjerner termer som 'nægt adgang' fra dit spørgsmål, er det muligt at give en Logonudløser der inspicerer sessionens program_name i 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;

Programnavnet er indstillet af nogle programmer, jeg ved ikke, om Office-pakken sætter denne egenskab til noget nyttigt eller lader den være standard. Og du skal forstå, at dette kan omgås af alle ved blot at ændre ApplicationName egenskab i forbindelsesstrengen.



  1. Angiv standardværdien i kolonnen IF betingelse er opfyldt i SQL 2008

  2. Få kolonneværdilængde, ikke kolonne maks. længde af værdi

  3. TILSYNLIGT DEADLOCK Oprettelse af nødtråde til ikke-tildelte afventende opgaver

  4. SQLAlchemy og Postgres UnicodeDecodeError