Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
dmx64
Guest
Друзья, прошу совета.
История такая:
старое ПО, успешно работало на sql2000.
Пользователи ходили в SQL в одной группе AD\DomainUsers.
Доступ на данные разруливался уже в самой БД.
В ряде процедур использовалось ломовое "alter table disable trigger", для чего всему логину DomainUser были даны права owner.
Как попытка увеличить секьюрность, стали использовать Application Role, ей дали права на все объекты в бд.
Далее переехали на 2005, где попали на недоступность для Applicatio Role вьюхи sys.sysprocesses, включили флаг SQL -T4616.
Все работало.

Теперь проблема. Необходимо переехать на 2008R2 в виде кластера.
Флаг -T4616 наверняка включать нельзя (куча другого ПО крутится на кластере), не уверен что он вообще в 2008 есть.
Отказаться от ApplicationRole как есть - пользователи как owner получат полный доступ к БД с "левого" SSMS.
Забрать у них права owner - не смогут делать халтурный alter table disable trigger.
Переписать логику процедур без disable trigger - без шансов.
Помимо этого нужно в процедуре авторизации получать Server State (те самые sysprocesses или аналог вида dm_exec)
Дать DomainUsers права только alter конкретных таблиц - сравнимо с полным доступом, криворукий/хакер сломает таблицы.

Как обойтись минимальной кровью, и рыбу съесть и не подавиться? В какую сторону смотреть?
30 окт 14, 16:23    [16778309]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
dmx64
В какую сторону смотреть?
В сторону подписывания процедур - Подписание модулей (компонент Database Engine)
30 окт 14, 16:41    [16778432]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
dmx64
Guest
invm,
читал, не совсем понял.
Выключаем Application Role, отбираем права owner у юзеров, процедуры с alter table или запросом sysprocesses подписываем сертификатом, после чего клиентское ПО без изменений вызова процедур сможет выполнять их?
30 окт 14, 17:03    [16778583]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Почему полный доступ? Зачем пользователи DBO?
Создайте столько доменных групп,, сколько групп прав у пользователей и раздайте группам права на сервере.

Пользователи будут работать совершенно "прозрачно" и получат доступ к объектам, к которым им положен доступ. Кроме того вы легко сможете комбинировать группы.
30 окт 14, 17:04    [16778593]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
dmx64
Guest
Владислав Колосов
Почему полный доступ? Зачем пользователи DBO?
Создайте столько доменных групп,, сколько групп прав у пользователей и раздайте группам права на сервере.
Пользователи будут работать совершенно "прозрачно" и получат доступ к объектам, к которым им положен доступ. Кроме того вы легко сможете комбинировать группы.

еще раз. дбо - исторически сложилось, разработчики на заморачивались и для alter table/sysprocesses дали всем дбо.
групп прав нету, у всех для запуска ПО равные права, всем нужны все объекты БД, степень доступа к данным разруливается довольно сложно внутри ПО.
нужно, не меняя принципы этой авторизации:
избавиться от ключа -T,
не открывая юзерам структуру БД, дать возможность при вызове с клиента некоторых процедур с alter table/sysprocesses внутри.
не переписывать вызов этих процедур в клиенте.

сертификаты - первое, что начал читать, но вопрос (выше) остался.
30 окт 14, 17:13    [16778655]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
dmx64
invm,
читал, не совсем понял.
Выключаем Application Role, отбираем права owner у юзеров, процедуры с alter table или запросом sysprocesses подписываем сертификатом, после чего клиентское ПО без изменений вызова процедур сможет выполнять их?
Включите вашу роль приложения в db_owner. Или процедурам с alter table поменяйте контекст выполненияна на with execute as 'dbo'. Пользователей из db_owner убрать.
Для доступа к sysprocesses делаете подписанную процедуру. Пример есть по вышеприведенной ссылке.
30 окт 14, 17:56    [16778930]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
dmx64
Guest
invm,
ну то есть все остается как есть (юзеры не owner, я плохо описал историю, owner именно ApplicationRole)
а мы лишь даем разрешение в Application Role запрашивать sessions через сертифицированные процедуры, чтобы обойти флаг -T?

если так, то я думал об этом, и так описано у MS, но
1. как сертифицированные процедуры работают на кластере, особенностей нету? типа файл сертификата обязателен в доступности всем нодам кластера и надо размещать на СХД?
2. MS от Application Role не избавилась в последующих SQL 12-14?
30 окт 14, 18:13    [16779000]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
dmx64
как сертифицированные процедуры работают на кластере, особенностей нету?
Одинаково работают.
dmx64
типа файл сертификата обязателен в доступности всем нодам кластера и надо размещать на СХД?
Файл нужен только для импорта сертификата в БД. Для работы он не нужен.
dmx64
MS от Application Role не избавилась в последующих SQL 12-14?
Нет. А зачем?
30 окт 14, 19:15    [16779232]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
dmx64
Guest
invm
Нет. А зачем?

Ок, спасибо.
Посмотрел внимательнее, sessions запрашиваются не только в процедурах, но и вьюхах.
Их подписать сертификатом и сделать execute as как понимаю не получится, надо менять на процедуры/функции табличные?
31 окт 14, 10:59    [16781540]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте. Старое ПО, 2005/2008, кластер, Application Role и много других терминов.  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
dmx64
надо менять на процедуры/функции табличные?
Да.
31 окт 14, 11:52    [16782105]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить