Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отличить сетевой (удалённый) вход от локального  [new]
CAPyMAH
Member

Откуда:
Сообщений: 11
Всем привет !

Прошу поделиться соображениями, замечаниями.

Дано:
OC: Windows 2008
СУБД: SQL Server 2008 R2 Express

Логины:
sa, vasya, petya, user1, user2, user3 , ....., userN

Условия:
1. Применяется только SQL-аутентификация.
2. Процедура xp_cmdShell - отключена.
3. Соединяться с сервером БД можно только по TCP/IP.

Задача: Сделать так, чтобы логины vasya и petya не могли подключаться к серверу БД удаленно по сети , а могли подключаться только с того же компьютера, на котором и установлен сервер БД.
Остальные логины должны иметь возможность подключаться к серверу БД как удаленно по сети, так и локально (т.е. с того же компьютера, на котором и установлен сервер БД).

Навесил на сервак такой вот LOGON TRIGGER :

CREATE TRIGGER TRIGGER_Server_Logon_1
ON ALL SERVER
FOR LOGON
AS
BEGIN

DECLARE @s_Login VarChar(128), @s_Client VarChar(128), @s_Server VarChar(128)

SELECT
@s_Login = P.loginame,
@s_Client = C.client_Net_Address,
@s_Server = C.local_Net_Address
FROM
sys.SysProcesses P
INNER JOIN
sys.dm_Exec_Connections C
ON P.spid = C.session_id
WHERE P.spid = @@SPID

IF @s_Login = 'sa'
RETURN

IF @s_Login in ('vasya','petya') AND @s_Client != @s_Server
BEGIN
RAISERROR('Hey you ! Remote connection is not permitted for your account !', 10, 1) ;
ROLLBACK ;
END

END

Вроде бы работает, но почему-то думаю, что в этом решении есть какой-то подвох.
Кто и что думает по поводу этого триггера ?

Вообще, задача стоит более широко:
Разработать на стороне сервера механизм, позволяющий программно
отличать удаленный вход от локального входа.

Перерыл кучу топиков на форуме - конкретно по этой теме ничего не нарыл.
(Осталось только ощущение ненадёжности определения SQL сервером
сетевых имен клиентских компов, а также их IP и MAC-адресов).
Может есть уже готовые и опробованные решения ?
17 май 11, 14:48    [10664952]     Ответить | Цитировать Сообщить модератору
 Re: Отличить сетевой (удалённый) вход от локального  [new]
Crimean
Member

Откуда:
Сообщений: 13147
разрешить шаред мемори
контролировать именно протокол
локально - по шаред мемори
удаленно - по тцп
17 май 11, 14:50    [10664965]     Ответить | Цитировать Сообщить модератору
 Re: Отличить сетевой (удалённый) вход от локального  [new]
CAPyMAH
Member

Откуда:
Сообщений: 11
Crimean,

я понял.

Cпасибо за интересную мысль.
17 май 11, 16:09    [10665783]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить