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

Откуда:
Сообщений: 19
Здравствуйте

Есть MS-SQL 2008, в нем установлено несколько баз данных (база1, база2, база3), авторизация по SQL. Пользователи могут работать с базами как локально (с рабочего места) так и через VPN (дом, командировка ...). есть пользователи которые пользуются одним логином и паролем для доступа ко всем базам. Встала задача разграничить права этих пользователей. то есть если они работаю из локальной сети то должны иметь доступ только к базе "база1", если они заходят по VPN то только к "база2" и "база3".
хотел использовать CREATE TRIGGER trigger_name ON ALL SERVER и EventData(). Как мне узнать к какой базе хочет подключится пользователь?
6 мар 15, 21:55    [17355026]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4392
Создайте разные логины.
6 мар 15, 22:18    [17355070]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
3BEPb
Member

Откуда:
Сообщений: 19
создание нового пользователья не выход. должно Быт четко прописано кто имеет доступ из локально сети, кто по VPN а кто и обеими методами подключения.
6 мар 15, 22:22    [17355082]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
3BEPb
создание нового пользователья не выход. должно Быт четко прописано кто имеет доступ из локально сети, кто по VPN а кто и обеими методами подключения.
Вы путаете sql-сервер с фаерволлом.
6 мар 15, 22:29    [17355104]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
3BEPb
Member

Откуда:
Сообщений: 19
Гавриленко Сергей Алексеевич, если есть возможность разрешать пользователю подключатся к серверу по определённому IP или логину при помощи (Logon Trigger). То может есть и способ узнать к какой базе он хочет подключится.
6 мар 15, 22:34    [17355120]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
3BEPb
Гавриленко Сергей Алексеевич, если есть возможность разрешать пользователю подключатся к серверу по определённому IP или логину при помощи (Logon Trigger). То может есть и способ узнать к какой базе он хочет подключится.
Вы какое слово в моем ответе не поняли? MS SQД пофиг на ip-адреса, потому что он не фаейрволл. А раз ему пофиг, то и возможности разрешить, запретить или даже проследить нет.
6 мар 15, 22:39    [17355138]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
3BEPb
То может есть и способ узнать к какой базе он хочет подключится.
1. Подключаются к серверу, а не к базе.
2. Что будет делать в такм случае: use DB1; select * from DB2..Table1, DB3..Table2 ?
3. Административный бардак программным способом исправить нельзя.
6 мар 15, 22:42    [17355153]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
3BEPb
Member

Откуда:
Сообщений: 19
Да вы уверены?
if exists(select 1 from sys.server_triggers where name = 'tr1') drop trigger tr1 on all server
go
create trigger tr1 on all server for logon as
begin
declare @x xml = EventData()
declare @address nvarchar(25) = @x.value('(EVENT_INSTANCE/ClientHost)[1]', 'nvarchar(25)')
if @address <> '192.168.0.1' rollback
else commit
end
go

вот если зайти с ИП 192.168.0.1 то конек к серверу не пройдет.
6 мар 15, 22:47    [17355170]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
3BEPb
Да вы уверены?

А если зайти по протоколу Shared Memory или Named Pipes?
автор
вот если зайти с ИП 192.168.0.1 то конек к серверу не пройдет.
Т.е у вас условие в триггере "если адрес не равен '192.168.0.1', то не пускать", но с 192.168.0.1 все равно не пускает? Какая неожиданность.

Сообщение было отредактировано: 6 мар 15, 22:52
6 мар 15, 22:51    [17355183]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
3BEPb
Member

Откуда:
Сообщений: 19
Гавриленко Сергей Алексеевич,
ну поставьте там =, я для примера привел.
6 мар 15, 22:55    [17355198]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
3BEPb
Гавриленко Сергей Алексеевич,
ну поставьте там =, я для примера привел.
Может еще "+" поставить?
6 мар 15, 22:59    [17355215]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
3BEPb
Member

Откуда:
Сообщений: 19
invm,
подключение к серверу я могу отследить а вот к какой базе он далее подключается не знаю как определить. для sql 2012 sys.dm_exec_sessions возвращает database_id а для 2008 нет.
6 мар 15, 23:01    [17355227]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
3BEPb
invm,
подключение к серверу я могу отследить а вот к какой базе он далее подключается не знаю как определить. для sql 2012 sys.dm_exec_sessions возвращает database_id а для 2008 нет.
Ну, пребывайте в заблуждении, что можете.
6 мар 15, 23:05    [17355247]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
3BEPb,

+ ...

http://files6.adme.ru/files/news/part_42/426655/4998255-R3L8T8D-400-45.jpg
6 мар 15, 23:49    [17355394]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31781
3BEPb
подключение к серверу я могу отследить а вот к какой базе он далее подключается не знаю как определить. для sql 2012 sys.dm_exec_sessions возвращает database_id а для 2008 нет.
У вас вопрос был "как запретит доступ к определенной базе".
Клиент может подключиться к одной базе, а работать с другой.
Или может сменить текущую базу в любой момент.
Так что sys.dm_exec_sessions.database_id - это не для защиты.
7 мар 15, 00:39    [17355532]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Разнесите базы по разным серверам и настройте фаервол.
7 мар 15, 02:01    [17355607]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
paskudnik
Member

Откуда: Чесслово, нашел, гражданин начальник!
Сообщений: 2
Mind
Разнесите базы по разным серверам и настройте фаервол.


Вот плюс, любая задача лучше всего решается специализированными средствами. Но в инфраструктуре автора это может быть проблемно реализовать.
7 мар 15, 13:40    [17356142]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
paskudnik
Member

Откуда: Чесслово, нашел, гражданин начальник!
Сообщений: 2
3BEPb, Вы не могли бы рассказать подробнее, что вообще работает и зачем Вам это надо? Возможно, имея более подробное представление о задачах и инфраструктуре, можно будет предложить более удобное решение, чем деление серверов или триггерный костылинг.
7 мар 15, 13:42    [17356147]     Ответить | Цитировать Сообщить модератору
 Re: как запретит доступ к определенной базе  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8317
Можно попробовать настроить доменную авторизацию для VPN. в этом случае VPN можно отнести к другому домену, создать альтернативный набор пользователей и дать им требуемые права к базам. Пользователь же будет авторизоваться доверительным соединением, т.е. с той учеткой, с которой работает в Windows. Имя и пароль в разных доменах можно создать одинаковые.
7 мар 15, 17:07    [17356513]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить