Глобальный DLL Triger - PullRequest
       4

Глобальный DLL Triger

0 голосов
/ 15 октября 2019

Мне нужно заблокировать доступ к серверу SQL только для некоторых приложений. Наша CRM установила для всех пользователей схему db_owner.

Я нашел этот триггер, как блокировка доступа для одного приложения. Но мне нужно добавить еще один.

Можете ли вы помочь мне?

USE [master]
GO

CREATE TABLE master..PokusOLogin3
(
ID INT IDENTITY PRIMARY KEY
, Datum datetime DEFAULT GETDATE()
, LoginName SYSNAME
, Program SYSNAME
, Pocitac SYSNAME
)
GO

CREATE TRIGGER [OnlyAppka]
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN

DECLARE @LoginName SYSNAME
DECLARE @Pocitac SYSNAME

DECLARE @data XML
SET @data = EVENTDATA()

DECLARE @AppName SYSNAME
SELECT @AppName = program_name, @Pocitac = host_name FROM sys.dm_exec_sessions WHERE session_id = @data.value('(/EVENT_INSTANCE/SPID)[1]', 'int')

IF @AppName NOT LIKE 'Appka%'
       --Pokud spousteny program neni Appka
       SET @LoginName = @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'SYSNAME')

       IF @LoginName NOT IN (SELECT p.name FROM sys.server_principals p JOIN sys.syslogins s ON p.sid = s.sid WHERE s.sysadmin = 1
                                                            UNION ALL SELECT service_account FROM sys.dm_server_services)
       --A pokud program nespousti administrator sql serveru, nebo sluzba sql serveru
             BEGIN
             ROLLBACK
             --Ukonci session (pokus o prihlaseni)
             INSERT INTO master..PokusOLogin (LoginName, Program, Pocitac)
             SELECT @LoginName --@LoginName
                    , @AppName, @Pocitac
             --A tento pokus zaloguj do tabulky
             END

END

1 Ответ

0 голосов
/ 15 октября 2019

ЕСЛИ @AppName НЕ НРАВИТСЯ 'Appka%' ИЛИ ​​@AppName НЕ НРАВИТСЯ 'Appka1%'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...