|
SSRS в режиме встроенной безопасности иногда NT AUTHORITY\АНОНИМНЫЙ ВХОД
|
|||
---|---|---|---|
#18+
Конфигурация следующая: SSRS и СУБД установлены на одной машине (SQL2017) Запуск служб SSRS и ядра производятся от имени доменной учетки (для каждой службы разные) SPN заданы и для учетки сиквела и для учетки SSRS Включено полное делегирование для учетных записей и для самого сервера В общем, всё, как описано инструкции Делегирование работает без проблем, если подключаться через SSMS в режиме "Проверка подлинности Windows" Связанные сервера доступны. (с включенным параметром "Устанавливать с использованием текущего контекста безопасности") Если смотреть текущие конекты с помощью этого запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
то показывает, что мой экземпляр SSMS подключен по Kerberos, а сам Report Server по NTLM, потому что он на той же машине, тут все ок то, что мои права наследуются, можно убедиться и с помощью BULK INSERT, обратившись к сетевой шаре и в активных сеансах видно, что обращение идет от моего имени теперь о чудесах (речь идет об отчетах, в которых включен параметр датасета "Войти в источник данных: Как пользователь, просматривающий отчет"): 1. запускаю IE, открываю отчет, в котором идет обращение к линку (со включенным параметром "с использованием текущего контекста") и все отрабатывает (проверяю на удаленном сервере - обращение от моего имени) 2. открываю другой отчет, где выполняется BULK INSERT из шары, тоже все отрабатывает (FileMonitor показывает что выполняется имперсонация и на машине, к которой идет обращение, в активных сеансах мое имя) Проходит какое-то количество времени. Скажем, пару часов. Судя по всему, истекает время билета Kerberos (предположительно). Открываю отчет 1. Говорит NT AUTHORITY\АНОНИМНЫЙ ВХОД Открываю отчет 2. Говорит Ошибка операционной системы 5(доступ запрещен). Ну ладно, билет кончился, но почему он (SSRS) не запрашивает новый? Из этой ситуации есть 2 пути: Первый: Подождать еще несколько часов (сколько точно не засекал, но часов через 5). Перезапустить IE, обратиться к отчету № 1 и вновь всё работает. Второй:. Открыть настройки датасета, внести исправление в строку подключения, любое - точку с запятой поставить в конце (если ее не было) или удалить её (если она была). Нажимаем "Проверить соединение", затем ОК и повторно открываем отчет. О боги! Он опять работает. Пока не истечет тот самый таймаут, после которого история повторяется. Но это же бред! И еще один момент: Если "на холодную" запустить отчет № 2, то "Ошибка операционной системы 5(доступ запрещен).", а если предварительно запустить отчет № 1 (в котором связанный сервер используется), то и второй (в котором BULK INSERT) начинает работать (отмечу, что BULK INSERT обращается к шаре на отдельном сервере, не имеющем отношения к SQL) Не понимаю в чем дело, месяц уже мучаюсь с этим. Спасайте, господа! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 15:08 |
|
SSRS в режиме встроенной безопасности иногда NT AUTHORITY\АНОНИМНЫЙ ВХОД
|
|||
---|---|---|---|
#18+
TJ001, в хроме не пробовали воспроизвести проблему? заметил, что chrome лучше работает с отчетами, чем IE ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 16:40 |
|
SSRS в режиме встроенной безопасности иногда NT AUTHORITY\АНОНИМНЫЙ ВХОД
|
|||
---|---|---|---|
#18+
komrad, пробовал хром и оперу (для разнообразия) если только начинает работать в одном из браузеров, то и в других тоже работает когда наступает час Х, то отваливается во всех перезапуск браузера, очитка кэша, режим инкогнито (чтобы принудительно заставить запросить аутентификацию): одна фигня - анонимус! однако эта манипуляция со строкой подключения срабатывает железно. если просто нажать "Проверить подключение", без изменения строки, то оно успешно проходит проверку, но отчеты обзываются анонимусом а если поменять Data Source=NetBIOS на Data Source=FQDN или наоборот, в зависимости от того, что было указано перед изменением, или добавить/удалить точку с запятой, то сразу всё начинает работать во всех браузерах мистика какая-то может это баг какой-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 16:59 |
|
SSRS в режиме встроенной безопасности иногда NT AUTHORITY\АНОНИМНЫЙ ВХОД
|
|||
---|---|---|---|
#18+
я бы еще попробовал в датасорсах прописать tcp:hostname..., чтобы форсировать подключение по TCP, вместо shared memory (локально ssrs->sql) еще мысль: в качестве теста попробуйте исключить из работы DNS и прописать IP в коннектах. Может там проблема... Только удостоверьтесь, что и по IP у вас kerberos получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 17:05 |
|
SSRS в режиме встроенной безопасности иногда NT AUTHORITY\АНОНИМНЫЙ ВХОД
|
|||
---|---|---|---|
#18+
komrad, теперь net_transport=TCP, но все равно аутентификация для моего сеанса (.Net SqlClient Data Provider) по NTLM службу SSRS перезапустил klist purge сделал вернул на Shared memory проблема пока не воспроизводится попробую посмотреть через klist что там с билетами, когда опять начнется анонимус вы мне подсказали направление, попробую поковырять его спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 18:06 |
|
SSRS в режиме встроенной безопасности иногда NT AUTHORITY\АНОНИМНЫЙ ВХОД
|
|||
---|---|---|---|
#18+
проблема решена! дело было в том, что хром по умолчанию не запрашивает билеты Kerberos с флагом DELEGATION Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
а IE запрашивает что происходило: 1. открываю IE, запускаю отчет, все работает 2. открываю следом хром, запускаю отчет, все работает 3. проходит время, билет керберос истек 4. открываю хром (ведь в нем работало в прошлый раз!), запускаю отчет, анонимус 5. открываю IE, запускаю отчет, анонимус 6. WTF? теперь про те мистические часы ожидания (более 5 которые) тут дело в том, что при открытии отчета создается конект к БД и живет какое-то вермя этот конект ассоциирован с билетом керберос керберос тоже живет какое-то время, независимо от конекта если начинать с шага 1, то создается конект, выдается билет и хром использует этот конект, который был создан интернет эксплорером если начинать с шага 2, то хром создает конект без соответствующего билета, получается анонимус если следом проделать то же самое в IE, то билет будет выдан, но конект все еще живой, а SSRS подключает IE через существующий безбилетный конект, получается аононимус и в IE чтобы исправить ситуацию здесь и сейчас, нужно грохнуть конект через SSMS или перезапустить службу и желательно почистить билеты (klist purge) после этой операции открываем IE и сразу всё работает, без ожидания неведомых часов таймаута чтобы заставить хром получать правильные билеты, нужно добавить в реестр ключ AuthNegotiateDelegateWhitelist и прописать в него соответствующее потребностям значение ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 12:38 |
|
|
start [/forum/topic.php?fid=46&fpage=34&tid=1685110]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 38ms |
total: | 201ms |
0 / 0 |