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

Откуда:
Сообщений: 92
Вопрос больше по администрированию серверов, нежели по разработке (сам разработчик).
Имею:
сервер - 1 штука
базы данных - 15 штук
разработчики баз данных - 10 штук
тестеры ПО - 3 штуки

Все базы размещены на одном сервере, для каждого разработчика БД и тестеров созданы свои логины. Теперь проблема разграничения прав доступа между тестерами и разработчиками.
С разработчиками все понятно - назначаю им участие в роли баз данных db_owner для тех баз данных, которые они разрабатывают (то есть они могу делать со своей базой что захотят), для других баз db_read/write/deny и т.д. (в зависимости от того, что нужно). Вообщем здесь удается обойтись только встроенными ролями БАЗ ДАННЫХ.
Но вот, блин тестеры. Им надо разрешить доступ только EXECUTE, то есть только выполнение хранимок базы. Встроенной роли такой нету. Надо в каждой базе делать такую роль. Можно ли как-то сделать роль и распространить ее на все базы? Или даже лучше, чтобы для всех баз это была одна роль, чтобы можно было в одном месте поменять, если что, и это применилось бы ко всем базам.
30 окт 09, 16:30    [7863678]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
Glory
Member

Откуда:
Сообщений: 104760
Нужны две базы
- для разработчиков
- для тестеров
Каждые в своей базе будут иметь нужные права
А изменения объектов от разработчиков тестерам будут передаваться скриптами
30 окт 09, 16:34    [7863713]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
DeepJ
Member

Откуда:
Сообщений: 92
Этот вариант по ряду причин неудобен.
Вопрос в том, как проще всего у 15 баз сделать одинаковую роль базы данных и не заморачиваться?

Даже если базы будут разделены на 2 части - ситуации это не меняет. Тестер должен выполнять только хранимки (знаю я этих тестеров). А это опять 15 раз создать одну и туже роль в базе.
30 окт 09, 16:41    [7863764]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
Glory
Member

Откуда:
Сообщений: 104760
DeepJ
Этот вариант по ряду причин неудобен.

Неудобно будет потом, когда после тестирования разработчик поменяет что-нибудь и не сообщит об этом. И непротестированный код покатится в продакшен
30 окт 09, 16:44    [7863798]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
DeepJ
Member

Откуда:
Сообщений: 92
И поэтому в том числе.
30 окт 09, 16:47    [7863824]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
DeepJ
Вопрос в том, как проще всего у 15 баз сделать одинаковую роль базы данных и не заморачиваться?

если конкретно по вопросу то
create role
30 окт 09, 16:51    [7863866]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
DeepJ
Member

Откуда:
Сообщений: 92
А полностью не поможете составить запрос для создания роли TestUser с правами только на EXECUTE? ;-)
30 окт 09, 16:54    [7863896]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
Glory
Member

Откуда:
Сообщений: 104760
GRANT EXECUTE ON SCHEMA::[dbo] TO [A]
30 окт 09, 17:26    [7864176]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
DeepJ
Member

Откуда:
Сообщений: 92
Ок. Еще вопрос.

Допустим есть 2 базы в одной схеме (база А и база Б). Надо пользователю П1 в базе А запретить выполнение любых запросов, кроме хранимок EXECUTE, а в базе Б разрешить все в соответствии со встроенной ролью баз данных.
Интересуют 2 варианта - ручками написать запрос, и сделать тоже самое через SSMS
12 ноя 09, 15:07    [7921075]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
Glory
Member

Откуда:
Сообщений: 104760
DeepJ
Ок. Еще вопрос.

Допустим есть 2 базы в одной схеме (база А и база Б). Надо пользователю П1 в базе А запретить выполнение любых запросов, кроме хранимок EXECUTE, а в базе Б разрешить все в соответствии со встроенной ролью баз данных.
Интересуют 2 варианта - ручками написать запрос, и сделать тоже самое через SSMS

1. Не базы в схемах, а схемы в базах

2. Вы с неправильной строны заходите
По-умолчанию, у пользователя вообще то нет никаких прав. Тем более на выполнение любых запросов
И все что ему нужно разрешить, ему разрешают

3. В SSMS все, что вы делаете руками в диалогах, можнот получить в виде TSQL скрипта. Если нажать кнокпу Script action as
12 ноя 09, 15:15    [7921148]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
DeepJ
Member

Откуда:
Сообщений: 92
Glory

По-умолчанию, у пользователя вообще то нет никаких прав. Тем более на выполнение любых запросов
И все что ему нужно разрешить, ему разрешают


Точно, что я так зациклился ))))
12 ноя 09, 15:36    [7921370]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
DeepJ
Member

Откуда:
Сообщений: 92
GRANT EXECUTE ON SCHEMA::[dbo] TO [A]

Только не понятно, где в этом запросе указывать базу, в состав которой входит схема, к которой открывается разрешение.
12 ноя 09, 15:38    [7921385]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
Glory
Member

Откуда:
Сообщений: 104760
DeepJ
GRANT EXECUTE ON SCHEMA::[dbo] TO [A]

Только не понятно, где в этом запросе указывать базу, в состав которой входит схема, к которой открывается разрешение.

Просто выполнять эту команду в контексте нужной базы
12 ноя 09, 15:39    [7921396]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
DeepJ
Member

Откуда:
Сообщений: 92
Потом сообразил.

Блин, не могу нигде найти на что можно дать GRANT EXECUTE ON !!!SCHEMA!!!

И это разрешение на выполнение любых EXECUTE, которые в схеме? То есть хранимки и функции так?
13 ноя 09, 12:17    [7925100]     Ответить | Цитировать Сообщить модератору
 Re: Разграничение прав доступа на сервер  [new]
DeepJ
Member

Откуда:
Сообщений: 92
Появилась новая интересная фишка.
Если делать GRANT EXECUTE ON SCHEMA::[dbo] TO [A], то юзеру А становятся доступны все системные хранимки. (
13 ноя 09, 14:14    [7926143]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить