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

Откуда: Екатеринбург
Сообщений: 158
Всем привет !
Пишу приложение на С# (Документооборот), в sql сервере существуют 3 роли: Document_Admin, Document_Write, Document_Read. В одной из хр. процедур которыми пользуются эти роли есть системные таблицы:

SELECT 
	u.name as Табельный	 
	,@Выбор as Выбор
	  --,r.name as [Роль] -- Роль пользователя
	, c.Фамилия + ' ' + Left(c.Имя,1) + '. ' +  Left(c.Отчество,1) + '.' as ФИО 
	, c.Должность
	, p.Отдел
	, p.Обозначение
	From 
	sys.database_principals u left join
	(sys.database_role_members m join sys.database_principals r on m.role_principal_id = r.principal_id) on m.member_principal_id = u.principal_id
	left join Сотрудники c on u.name = c.ТабНомер 
	left join Подразделения p on c.IDПодразделения = p.IDПодразделения
	where r.name like 'Document_%'


А на сколько я понял системные таблицы может использовать пользователь у которого есть роль: sysadmin. Естественно всем на лево на право раздавать её дело глупое, так же как и создавать еще одну таблицу в БД где будут дублироватся роли. Вопрос в то как можно получить список ролей пользователя и при этом не быть sysadin'om. В каком направлении мне думать дальше?
20 фев 12, 15:25    [12123480]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
Денис Б.
Member

Откуда: Екатеринбург
Сообщений: 158
Извеняюсь: "Вопрос по ролям БД"
20 фев 12, 15:41    [12123655]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
Денис Б.
Member

Откуда: Екатеринбург
Сообщений: 158
Решение:

Use [Название БД]
GRANT VIEW DEFINITION TO Document_Write;
GRANT VIEW DEFINITION TO Document_Read;


Учитывая что у ролей Document_Write и Document_Read есть право на выполнение этой хр. процедуры
20 фев 12, 18:01    [12125543]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
Glory
Member

Откуда:
Сообщений: 104751
Денис Б.
А на сколько я понял системные таблицы может использовать пользователь у которого есть роль: sysadmin.

А еще db_owner/db_securityadmin
20 фев 12, 18:14    [12125638]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
Денис Б.
Member

Откуда: Екатеринбург
Сообщений: 158
Суть в том что db_owner имеет все права БД что по определению безопасности не подходит, а securytyadmin может управлять логинами и пользователями что тоже не подходит.
20 фев 12, 20:21    [12126214]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
Glory
Member

Откуда:
Сообщений: 104751
Денис Б.
Суть в том что db_owner имеет все права БД что по определению безопасности не подходит, а securytyadmin может управлять логинами и пользователями что тоже не подходит.

А зачем тогда посторонним нужна информация о чужих правах ?
20 фев 12, 21:40    [12126464]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
denisofff
Member

Откуда: Владивосток
Сообщений: 62
Денис Б., Мы для решения подобных задач используем в процедурах конструкцию WITH EXECUTE AS OWNER. Внутри код выполняется с правами OWNER'а и, соответственно, имеет доступ к системным таблицам.
21 фев 12, 01:50    [12127076]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
Денис Б.
Member

Откуда: Екатеринбург
Сообщений: 158
Glory
Денис Б.
Суть в том что db_owner имеет все права БД что по определению безопасности не подходит, а securytyadmin может управлять логинами и пользователями что тоже не подходит.

А зачем тогда посторонним нужна информация о чужих правах ?


При создании документа после заполнения реквизитов, привязки, выбора файлов нужно указать права на просмотр этого документа и редактирование. Права на просмотр: Только я, Все и индивидуально, аналогично с правами на редактирование. Только если выбор падает на индивидуально нужно выбрать в случае прав для просмотра всех пользователь кто имеет роль Document_Write и Document_Read, а в случае редактирования тех кто имеет роль Document_Write.
21 фев 12, 06:27    [12127217]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
Денис Б.
Member

Откуда: Екатеринбург
Сообщений: 158
Glory,

К сообщению приложен файл. Размер - 74Kb
21 фев 12, 06:31    [12127220]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ролям сервера  [new]
Денис Б.
Member

Откуда: Екатеринбург
Сообщений: 158
denisofff,

Спасибо, помогло.
21 фев 12, 09:12    [12127443]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить