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

Откуда:
Сообщений: 141
Привет!

Ребята, на текущий момент если у пользователя полные админские права в AD, то при подключении с данной доменной учёткой к CУБД, пользователь также получает полные права.

Можно ли как-то разграничить права, чтобы если данный пользователь стучится к MSSQL, то будут использоваться только те права доступа, которые розданы в самой СУБД? Например, дать пользователю только роль public.

Заранее спасибо!
27 ноя 13, 10:37    [15196680]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Genniy
Можно ли как-то разграничить права, чтобы если данный пользователь стучится к MSSQL, то будут использоваться только те права доступа, которые розданы в самой СУБД?

Эти права и используются. MSSQL нет дела до того, какие права у учетной записи вовне
27 ноя 13, 10:40    [15196708]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Genniy
Member

Откуда:
Сообщений: 141
Спасибо за ответ.

Странно. Пользователь в MSSQL входит в группу только public, но при этом он может делать всё, что угодно с базой не взирая на ограничения. Грешим на то что пользователь админ в AD. Т.к. под именными учётками с ролью public MSSQL работает стабильно. Также права правильно разграничиваются если пользователь в AD с простыми пользовательскими правами.
27 ноя 13, 10:45    [15196737]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Genniy
Пользователь в MSSQL входит в группу только public, но при этом он может делать всё, что угодно с базой не взирая на ограничения.

Права не появляются из ниоткуда

Genniy
Грешим на то что пользователь админ в AD.

А еще наверное он ввходит в группу администраторов домена или локальных админов машины, на которой установлен сервер ? И этой группе наверное даны все права на MSSQL ?
27 ноя 13, 10:47    [15196756]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Genniy
Member

Откуда:
Сообщений: 141
Genniy
Грешим на то что пользователь админ в AD.

А еще наверное он ввходит в группу администраторов домена или локальных админов машины, на которой установлен сервер ? [/quot]

Именно так и есть.

Может есть смысл покопаться с олицетворением? Чтобы при попытке войти в MSSQL под текущей учёткой СУБД запускала его под совершенной другой. Но сомневаюсь, что это получиться если изначально у него присутствуют полные права.

Или может есть какие-то другие варианты? Не хочется создавать для него просто отдельную именную учетку в СУБД.

Идеальный вариант, которые нужен, это чтобы пользователь сам по себе был админом доменов, но при этом в базу ходил под "этой" же учёткой, но с ограниченными правами.
27 ноя 13, 11:35    [15197106]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Genniy
Может есть смысл покопаться с олицетворением? Чтобы при попытке войти в MSSQL под текущей учёткой СУБД запускала его под совершенной другой.

Что ?
Вы включаете пользователю в группу с полными правами, но хотите чтобы он не получал эти права ???
Так не включайте его в эту группу.
Или не давайте группе права.
27 ноя 13, 11:37    [15197118]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Genniy
Может есть смысл покопаться с олицетворением?

Может, есть смысл для начала проверить права пользователя?
Для начала хотя бы так:
select t.role, IS_SRVROLEMEMBER(t.role) from (
  values
    ('sysadmin'),
    ('dbcreator'),
    ('diskadmin'),
    ('processadmin'),
    ('serveradmin'),
    ('setupadmin'),
    ('securityadmin')
) t(role)

и в отдельно взятой базе так:
select name, IS_ROLEMEMBER(name, 'db_user') from sys.database_principals where is_fixed_role=1
27 ноя 13, 12:03    [15197344]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
(в IS_SRVROLEMEMBER вторым параметром передать логин - без него функция покажет результат для логина текущей сессии)
27 ноя 13, 12:05    [15197362]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Genniy
Member

Откуда:
Сообщений: 141
Сон Веры Павловны
Genniy
Может есть смысл покопаться с олицетворением?

Может, есть смысл для начала проверить права пользователя?
Для начала хотя бы так:
select t.role, IS_SRVROLEMEMBER(t.role) from (
  values
    ('sysadmin'),
    ('dbcreator'),
    ('diskadmin'),
    ('processadmin'),
    ('serveradmin'),
    ('setupadmin'),
    ('securityadmin')
) t(role)

и в отдельно взятой базе так:
select name, IS_ROLEMEMBER(name, 'db_user') from sys.database_principals where is_fixed_role=1


Добавил в выборку ещё роль 'public'.

Результат:
sysadmin 0
dbcreator 0
diskadmin 0
processadmin 0
serveradmin 0
setupadmin 0
securityadmin 0
public 1
27 ноя 13, 14:13    [15198728]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Genniy
Member

Откуда:
Сообщений: 141
Glory
Genniy
Может есть смысл покопаться с олицетворением? Чтобы при попытке войти в MSSQL под текущей учёткой СУБД запускала его под совершенной другой.

Что ?
Вы включаете пользователю в группу с полными правами, но хотите чтобы он не получал эти права ???
Так не включайте его в эту группу.
Или не давайте группе права.


Я все понимаю :). Но здесь вопрос стоит в том, как можно решить текущую задачу без изменения локальных прав доступа.
27 ноя 13, 14:22    [15198825]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
o-o
Guest
Genniy,
а мы на слово не верим, что он админ на сервере.
может он даже и не овнер в базе.
покажите
execute as login = 'dom\super_user_account'
select * from sys.fn_my_permissions(null, 'server')
27 ноя 13, 14:28    [15198888]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
o-o
Guest
Genniy
Пользователь в MSSQL входит в группу только public, но при этом он может делать всё, что угодно с базой

ну так не с сервером же.
смотрите роли на уровне базы, может он db_owner.
а может, ему кто-то добрый CONTROL подарил.
преверяется аналогично:
execute as login = 'DOM\SUPER_ACCOUNT'
select * from sys.fn_my_permissions(null, 'DATABASE')
27 ноя 13, 14:39    [15198988]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Genniy
Добавил в выборку ещё роль 'public'.

Результат:

Сон Веры Павловны
и в отдельно взятой базе так:
27 ноя 13, 14:45    [15199053]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Genniy
Member

Откуда:
Сообщений: 141
o-o
Genniy
Пользователь в MSSQL входит в группу только public, но при этом он может делать всё, что угодно с базой

ну так не с сервером же.
смотрите роли на уровне базы, может он db_owner.
а может, ему кто-то добрый CONTROL подарил.
преверяется аналогично:
execute as login = 'DOM\SUPER_ACCOUNT'
select * from sys.fn_my_permissions(null, 'DATABASE')


Он точно не владелец базы. Стоит другой пользователь.

Результат выборки для проблемного пользователя возвращает:
entity_name subentity_name permission_name
database CONNECT
27 ноя 13, 14:55    [15199175]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
o-o
Guest
Genniy,

вот.
он не только не владелец базы (OWNER)
(еще Вы не различаете OWNER базы и роль db_owner.
овнер базы в смысле владельца один, а членов db_owner может быть миллион)
он в базе вообще никто.
про сервер и вовсе молчу.
кто рассказал-то, что он "все в базе может"?
27 ноя 13, 15:10    [15199342]     Ответить | Цитировать Сообщить модератору
 Re: MSSQ. Разделения права пользователя в AD и в MSSQL  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Еще можно проверить логины, созданные по группам AD:
sp_helpntgroup

- вполне может быть, что по группе администратора AD есть логин и пользователь с включением в роль db_owner базы, и при этом существует отдельный персональный логин по пользовательской учетке AD подключающегося. У последней может даже не быть пользователя в базе - права на базу унаследуются от пользователя группы. Проверяется всё так же:
execute as login='domain\user'
select name, IS_ROLEMEMBER(name) from sys.database_principals where is_fixed_role=1
27 ноя 13, 15:38    [15199655]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить