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

Откуда:
Сообщений: 96
Есть клиент – серверное приложение, работающее под MS SQL 2005 SP3 Standard Edition.
Пользователи подключаются через клиентскую часть. После подключения права пользователей определяют Application roles.
Всем пользователям сопоставлена серверная роль public.
Как запретить пользователям работать с объектами БД не через клиента, а с пом. других программ, например excel?
22 сен 09, 17:05    [7694117]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Как запретить пользователям работать с объектами БД не через клиента, а с пом. других программ, например excel?


А они могут работать с "объектами бд"? Значит Вы это разрешили? Ибо сами по себе права не раздаются.
22 сен 09, 17:08    [7694144]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
ну дак если вы раздали права через app role то зачем public?

--------------------------------------------------------------
Дьявол кроется в деталях.
22 сен 09, 17:14    [7694189]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
rebel25
Есть клиент – серверное приложение, работающее под MS SQL 2005 SP3 Standard Edition.
Пользователи подключаются через клиентскую часть. После подключения права пользователей определяют Application roles.
Всем пользователям сопоставлена серверная роль public.
Как запретить пользователям работать с объектами БД не через клиента, а с пом. других программ, например excel?
1) Никак - имя приложения определяется строкой подключения, которую можно сформировать каким угодно образом, в том числе и в excel.

2) Application role - тоже дыра та еще. При условии возможности "злоумышленником" получить доступ к коду приложения (exe ведь наверняка на машине пользователя лежит/запускается?) вопрос получения имени и пароля приложения лежит испключительно в плоскости навыков "взламывающего". Зачастую доступа к Google будет достаточно.

3) Права пользователя должны проверяться сервером (неважно, что это будет - SQL или недоступный пользователю промежуточный слой) строго на основании того, как пользователь "представился" серверу (логин/пароль, Windows Authentication и т.д.).
22 сен 09, 17:16    [7694200]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Как вариант - применение TerminalServer, настроенный так, что в сеансе сразу запускается нужная программа. Но под это нужно ставить отдельную железку. ;)
22 сен 09, 17:17    [7694214]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
Alois
Member

Откуда:
Сообщений: 354
Хотелось бы знать, что именно автор топика имеет под словом "работать".
22 сен 09, 17:19    [7694229]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
rebel25
Member

Откуда:
Сообщений: 96
Дедушка,

Снять галку с роли public нельзя (не снимается она). Вероятно тогда вообще пользователь не сможет подключаться к БД.
Вообще я создал Database Role, запретил её читать некоторые таблицы и сопоставил пользователям. Это работает. Но таблиц много и все их выбирать не хочется. С другой стороны и не получается выбрать все таблицы (с пом. схемы) т к тогда приложение перестает работать и через клиент.
22 сен 09, 17:20    [7694242]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
rebel25
Member

Откуда:
Сообщений: 96
Alois,
работать значит видеть таблицы и вьюхи и получать из них информацию.
22 сен 09, 17:22    [7694256]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
Glory
Member

Откуда:
Сообщений: 104760
rebel25
Дедушка,

Снять галку с роли public нельзя (не снимается она).

Вам предлагают не исключить пользователя из public, что невозможно, а забрать права у public. Через которые вероятно ваши пользователи и могут "работать с объектами БД не через клиента, а с пом. других программ, например excel". Хотя по-умолчанию у public вообще-то минимум прав
22 сен 09, 17:25    [7694270]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
Alois
Member

Откуда:
Сообщений: 354
В таком случае, если есть доступ к EXE-файлу приложения, то никак.
22 сен 09, 17:26    [7694283]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
rebel25
Снять галку с роли public нельзя (не снимается она).


исключить членство логинов в серверной роли public, как и членство пользователей бд в роли public в бд нельзя. Пользователи могут получить доступ к объектам бд если:

1. Вы явно роздали права роли бд public.
2. У Вас все ходят на сервер через группу локальных админов.
22 сен 09, 17:29    [7694312]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
rebel25
Member

Откуда:
Сообщений: 96
pkarklin, роли public права розданы явно почти на все объекты, коих сотни. Вероятно это нужно для работы, да и очень трудоемко снимать все эти галки.
22 сен 09, 17:43    [7694442]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
rebel25
pkarklin, роли public права розданы явно почти на все объекты, коих сотни. Вероятно это нужно для работы, да и очень трудоемко снимать все эти галки.
1) Если у public "права розданы явно почти на все объекты" то нужно либо отобрать назад, либо забыть о такой вещи, как "безопасность".

2) Написать скрипт, который отбирает все права у нужной роли - дело получаса вместе с копанием в инете и чтением соответствующей документации. (А можно и за 5 минут управиться)
22 сен 09, 17:52    [7694516]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
rebel25
pkarklin, роли public права розданы явно почти на все объекты, коих сотни. Вероятно это нужно для работы


Тогда наличие какой-то апп.роли - мертвому припарки.

rebel25
pkarklin, роли public права розданы явно почти на все объекты, коих сотни. Вероятно это нужно для работы, да и очень трудоемко снимать все эти галки.


Зато скриптом не трудоемко.
22 сен 09, 17:54    [7694534]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
rebel25
Member

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

Разработчики мне прислали рекомендацию:

"Можно создать серверную роль (например Objects_Deny) с запретом доступа (DENY) ко всем объектам БД (за исключением объектов дизайнера "x%" и "des%") и присвоить эту роль всем пользователям."

Кто нибудь знает как это сделать быстро, а не прощелкивать сотни таблиц и вьюх?
22 сен 09, 17:56    [7694545]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
rebel25
pkarklin,

Разработчики мне прислали рекомендацию:

"Можно создать серверную роль (например Objects_Deny) с запретом доступа (DENY) ко всем объектам БД (за исключением объектов дизайнера "x%" и "des%") и присвоить эту роль всем пользователям."


Поинтересуйтесь у этих горе-разработчиков, как "присвоить" роль приложения пользователю, подключающемуся из Excel, например, или sqlcmd.exe.
22 сен 09, 17:58    [7694563]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
rebel25
Member

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

Пользователь будет использовать логин и пароль, которым он подключается через клиента.
Я создаю Database Role и мне нужно занести в раздел securables много объектов и проставить галочки на права.
Это работает - пользователь просто не видит запрещенные объекты через excel.
Вопрос как быстро заполнить раздел securables.
22 сен 09, 18:07    [7694618]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
grant
--------------------------------------------------------------
Дьявол кроется в деталях.
22 сен 09, 18:10    [7694630]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
rebel25,

Какие запрещенные объекты, если Вам советуют запрещать, активируя апп. роль, которую можно и не активировать, а права у Вас розданы publicу.

Быстро что-то раздать снять можно скриптом с использованием GRANT\REVOKE.
22 сен 09, 18:12    [7694650]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
Glory
Member

Откуда:
Сообщений: 104760
rebel25
pkarklin,

Пользователь будет использовать логин и пароль, которым он подключается через клиента.
Я создаю Database Role и мне нужно занести в раздел securables много объектов и проставить галочки на права.
Это работает - пользователь просто не видит запрещенные объекты через excel.
Вопрос как быстро заполнить раздел securables.

Пользователь и так по-умолчанию "видит" то, на что имеет права. Не нужно дополнительно что-то ему запрещать
22 сен 09, 18:13    [7694651]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
rebel25
Member

Откуда:
Сообщений: 96
Спасибо за помощь, здесь есть свои заморочки и может быть я что то не так объяснил. Я сделаю как говорит разработчик, напишу grant. Это должно работать - проверено на нескольких таблицах.
22 сен 09, 18:17    [7694669]     Ответить | Цитировать Сообщить модератору
 Re: Запрет работы с БД не через клиент  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5196
rebel25
Есть клиент – серверное приложение, работающее под MS SQL 2005 SP3 Standard Edition.
Пользователи подключаются через клиентскую часть. После подключения права пользователей определяют Application roles.
Всем пользователям сопоставлена серверная роль public.
Как запретить пользователям работать с объектами БД не через клиента, а с пом. других программ, например excel?


если эта база на сервере одна (сервер СУБД выделенный), то можно написать logon trigger, который будет проверять Application Name. Коннекты, которые не удовлетворяют условию, отстреливать.

защита не абсолютная, но тем не менее...
22 сен 09, 18:31    [7694737]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить