Страницы

Поиск по вопросам

четверг, 21 февраля 2019 г.

Права пользователя вне роли

Вопрос насчет permissions пользователя экземпляра sql сервера:
Например есть у нас пользователь Vasiok, за ним закреплена роль sysadmin. Возможно ли ему закрепить permission вне зависимости от роли?? То-есть, я хочу чтобы он себе и далее был только sysadmin-ом, но кроме того у него еще был дополнительный permission.
Если обобщить: могут ли существовать permissions отдельно от roles?


Ответ

могут ли существовать permissions отдельно от roles?
Да, могут. И существуют.
В SqlServer есть иерархия разрешений. Разрешения сами по себе не зависят от ролей. Напротив - роль содержит некоторый набор разрешений (и/или запрещений). Есть встроенные роли, - такие как, например, sysadmin, - набор разрешений для них фиксирован и не может изменяться (т.н. fixed roles). Начиная с SqlServer 2012 можно создавать собственные роли уровня сервера, собирая в них необходимые наборы разрешений.
Логин может быть в какой-то одной роли, может быть в нескольких ролях одновременно, может не быть ни в одной роли(*), и также может иметь разрешения, установленные напрямую, а не через членство в ролях.
Допустим есть логин
USE [master] GO CREATE LOGIN [LoginName] WITH PASSWORD = N'L2RG9mZi6EZm' GO
Можно сделать его членом роли сервера sysadmin
ALTER SERVER ROLE [sysadmin] ADD MEMBER [LoginName] GO
но можно дать широкие права и явно
GRANT CONTROL SERVER TO [LoginName] GO
Членство в роли sysadmin и право CONTROL SERVER эквивалентны(**)

(*): строго говоря, любой логин всегда является членом специальной роли public, и отменить это нельзя. (**): на самом деле - почти (из-за некоторых legacy вещей).

Комментариев нет:

Отправить комментарий