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

Пытаюсь создать в Managment Studion связанный сервер (типа SQL Server), возможность обращаться к которому была бы у одного конкретного пользователя. Открываю соответствующую формочку в разделе Server Objects, указываю доменное имя нужного сервера, на вкладке Sequrity в списке логинов указываю логин того пользователя, которому нужно дать доступ, флаг Impersonate не ставлю, в полях Remote User и Remote Password указываю sql-логин и пароль пользователя на связанном сервере, после чего под словами "For a login not defined in the list above, connection will:" выбираю Not be made.

Пытаюсь сохранить - получаю предупреждение, о том, что тестовое соединение не состоялось, игнорирую, захожу под указанным пользователем, выполняю запрос - получаю ошибку
Access to the remote server is denied because no login-mapping exists.

Что я могу делать не так, и как решить подобную задачу?
7 авг 17, 14:36    [20705461]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
TheDog
Guest
Да, может быть стоит сказать, что если вместо Not be made ставить Be made using this security context с указанием того же самого логина и пароля на удаленном сервере, то все работает - но разумеется, для всех :). А нужно, чтобы работало только для одного человека.
7 авг 17, 14:42    [20705500]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
Владислав Колосов
Member

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

я так понимаю, это потому, что вы убрали олицетворение.
7 авг 17, 14:56    [20705552]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
TheDog
Guest
Владислав Колосов,

Если я не ошибаюсь, галочка "Олицетворение" приводит к тому, что сервер передает имя пользователя и пароль из локального имени входа на связанный сервер. Мне это не нужно. Мне нужно, чтобы Test1 и, в перспективе, его компаньоны Test2, Test3 и т.д. Входили на связанный сервер под общим именем Test666 (но только они).
7 авг 17, 15:06    [20705588]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
TheDog
Guest
Упс, Test1 у меня, это Windows-логин, а Test666, как я выше писал, есть логин SQL. Если вместо Windows-логина использовать тоже логин SQL, все опять же, работает. Почему? И как сделать так, чтобы в логин SQL мапился именно Windows-логин.
7 авг 17, 15:16    [20705616]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
Владислав Колосов
Member

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

через ту таблицу никак по-моему.
Т.е. вы никак не переключите контекст выполнения для доменного пользователя. Он проверки проходит на контроллере домена.
7 авг 17, 15:21    [20705637]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
в первом посте вы все правильно делаете.
а тест не проходит, потому что наверное вы в студии сейчас не под этим самым Test1.
а всем остальным входа нет (в том числе и вам), вы сами так настроили.
для проверки запустите SSMS от имени Test1,
и под ним же и тестируйте
7 авг 17, 15:24    [20705654]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
Владислав Колосов
через ту таблицу никак по-моему.
Т.е. вы никак не переключите контекст выполнения для доменного пользователя. Он проверки проходит на контроллере домена.

ничего подобного, и через таблицу можно нащелкать.
именно как ТС описал: виндового в скульного отмапить,
убрав галку Impersonate.
и всем остальным Not to be made
7 авг 17, 15:27    [20705663]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
TheDog
Guest
o-o
в первом посте вы все правильно делаете.
а тест не проходит, потому что наверное вы в студии сейчас не под этим самым Test1.

Так проблема же не в том, что тест не проходит. Это, как раз, объяснимо :). Проблема в том, что запустив SSMS от имени Test1 я тоже получаю ошибку. А если поменять Test1 на логин SQL (Test1SQL, например, и, разумеется, зайти под Test1SQL), то обращения проходят.

Владислав Колосов
TheDog,
вы никак не переключите контекст выполнения для доменного пользователя. Он проверки проходит на контроллере домена.

Странно, т.к. "для всех" переключение віполняется. Если ставить Be made using this security context, то что происходит? Я подключаюсь, как windows-пользователь, механизм авторизации меня благополучно распознает. Далее я обращаюсь к связанному серверу, движок читает его настройки, и обращается к нему, как Test666 с прописанным в настройках паролем. А мне отдает результат. Все прекрасно работает. А теперь мне нужно, чтоб все было так же, только обращаться к связанному серверу могли не все, а только некоторые. Те, кто прописан в таблице. Какие тут принципиальные трудности??? А не работает.
7 авг 17, 15:57    [20705793]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
у меня только прод на работе.
если вам не горит, часа через 3 покажу картинкой.
нормально виндовый логин в скульный мапится.
даже если нужен именно он один, а всем остaльным входа нет
7 авг 17, 16:19    [20705885]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
TheDog
Guest
o-o,

Спасибо, не горит, но если можно, покажите. Мало ли, где я какую галку не поставил. Чудес не бывает :).
7 авг 17, 16:30    [20705948]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
Владислав Колосов
Member

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

Если работает "Be made using this security context", то у вас настроено делегирование протокола Kerberos.
7 авг 17, 17:29    [20706190]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7771
По-моему я действительно настраивал доменный логин на SQL в таблице маппинга, подзабыл уже.
7 авг 17, 17:33    [20706207]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
Владислав Колосов
TheDog,

Если работает "Be made using this security context", то у вас настроено делегирование протокола Kerberos.

и при чем тут делегирование,
если Be made using this security context
подразумевает отмапливание только в скульный логин?
мапить всех подряд в этот скульный логин,
кому и зачем тут нужно делегирование?
тут виндой вообще не пахнет
7 авг 17, 17:42    [20706238]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7771
o-o,

автор под доменной учеткой ходит.
7 авг 17, 18:09    [20706320]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
Владислав Колосов
o-o,

автор под доменной учеткой ходит.

я читать умею, а вы?
он мапит в скульный логин:
автор
Упс, Test1 у меня, это Windows-логин, а Test666, как я выше писал, есть логин SQL.

какая разница вообще кого передаем,
нам не нужны ничьи виндовые данные.
ибо передаем мы те самые данные, что забили в окне диалога,
а именно remote user/remote password.
и кто там под ними пришел, линкеду по барабану
7 авг 17, 18:34    [20706402]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest


К сообщению приложен файл. Размер - 142Kb
7 авг 17, 18:37    [20706406]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7771
o-o,

автор же утверждает, что мап у него не работает доменной учетки на сиквельную, но при
Be made using this security context = 1 он подключается.
Отсюда я делаю вывод, что он подключается под Kerberos.
7 авг 17, 18:39    [20706413]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'HP2\SQL_2012_DEV',@useself=N'False',@locallogin=N'hp2\Mary',@rmtuser=N'sa',@rmtpassword='########'
7 авг 17, 18:41    [20706417]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
Владислав Колосов
o-o,

автор же утверждает, что мап у него не работает доменной учетки на сиквельную, но при
Be made using this security context = 1 он подключается.
Отсюда я делаю вывод, что он подключается под Kerberos.

это мапит всех в скульный и только скульный логин.
Керберос отдыхает
7 авг 17, 18:44    [20706424]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7771
o-o,

да, сбила меня с толку похожесть фраз... Be made by using curent login's context.
7 авг 17, 19:10    [20706477]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
TheDog
Пытаюсь сохранить - получаю предупреждение, о том, что тестовое соединение не состоялось, игнорирую, захожу под указанным пользователем, выполняю запрос - получаю ошибку
Access to the remote server is denied because no login-mapping exists.

я думаю, вы просто не сохраняете то, что настроили.
или ошибочно набираете имя логина.
заскриптуйте линкед и проверьте, правильные ли там локальный и удаленный логины
7 авг 17, 19:11    [20706479]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
TheDog
Guest
o-o,

Спасибо за картинку, убедительно. И, как выяснилось, прямо прописано в документации :). Тут, пример Б

o-o
я думаю, вы просто не сохраняете то, что настроили.
или ошибочно набираете имя логина.
заскриптуйте линкед и проверьте, правильные ли там локальный и удаленный логины

Скриптовал, вроде все правильно было.. Проверил, в итоге, на другом сервере (2016) - OK. Вернулся на 2005-й, снес связанный сервер вообще, пересоздал скриптами, а не через GUI - заработало :). Темна вода во облацех.

Попутно выяснил, что сопоставить SQL-логин на удаленном сервере с логином Windows на локальном возможно, а вот с ГРУППОЙ - нельзя.

Т.е. завести в качестве имени входа группу - пожалуйста, отдельно прописывать имена включенных в группу пользователей не требуется. А вот чтобы все пользователи могли работать со связанным сервером, регистрировать в сервере следует все абсолютно логины. Неудобно, но сделано так.
18 авг 17, 20:04    [20735273]     Ответить | Цитировать Сообщить модератору
 Re: Безопасность LinkedServer-а  [new]
o-o
Guest
TheDog
Попутно выяснил, что сопоставить SQL-логин на удаленном сервере с логином Windows на локальном возможно, а вот с ГРУППОЙ - нельзя.

Т.е. завести в качестве имени входа группу - пожалуйста, отдельно прописывать имена включенных в группу пользователей не требуется. А вот чтобы все пользователи могли работать со связанным сервером, регистрировать в сервере следует все абсолютно логины. Неудобно, но сделано так.

ну да, если посмотреть текст процедуры
exec sp_helptext 'sp_addlinkedsrvlogin'

то вот этот кусок:
	-- IF SPECIFIED CHECK LOCAL USER NAME (NO NT GROUP!)
	select @localid = 0
	if (@locallogin IS NOT NULL)
	begin
		-- share-lock the local login
		EXEC %%LocalLogin ( Name = @locallogin ) . Lock ( Exclusive = 0 )
		IF @@ERROR = 0
			select @localid = principal_id from sys.server_principals
				where name = @locallogin and type in ('S', 'U')
		else
		begin
			-- ADD ROW FOR NT USER LOGIN IF NEEDED --
			if (get_sid('\U'+@locallogin) IS NOT NULL)
			begin
				EXEC @ret = sys.sp_MSaddlogin_implicit_ntlogin @locallogin
				if (@ret = 0)
					select @localid = principal_id from sys.server_principals
						where name = @locallogin and type = 'U'
			end
		end
		if (@localid = 0)
		begin
			ROLLBACK TRAN
			raiserror(15007,-1,-1,@locallogin)
			return (1)
		end
	end

у группы тип 'G', соответственно вываливается 15007:
Msg 15007, Level 16, State 1, Procedure sp_addlinkedsrvlogin, Line 76
'WinGroup' is not a valid login or you do not have permission.
18 авг 17, 22:34    [20735478]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить