|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
Подскажите, кто сталкивался. На сервере смешанная авторизация (SQL+Win), есть группа пользователей Domain\Group, которой выданы разрешения на работу с базой и дополнительно дано разрешение на линковку: USE master GRANT ALTER ANY LINKED SERVER TO [Domain\Group] Доменный пользователь, состоящий в этой группе, нормально работает с базой за исключением ХП, линкующей внешний сервер. Если ему сделать отдельный логин и дать тот же GRANT, при вызове ХП проблем нет. И попутный вопрос, можно ли как-нибудь увидеть разрешения этого пользователя или хотя бы переключить контекст выполнения на него, если у него нет отдельного логина? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 12:03 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
HornetBlack, что вы понимаете под "линковкой"? у вас ХП которая не работает использует процедуры sp_*linkedserver* ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 12:05 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
HornetBlack, GRANT ALTER означает разрешение на изменение настроек связанного сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 12:06 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
felix_ff, Да, именно их: EXEC sp_addlinkedserver @srvname,'Data',@provider,@file,NULL,'EXCEL 12.0' EXEC sp_addlinkedsrvlogin @srvname, false ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 12:43 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
Владислав Колосов, Это разрешение требуется для присоединения сервера, читайте документацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 12:44 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
HornetBlack, вопрос не в этом, вопрос в том - зачем вообще динамически создаются такие подключения? Обычные практики не требуют операционного управления связанными серверами. Из создают один раз по известным маршрутам или вовсе использую другие ETL механизмы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 13:26 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
Владислав Колосов, возможно у них файликов много нужно читать и имена файлов каждый раз разные. согласен что лучше использовать что нибудь типа ssis. но вопрос автора в другом, вообще должно работать. HornetBlack, а какую ошибку выдает при запуске ХП? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 14:28 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
Владислав Колосов, Внешние сервера бывают разными и не только SQL. В моем случае приходится работать с множеством эксельных файлов и для уменьшения нагрузки вместо динамического связывания OPENROWSET использую временную линковку. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 15:48 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
felix_ff, Да, файлов много, имена разные и иногда к файлам нужен не один, а несколько запросов, поэтому и линкую. SSIS не хочу использовать, потому что не очень люблю "непрозрачные" обработки. Ошибку на уровне сервера в профилировщике (SQL-2012) не удалось поймать, но, как и писал выше, если выделить пользователю индивидуальный логин и дать то же разрешение, все работает. Хотел посмотреть разрешения пользователя в группе, но сиквел такого не умеет, и в контекст этого пользователя перейти тоже не дает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 15:58 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
HornetBlack, вы писали: "Доменный пользователь, состоящий в этой группе, нормально работает с базой за исключением ХП, линкующей внешний сервер" но вы как то же поняли что без отдельной учетки ХП не работает. как это проявляется? сервер же вам не пишет на выходе: "не работаю. заведи учетку отдельно" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 16:01 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
felix_ff, Несколько дней назад был подобный случай, когда пользователь, состоящий в группе и нормально с работающий с БД (выборка, обновление, добавление), также не смог выполнить вывод данных в эксельный файл, при этом в клиенте (акцесс) пишется ошибка 2473, т.е. "Объект или класс не поддерживает набор событий", которая очевидно является наведенной. В этой же группе состоят еще несколько десятков пользователей, у которых вообще нет никаких проблем с функционалом, но конкретный пользователь (его добавляли в группу недавно) смог выводить данные в эксельный файл только после заведения ему личного логина и выдачей гранта на линковку. Сегодня проблема повторилась у пользователя, который давно состоит в группе. Все-таки, хотелось бы понять, есть ли возможность тестировать запросы в контексте пользователя, состоящего в доменной или виндовой группе, если индивидуального логина у него нет, а есть только групповой? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 19:49 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
HornetBlack, Вам нужно начать с локализации проблемы: если вы считаете что у пользователя валится процедурка которая создает линкованный сервер на определенный excel файл, попробуйте съэмулировать ситуацию. зайдите в ssms используя windows-аутентификацию данного пользователя. и попробуйте в явном виде запустить эту процедуру. сервер если ему чего либо не хватает выдаст вам исключение и уже на основе этих данных можно говорить о том что что-то не работает. ситуация когда у вас заведен логин для доменной группы, группе выдано разрешение на alter any linked server, есть право execute на ХП в которой используется sp_addlinkedserver для его создания и пользователи из этой доменной группы авторизуются на сервере вполне возможна, какой либо ошибки по сути быть не должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 20:07 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
felix_ff, К сожалению, чтобы зайти под другим доменным пользователем, мне придется нарушить политику инфобезопасности корпоративной сети, т.к. потребуется его пароль, а я админ SQL, но не домена ) Почему можно выполнить EXECUTE AS для любых логинов SQL, кроме групповых и пользователей группы? Недоработка... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 20:29 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
HornetBlack, это не "недоработка", это вы не совсем верно понимаете механизм аутентификации NTLM. вам токен безопасности windows-логина святой дух чтоли должен нарисовать? в сиквел аутентифицируется именно логин. если вы сделаете execute as login = '<wingroup>' какой логин из этой группы он должен использовать что бы вас предоставлять? в группе же может быть много пользователей. выполнять execute as login = '<windows_login>' вы в праве даже если виндовый пользователь не отмаплен как логин ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 20:45 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
felix_ff, Спасибо, виндовый логин для смены контекста действительно работает. Выяснилась тонкость, которую раньше не понимал, но когда вы упомянули токен NTLM, все стало яснее. В SSMS пробовал менять контекст под виндового пользователя и движок упорно говорил, что олицетворение невозможно, потому что пользователя нет в логинах. Если же создать новое окно запроса и выполнить EXECUTE AS, то первая смена контекста выполняется, а вторая под другого пользователя фэйлится, даже если выполнить REVERT, т.е. токен не сбрасывается и нужно закрывать сессию. Но возникла другая проблема: EXECUTE AS login='group\user' go EXEC sp_addlinkedserver 'TEST','Data','Microsoft.ACE.OLEDB.12.0','c:\bc.xlsx',NULL,'EXCEL 12.0' EXEC sp_addlinkedsrvlogin 'TEST', false go select * from TEST...barcodes ===== сообщение: 15247, уровень: 16, состояние: 1, процедура: sp_addlinkedsrvlogin, строка: 25 [строка начала пакета: 0] У пользователя нет разрешений на выполнение данного действия. Сообщение 7437, уровень 16, состояние 1, строка 6 Использовать связанные серверы в режиме олицетворения без сопоставления с олицетворяемым именем входа нельзя. GRANT ANY LINKED SERVER на всю группу выдан, из акцессного клиента линковка у этого пользователя и вывод в эксельный файл выполняются. GRANT в этом случае распространяется на участников группы? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 01:18 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
HornetBlack, sp_addlinkedsrvlogin вам ругается потому что для ее использования у логина под которым она запускается должно быть право ALTER ANY LOGIN это во первых. во вторых вот видите что надо было и начинать с описания того что у вас в процедуре, я же первым делом спросил что вы понимаете под линковкой. вы помимо создания линкованного сервера пытаетесь еще обратится к его данным в режиме олицетворения контекста. такую штуку провернуть не просто, поскольку просто создать линкованный сервер и указать аутентификацию текущего контекста нельзя. у вас обязательно должны быть заведенны логины для удаленного сервера. (точно на вскидку не помню есть вариант вроде аутентификации в режиме олицетворения текущего контекста, но там домен должен позволять делигирование kerberos, если домен правильно не сконфигурирован то как говорится - фигвам) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 01:32 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
felix_ff, Я думал, что и без пояснения понятно, что присоединенный сервер создается не для красоты, а для работы с его данными ) Во-первых, это же не реальный сервер, а виртуальный, через драйвер OLEDB, которому логины и аутентификация вообще не нужны. Они нужны механизму связывания SQL, но как указать этот маппинг непонятно. Похоже, через смену контекста протестировать создание и работу с подобным сервером невозможно. Самое смешное, что из акцесс-клиента все это выполняется без заморочек для десятков пользователей в группе, но вот для пары конкретных - не хочет. И гранты для этой пары я не могу выдать, если не завести их отдельно от группы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 02:08 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
HornetBlack, Я думал, что и без пояснения понятно, что присоединенный сервер создается не для красоты, а для работы с его данными ) вы изначально свой первый пост прочтите, при этом абстрагировавшись от того что это вы его писали. исходя из вопроса изначально возникает ощущение что у вас проблема только с процедурой создания линк-сервера. поэтому то на форуме и есть faq где достаточно подробно изложен тезис - "чем четче сможешь сформулировать вопрос, тем быстрее получишь ответ". конечно есть толика вероятности что хрустальные шары текущего контингента не подкачают, но я бы не стал давать повод догадывать за вас весь необходимый смысл вопроса Во-первых, это же не реальный сервер, а виртуальный, через драйвер OLEDB, которому логины и аутентификация вообще не нужны. Они нужны механизму связывания SQL, но как указать этот маппинг непонятно. Похоже, через смену контекста протестировать создание и работу с подобным сервером невозможно. И гранты для этой пары я не могу выдать, если не завести их отдельно от группы да по факту для excel файла никакой аутентификации не требуется, она анонимна. но это требование не самого провайдера данных, а механизма аутентификации sql server. как я уже сказал, вы можете покопаться с настройками kerberos если не хотите в явном виде создавать логины для линк-сервера. можете погуглить по поисковой фразе что то типа: "sql server kerberos authentication linked server" в первых 5 ссылках точно что-нибудь найдется по этой теме. Самое смешное, что из акцесс-клиента все это выполняется без заморочек для десятков пользователей в группе, но вот для пары конкретных - не хочет не претендую на истину первой инстанции, но вы уверены что пользователи которые могут осуществлять вызов вашей ХП не заведены как логины на сервере? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 03:22 |
|
Разрешения для линковки сервера
|
|||
---|---|---|---|
#18+
не претендую на истину первой инстанции, но вы уверены что пользователи которые могут осуществлять вызов вашей ХП не заведены как логины на сервере? Конечно, я же сам их заводил ) Завтра попробую зайти на сиквел логинами разных пользователей и сравню отличия в вызовах. Спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 03:27 |
|
|
start [/forum/topic.php?fid=46&fpage=50&tid=1685749]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 399ms |
0 / 0 |