Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 замапливание виндового логина как побочное явление  [new]
o-o
Guest
по логике вещей, чтобы выдать права юзеру в базе
или поместить юзера в какую-то роль в базе, надо бы этого юзера в базе иметь.
т.е. если я просто попытаюсь выдать права (sql)ЛОГИНУ в некоторой базе/засунуть в роль,
предварительно не отмапив туда этот логин, получу:

Msg 15151, Level 16, State 1, Line 1
Cannot find the user 'sql_login', because it does not exist or you do not have permission.


Msg 15410, Level 11, State 1, Procedure sp_addrolemember, Line 75
User or role 'sql_login' does not exist in this database.

НО: это верно только для SQL Server login.
а виндовый логин и права получит, и в роль попадет, попутно отмапится в базу,
получит одноименную схему
, будет отображаться в папочке Users с красной стрелочкой,
означающей, что коннекта к базе у него нет.

проверив sys.database_permissions, обнаружим, что коннекта к базе и правда нет, студия не врет.
итого: юзер в базу проникает, хотя никто явно его не мапил.

может ли кто-то дать сслылку на доку
ну или просто объяснить такое явление.
сразу оговорюсь, не надо мне ссылки на виндовые группы, отмапленные в базу, и индивидуального юзера из такой группы.
речь о индивидуальной виндовой учетке без всяких групп.
репро:
use master;
go
create login [hp\mary] from windows;
grant control to [hp\mary] -- mary теперь имеет контрол на master

use Northwind;
go
exec sp_addrolemember 'db_datareader', 'hp\mary' -- mary с одноименной схемой -- ридер в Northwind
25 дек 14, 12:05    [17050399]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
может ли кто-то дать сслылку на доку

Вы про это ?
http://msdn.microsoft.com/ru-ru/library/ms187750.aspx
Член роли, добавляемый с помощью хранимой процедуры sp_addrolemember, наследует разрешения этой роли. Если добавляемый член — участник уровня Windows, не имеющий соответствующего пользователя базы данных, этот пользователь будет создан, но может быть не полностью сопоставлен с именем входа. Всегда проверяйте, существует ли имя входа, и предоставлен ли ему доступ к базе данных.
25 дек 14, 12:11    [17050429]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
o-o
Guest
Glory,

ок, с ролью засчитано, спасибо.
как насчет выдачи прав несуществующему юзеру?
25 дек 14, 12:14    [17050444]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
как насчет выдачи прав несуществующему юзеру?

sa, например, тоже никуда не отмаплен, но всюду имеет права. Ищите.
25 дек 14, 12:18    [17050465]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
o-o
Guest
Glory,

между прочим, с начала недели ищу.
не находится почему-то. с ролью прокол вышел,
т.к. только сегодня осенило попробовать, с моей-то удачей надо же,
именно этот случай оказался задокументированным.
а то, что задизэйбленный sa всюду права имеет, уже задействовано, не переживайте.
лучший способ иметь контрол на сервер и не вызывать подозрений, это выдать себе
impersonate на того самого задизэйбленного sa.
гадкость состояла в том, что в гуи никак ничего не видишь, ведь ОЕ коннектится под моей учеткой.
а вот выдаешь себе контрол на базу и о чудо, все продолжают считать, что ты туда не попадаешь,
стрелочка-то красная. привет ДБА -- любителям гуи
25 дек 14, 12:28    [17050521]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
o-o
Guest
продолжу рассуждения вслух.
если выдать виндовому логину без юзера в базе любые права, кроме контрола на базу,
то юзер и схема создадутся, но этот логин/юзер в базу попадать не будет.
логично: нет коннекта, нечего в базу попадать.

но если выдать именно контрол, то еще как в базу попадет. без коннекта.
какой вообще тогда смысл в праве "коннект"?
то он нужен для попадания в базу, то не нужен.
неконсистентно.

ну я еще понимаю, если бы запихивали его в овнеры базы, но нет, достаточно выдачи логину контрола.
я помню, был обратный эффект: отобрав у юзера контрол на базу, отбирается заодно и коннект:
побочный эффект DENY CONTROL
но то задокументировано в статье про DENY.
а вот в статье про GRANT имеются 75 упоминаний CONTROL, но ни одно из них ничего не объясняет про связь с CONNECT.

...сдается мне, я знаю, какая связь у CONTROL и CONNECT.
вот такая: CONTROL -> BUG -> CONNECT

К сообщению приложен файл. Размер - 3Kb
26 дек 14, 01:22    [17054699]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
o-o,

так ведь, control, он же в себя вообще все разрешения включает. что ж удивляться-то?
ну, если пруф нужен, вот табличку посмотреть можно:
http://msdn.microsoft.com/en-us/library/ms178569.aspx

connect содержится в connect replication, а connect replication в control.
26 дек 14, 11:31    [17055948]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
o-o
Guest
daw,
я удивляюсь

1. несправедливости, т.е. неравноправию в отношении скульного логина против виндового.
чем объяснить, что разрешения НА БАЗУ можно выдать прямо логину, а не юзеру, но только если логин ВИНДОВЫЙ?

2. самому факту того, что можно выдать права несуществующему принципалу, попутно его создав.
вы же не можете, например, создать логин как побочное явление выдачи CONTROL на сервер виндовому аккаунту?
а что, это же CONTROL SERVER, он включает в себя заодно и CONNECT SQL!!!

---
про репликацию вообще не понимаю, при чем она здесь
26 дек 14, 12:33    [17056486]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
я удивляюсь

Что из перечисленного вами является недокументированным поведением ?
26 дек 14, 13:17    [17056908]     Ответить | Цитировать Сообщить модератору
 Re: замапливание виндового логина как побочное явление  [new]
o-o
Guest
оба пункта недокументированы.
выдача прав напрямую логину, без его предварительного отмапливания в базу,
противоречит статье БОЛ Create a Database User
выделяю на картинке:
Permissions inside the database are granted and denied to the database user, not the login.
вместо этого наблюдаю (проделайте то жа самое!):
use master;
go
create login [hp\mary] from windows; -- новый чистый виндовый логин, не было его на сервере до этого
---
Command(s) completed successfully.

grant control to [hp\mary]; -- выдача прав ЛОГИНУ НА БАЗУ, не юзеру. никаких других команд между этими двумя
---
Command(s) completed successfully.

/*теперь все то же самое для скульного логина. чем он хуже?*/
create login sql_login with password = '*****';
---
Command(s) completed successfully.

grant control to sql_login;
---
Msg 15151, Level 16, State 1, Line 2
Cannot find the user 'sql_login', because it does not exist or you do not have permission.


виндовому логину значит можно выдать, не мапя его, права на базу,
а скульному так нельзя, сперва надо отмапить?

то, что в статье про GRANT нет никаких упоминаний о различном взгляде сервера
на происхождение логина: виндовый он или скульный, а на практике различие имеется,
и есть подтверждение недокументированности

К сообщению приложен файл. Размер - 32Kb
26 дек 14, 16:13    [17058394]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить