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

Откуда:
Сообщений: 145
В базе все юзеры работают через роль Public.
Нужно одному юзеру, тоже имеющему роль Public запретить доступ ко всем объектам в базе, кроме одной view с правами select и апдейт одного поля.
Как можно это сделать в T-SQL? Нужно ли давать еще доступ к таблицам на которых построена view, чтобы этот юзер мог делать select и update одного поля в этой view?
Спасибо.
2 авг 04, 14:58    [852742]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
pavelch
Member

Откуда: г. Иваново
Сообщений: 272
Дайте ему роли db_denydatareader, db_denydatawriter, установите разрешения на таблицу и представление, а также соотв. колонку.
2 авг 04, 15:04    [852786]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
vdv
Member

Откуда:
Сообщений: 145
2 pavelch
сделал, но как нужно это не работает, т.е. доступа нет ко всему, и к нужной табличке в том числе, пишет что
SELECT permission denied on object 'table'
2 авг 04, 15:15    [852843]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
pavelch
Member

Откуда: г. Иваново
Сообщений: 272
А разрешения вручную установили на табличку?
2 авг 04, 15:20    [852858]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
pavelch
Member

Откуда: г. Иваново
Сообщений: 272
Так, что то меня не в ту сторону понесло, приношу извинения, не давайте ему первых двух ролей, просто в пермишнс галочки поставьте на то, что хотите ему дать и все.
2 авг 04, 15:28    [852892]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
vdv
Member

Откуда:
Сообщений: 145
2 pavelch
сделал, но как нужно это не работает, т.е. доступа нет ко всему, и к нужной табличке в том числе, пишет что
SELECT permission denied on object 'table'
2 авг 04, 15:31    [852902]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
Stupindo
Member

Откуда:
Сообщений: 143
Для того, чтобы юзверю таскать данные из представления СОВСЕ НЕ НАДО давать ему права доступа к самим таблицам, откуда брёт данные это представление. Это один из основополагающих принципов распределения доступа.
Просто надо дать право пользователю на выборку из представления.
Все остальные права запретить присвоением вышеуказанных ролей либо вручную (но вручную - это дохлый стиль).
2 авг 04, 15:33    [852907]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
Glory
Member

Откуда:
Сообщений: 104760
пишет что
SELECT permission denied on object 'table'

Пишет кто ? Где ? В ответ на какой запрос ?

сделал, но как нужно это не работает
Что именно и где сделал ?
2 авг 04, 15:34    [852914]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
vdv
Member

Откуда:
Сообщений: 145
2 pavelch: убрал db_denydatareader, db_denydatawriter теперь доступ есть ко всему, а нужно только к одной табл.

2 Glory: действия которые я сделал:
есть база db1, создаю логин usr1 (SQL server authen), даю ему роли db_denydatareader, db_denydatawriter (public по умолчанию уже есть), дальше в EM для табл table1 захожу в permissions и для usr1 ставлю галки для всего (select, update и т.д)
Потом захожу в QA с пользователем usr1 делаю select * from table1, QA пишет:
SELECT permission denied on object 'table1'
2 авг 04, 15:44    [852950]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
pavelch
Member

Откуда: г. Иваново
Сообщений: 272
В членом каких ролей является ваш пользователь кроме Public ?
Оставьте для него только public. Таким образом он сможет подсоединиться к серверу. Потом зайдите в раздел Permissions и дайте разрешения для представления. Должно получиться.
2 авг 04, 15:49    [852991]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
Glory
Member

Откуда:
Сообщений: 104760
В MSSQL запреты имеют больший проиритет чем разрешения. Поэтому включение пользователя в роль db_denydatareader влияет на общие права пользователя так, что запрещает ему доступ на чтение из всех таблиц, представлений и тд. Даже если этому пользователю даны разрешения на пользования конктретной таблице, представлением и тп
2 авг 04, 15:53    [853003]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
vdv
Member

Откуда:
Сообщений: 145
пользователь входит только в роль Public. Дело в том, что для всех объектов в базе есть права на все действия для роли Public по умолчанию. Как сделать права перекрывающие права роли public (T-SQL скрипт c deny по sysobjects).
2 авг 04, 15:57    [853020]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
pavelch
Member

Откуда: г. Иваново
Сообщений: 272
2Glory.
Как я понимаю это камень в мой огород :-), понял что лажанулся два раза, коюсь, по поводу этого и прав на представление и таблиц, на котором оно построено, хотя раньше реально думал что MS SQL ведет себя подобным образом только касательно сохраненок. Как грится век живи век учись.
2 авг 04, 15:58    [853024]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
Glory
Member

Откуда:
Сообщений: 104760
Как я понимаю это камень в мой огород :-),
Нет. Просто вы успели добавить свой ответ раньше моего. А я забыл указать что ответ даю для vdv
2 авг 04, 16:04    [853043]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
vdv
пользователь входит только в роль Public. Дело в том, что для всех объектов в базе есть права на все действия для роли Public по умолчанию. Как сделать права перекрывающие права роли public (T-SQL скрипт c deny по sysobjects).


Сделайте отдельную роль, куда включите этого пользователя и этой роли сделайте DENY на необходимые выражения и объекты.
2 авг 04, 16:07    [853064]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
vdv
Member

Откуда:
Сообщений: 145
Может есть скрипт, который автомат. проставит DENY для всех объектов для опред юзера или роли. (не вручную же через EM ставить :)
2 авг 04, 16:50    [853123]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
BOL:

DENY { ALL | statement [ ,...n ] }
TO security_account [ ,...n ]

Arguments
ALL
Specifies that all applicable permissions are denied. For statement permissions, ALL can be used only by members of the sysadmin role. For object permissions, ALL can be used by members of the sysadmin and db_owner roles, and database object owners.
2 авг 04, 17:53    [853341]     Ответить | Цитировать Сообщить модератору
 Re: permissions в базе  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Попробовал сам, вывод пока таков: нужен курсор с перебором таблиц и динамическим запросом
2 авг 04, 17:59    [853353]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить