Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Възможно ли е да се откаже достъп до SQL Server от конкретни програми?

ТоНЕе възможно и всички твърдения за обратното са змийска мас.

Въпреки че е вярно, че можете да проверите името на приложението и да създадете тригери за влизане, които отказват влизания въз основа на това свойство, името на приложението не е защитено свойство и може лесно да бъде подправено от всеки. Разчитане на него за сигурност (т.е. отказ за влизане) е #fail.

Така че, стига да намалите летвата си и да премахнете термини като „отказване на достъп“ от вашия въпрос, е възможно да предоставите Задействане на влизане който проверява program_name на сесията в 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;

Program_name се задава от някои приложения, не знам дали пакетът Office задава това свойство на нещо полезно или го оставя по подразбиране. И трябва да разберете, че това може да бъде заобиколено от всеки като просто промените Име на приложение свойство в низа за връзка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:ISNULL функция с различен тип параметри

  2. Защо да изберете клауза Top може да доведе до дългосрочни разходи

  3. Вмъкване в променлива CTE на таблицата

  4. Как мога да видя всички разрешени специални знаци в полето varchar или char в SQL Server?

  5. MSSQL Грешка „Основният доставчик се провали при отваряне“