Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 группы пользователей  [new]
нуб987
Guest
в SQL Server Management Studio в разделе Security - Logins добавляю группу пользователей. Разрешаю им доступ к базе master с ролью db_datareader
Но доступа у них не появляется - они не могут выполнить запрос "select name from master..sysdatabases order by name"

если добавить любого пользователя из этой группы, то доступ появляется. Проблема только с группами.
Что я делаю не так? Группу ведь можно как-то добавить?

ПС. доступ нужен только для того, чтобы прочитать список баз на сервере.
10 фев 17, 14:48    [20200870]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
https://msdn.microsoft.com/ru-ru/library/ms178534.aspx
Если участник, вызывающий представление каталога sys.databases , не является владельцем базы данных, а база данных не является базой данных master или tempdb, минимально необходимыми разрешениями для просмотра соответствующей строки являются разрешения уровня сервера ALTER ANY DATABASE или VIEW ANY DATABASE, или разрешение CREATE DATABASE в базе данных master . Узнать базу данных, к которой подключен участник, можно в представлении каталога sys.databases.
10 фев 17, 15:40    [20201120]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
Гавриленко Сергей Алексеевич,
да, это я читал, но не понял логики

https://msdn.microsoft.com/ru-ru/library/ms178534.aspx
Если участник, вызывающий представление каталога sys.databases, не является владельцем базы данных, а база данных не является базой данных master или tempdb, ТОГДА минимально необходимыми разрешениями для просмотра соответствующей строки являются разрешения уровня сервера ALTER ANY DATABASE или VIEW ANY DATABASE

т.е. этот раздел вообще пропускаем, т.к. это для всех баз, КРОМЕ master и tempdb

а дальше идет загадочное "или", которое как бы относится к первой части (запятая же стоит):
https://msdn.microsoft.com/ru-ru/library/ms178534.aspx
, или разрешение CREATE DATABASE в базе данных master . Узнать базу данных, к которой подключен участник, можно в представлении каталога sys.databases.

т.е. для чтения из sys.databases базы master, нужно иметь разрешение на CREATE DATABASE в базе данных master?
10 фев 17, 18:08    [20201616]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Чего не понятного? Базы master и tempdb видно через sys.databases без дополнительных телодвижений, а чтобы там же видеть те базы, к которым у принципала нет доступа, этому принципалу надо выдать ALTER ANY DATABASE / VIEW ANY DATABASE / CREATE DATABASE.

Сообщение было отредактировано: 10 фев 17, 18:17
10 фев 17, 18:17    [20201633]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
o-o
Guest
нуб987
Но доступа у них не появляется - они не могут выполнить запрос "select name from master..sysdatabases order by name"

что вы понимаете под отсутствием доступа?
вам пишут в явном виде The select permission was denied...?
вот это сообщение свидетельствует об отсутствии.
или же вы жалуетесь на то, что ничего не возвращает?
хотя вообще это все странно: любому логину по дефолту выдается view any database,
это выдано паблику.
может, у вас отобрано?
хотя почему тогда просто юзеры-не группы видят?
10 фев 17, 18:26    [20201642]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
o-o
что вы понимаете под отсутствием доступа?
вам пишут в явном виде The select permission was denied...?
вот это сообщение свидетельствует об отсутствии.

я про это и говорю

o-o
или же вы жалуетесь на то, что ничего не возвращает?
хотя вообще это все странно: любому логину по дефолту выдается view any database,
это выдано паблику.
может, у вас отобрано?
хотя почему тогда просто юзеры-не группы видят?

возвращает: Login failed for user 'xxx\yyy'
вот и я о том же: почему если добавить группу, куда входит данный пользователь, то ошибка остается. Но если добавить этого пользователя, то все нормально?
10 фев 17, 22:45    [20202132]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
нуб987
вот и я о том же: почему если добавить группу, куда входит данный пользователь, то ошибка остается. Но если добавить этого пользователя, то все нормально?
Что за группа то? AD? Distribution или Security? Домен один и тот же? SQL Server то ее "видит"?
10 фев 17, 23:41    [20202230]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
Mind
нуб987
вот и я о том же: почему если добавить группу, куда входит данный пользователь, то ошибка остается. Но если добавить этого пользователя, то все нормально?
Что за группа то? AD? Distribution или Security? Домен один и тот же? SQL Server то ее "видит"?

Группа ActiveDirectory. SQLServer вроде видит. По крайней мере никак не противится ее добавлению.
Домены и одинаковые, и разные. Доверенность между ними есть.
11 фев 17, 04:26    [20202480]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
нуб987
Что я делаю не так?
Все.

По-умолчанию разрешение VIEW ANY DATABASE выдано серверной роли public. Т.е. для доступа к master..sysdatabases ничего дополнительно настраивать не требуется
Если это поведение было изменено, выдайте VIEW ANY DATABASE вашей группе. Добавлять пользователей в master и рулить там разрешениями вообще не нужно.
11 фев 17, 12:10    [20202849]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
invm
По-умолчанию разрешение VIEW ANY DATABASE выдано серверной роли public. Т.е. для доступа к master..sysdatabases ничего дополнительно настраивать не требуется
Если это поведение было изменено, выдайте VIEW ANY DATABASE вашей группе. Добавлять пользователей в master и рулить там разрешениями вообще не нужно.

ничего не было изменено. Была добавлена группа пользователей в <Server>-Security-Logins.
Если сделать то же самое не с группой, а с пользователем, то все ок - читать список баз можно.
invm
Все.

так что именно из "всего" я сделал неправильно?
11 фев 17, 14:55    [20203136]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
нуб987
ничего не было изменено.
Если это так, то sys.databases и sysdatabases должны быть доступны без дополнительных манипуляций.
Что вернет запрос
select * from sys.server_permissions where grantee_principal_id = 2/*public*/ and [permission_name] = N'VIEW ANY DATABASE';
?

нуб987
так что именно из "всего" я сделал неправильно?
Вы прочитали в справке перечень разрешений, дающих возможность читать из sys.databases? Там где-нибудь членство в db_datareader упомянуто?
11 фев 17, 16:04    [20203254]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
нуб987
Mind
пропущено...
Что за группа то? AD? Distribution или Security? Домен один и тот же? SQL Server то ее "видит"?

Группа ActiveDirectory. SQLServer вроде видит. По крайней мере никак не противится ее добавлению.
Домены и одинаковые, и разные. Доверенность между ними есть.
15 фев 17, 23:27    [20215813]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
нуб987,

Try this:
EXEC xp_logininfo 'domain\login', 'all'
EXEC xp_logininfo 'domain\groupname', 'members'
16 фев 17, 01:08    [20216053]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
Mind
нуб987,

Try this:
EXEC xp_logininfo 'domain\login', 'all'
EXEC xp_logininfo 'domain\groupname', 'members'

у меня СКЛ2000, там нету xp_logininfo


теперь вообще запутался.
выполняю в QA запрос:
select * from 
OPENROWSET(--'MSDASQL',
'SQLOLEDB.1',
   'DRIVER={SQL Server};Trusted_Connection=yes;Integrated Security=SSPI;Persist Security Info=False;SERVER=<ServerName>;',
   'select name from master..sysdatabases order by name') as aaa

возвращает:
автор
Server: Msg 18452, Level 14, State 1, Line 1
Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection.
[OLE/DB provider returned message: Invalid connection string attribute]


При этом, если запрос выполняется из моего приложения (задается та же самая строка подключения) с моего компьютера в том же домене, то все проходит нормально (мой логин добавлен в Security-Logins сервера <ServerName>)
21 июн 17, 01:32    [20579115]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
нуб987
При этом, если запрос выполняется из моего приложения (задается та же самая строка подключения) с моего компьютера в том же домене, то все проходит нормально (мой логин добавлен в Security-Logins сервера <ServerName>)
А какое отношение ваша учетная запись, под которой "запрос выполняется из моего приложения (задается та же самая строка подключения) с моего компьютера в том же домене" имеет отношение к учетной записи, под которой запущен MSSQL и под которой вы пытаетесь сделать OPENROWSET?
21 июн 17, 01:56    [20579127]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
Гавриленко Сергей Алексеевич
А какое отношение ваша учетная запись <...> имеет отношение к учетной записи, под которой запущен MSSQL и под которой вы пытаетесь сделать OPENROWSET?

такое, что условия одинаковые, но результат разный.
опишу более подробно:
- есть сервер: <ServerName> с запущенным СКЛ2000 и набором баз, список которых надо прочитать
- есть мой комп: comp1 и логин noob987
- есть сервер2: Server2 с запущенным sql'ем под доменной учеткой

обе учетки прописаны на <ServerName>-Security-Logins

при этом мое приложение может прочитать список баз, а запрос в QA на Server2 не может этого сделать
21 июн 17, 02:07    [20579130]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
нуб987,

дык у Вас комп не в домене.

Login failed for user '(null)' - это ошибка kerberos, попытка делегирования.
21 июн 17, 11:31    [20579914]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
Владислав Колосов
нуб987,

дык у Вас комп не в домене.

Login failed for user '(null)' - это ошибка kerberos, попытка делегирования.

комп в домене примерно от 150 до 300%

про делегирование писал нашим сисадминам, но они походу не знают, где это.
подскажите, это настраивается на целевом сервере (который получает запрос. В примере выше это <ServerName>) или на том, который посылает запрос (мой компьютер или сервер2)?
или вообще где-то в ActiveDirectory?
21 июн 17, 14:50    [20580780]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
нуб987,

в смысле оба сервера запущены под доменной учёткой?
21 июн 17, 15:07    [20580873]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
Владислав Колосов
нуб987,

в смысле оба сервера запущены под доменной учёткой?

сервис СКЛя <ServerName> запущен из под LocalSystem, а СКЛ-агент из под доменной.
на сервер2 СКЛ и агент запущены из под доменных учеток
я на своем компе залогинен под доменной учеткой

неужели то, что <ServerName> работает под LocalSystem, это не дает ему прочитать юзера пришедшего запроса?
но тогда почему я со своего компа из приложения могу прочитать список баз, а из QA сервера2 не могу (при одинаковых строках подключения)?
21 июн 17, 18:59    [20581652]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
нуб987
но тогда почему я со своего компа из приложения могу прочитать список баз, а из QA сервера2 не могу (при одинаковых строках подключения)?
Читайте что такое делегирование в керберос и почему оно не требуется в первом случае, но необходимо во втором.

ЗЫ: Если не хотите возиться с делегированием, настройте маппинг логинов для линкед серверов на Server2 через сиквельный логин.
21 июн 17, 21:27    [20581911]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
нуб987,

автор
неужели то, что <ServerName> работает под LocalSystem, это не дает ему прочитать юзера пришедшего запроса?


А как он в домене проверит аутентичность присланной доменной учётки, если не входит в домен?
Остается только SQL авторизация.
22 июн 17, 12:12    [20583103]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
Владислав Колосов
нуб987,

автор
неужели то, что <ServerName> работает под LocalSystem, это не дает ему прочитать юзера пришедшего запроса?


А как он в домене проверит аутентичность присланной доменной учётки, если не входит в домен?
Остается только SQL авторизация.

так а почему он может прочитать пришедший логин с comp1, но не может с Server2 ?
22 июн 17, 12:43    [20583242]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
нуб987,

потому, что комп1 авторизуется не под доменной учеткой, а под сиквельной.
можете создать локального пользователя windows, доменного, на сервере с локал систем, он тогда пройдет проверку локально.
Но сам сервер windows должен быть в домене.
22 июн 17, 12:59    [20583305]     Ответить | Цитировать Сообщить модератору
 Re: группы пользователей  [new]
нуб987
Guest
Владислав Колосов
потому, что комп1 авторизуется не под доменной учеткой, а под сиквельной.

нет же. Вот картинку нарисовал, как все происходит:

К сообщению приложен файл. Размер - 23Kb
22 июн 17, 13:11    [20583367]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить