Устранение неполадок Kerberos в среде Sharepoint (часть 3)

Опубликовано: 9 Апреля, 2023

Введение

Я хотел бы начать этот раздел с объяснения того, что такое делегирование Kerberos и когда нам нужно его настроить. В прошлых статьях я включал этапы настройки, но делегирование не всегда необходимо, поскольку оно зависит от вашего сценария, дизайна приложения и требований безопасности.

Делегирование Kerberos позволяет передавать аутентифицированную учетную запись через несколько серверов с помощью олицетворения. Эту проблему часто называют «проблемой двойного перехода», и вы столкнетесь с ней, например, при использовании служб вычислений Excel (ECS). Когда мы настраиваем доверие для делегирования и используем олицетворение учетных данных учетных записей пользователей, мы гарантируем, что правильный уровень доступа поддерживается во всей системе. Другой пример можно увидеть, когда пользователь запрашивает данные из веб-приложения. Веб-приложение делает запрос к базе данных SQL на другом физическом сервере и поэтому использует олицетворение. Если используются делегирование и олицетворение, сервер SQL возвращает только те данные, к которым у пользователя есть доступ.

Изображение 23824
Рисунок 22: Два физических прыжка, приводящие к проблеме двойного прыжка

Настроим для этого тестовую среду и посмотрим, какие ошибки мы увидим, если делегирование настроено неправильно. У меня есть рабочая aspx-страница, которая отображает данные из пользовательской базы данных на сервере SQL.

Изображение 23825
Рисунок 23: Рабочий запрос к SQL-серверу

Делегирование Kerberos уже правильно настроено в нашей демонстрационной среде, но давайте посмотрим, что произойдет, если мы удалим доверие для прав делегирования для учетной записи пула приложений; SPContentPoolAcct. На рис. 24 показана текущая конфигурация для этой учетной записи.

Изображение 23826
Рисунок 24: Правильная настройка ограниченного делегирования

Теперь я попытаюсь удалить права доверия для службы MSSQLSvc, выделенной желтым цветом на рисунке, и выполнить IISRESET /NOFORCE на сервере SharePoint WSS1. Без этих прав учетная запись SPContentPoolAcct больше не может олицетворять учетные данные пользователя и представлять их серверу SQL. Теперь пользователь получает стандартную ошибку Microsoft SharePoint, показанную на рис. 25.

Изображение 23827
Рис. 25. Страница SharePoint, возвращающая стандартное пользовательское сообщение об ошибке

Хорошо, это статья об устранении неполадок, поэтому нам лучше начать делать это. Прежде всего, мы мало что можем сделать с этим стандартным сообщением об ошибке. Как администратор, мы можем отключить это в файле web.config, который находится в файловой системе сервера Microsoft SharePoint Web FrontEnd (WFE).

Тестовая среда находится здесь: C:inetpubwwwrootwssVirtualDirectoriesintranet.domain.local80

Отключить пользовательские сообщения об ошибках в Microsoft SharePoint

Примечание:
Это делается на каждом сервере Microsoft SharePoint WFE, который у вас есть.

  1. Сделайте копию файла web.config перед его редактированием (просто чтобы ничего не сломать)
  2. Откройте его с помощью нашего любимого текстового редактора Блокнот.
  3. Найдите <customErrors mode="On" /> и измените его на <customErrors mode="Off" />
  4. Найдите CallStack="true" и измените его на CallStack="false"
  5. Перезапустите Internet Information Server (IIS) с помощью командной строки: IISRESET/NORFORCE.

Теперь давайте еще раз взглянем на страницу:

Изображение 23828
Рис. 26. Страница SharePoint, возвращающая подробное сообщение об ошибке

Это дает нам немного больше информации о проблеме, и на странице четко указано, что это ошибка входа в систему клиента SQL с сообщением: System.Data.SqlClient.SqlException: Ошибка входа для пользователя «NT AUTHORITYANONYMOUS LOGON»

С помощью кода.NET была предпринята попытка анонимного входа в систему, поэтому наша учетная запись пользователя (ДОМЕНАдминистратор вошел в систему на рабочей станции, пытаясь загрузить страницу) не использовалась в этом процессе. Для получения дополнительной информации по этой проблеме мы можем взглянуть на журнал событий приложений на сервере SharePoint (в этом сценарии у нас есть только один, но если у вас есть несколько серверов WFE в сети с балансировкой сетевой нагрузки (NLB), вам необходимо проверить каждый один, чтобы найти сообщение об ошибке).

В средстве просмотра событий на WSS1 мы находим предупреждающее событие:

Предупреждение, ASP.NET 2.0.50727.0, идентификатор события: 1039, категория: веб-событие
Код события: 3005
Сообщение о событии: Произошло необработанное исключение


Пользователь: ДОМЕНАдминистратор
Аутентифицировано: True
Тип аутентификации: переговоры
Имя учетной записи потока: DOMAINspcontentpoolacct
Информация о потоке:
Идентификатор темы: 4
Имя учетной записи потока: DOMAINspcontentpoolacct
Выдает себя за другого: False













Рисунок 27: Предупреждение из журнала событий WSS1 SharePoint WFE

Информация в средстве просмотра событий показывает нам, что.NET выдал событие веб-предупреждения. Активировавший это пользователь был аутентифицированным пользователем DOMAINAdministrator, а учетная запись потока — DOMAINspcontentpoolacct (пользователь нашего пула веб-приложений). Это также показывает нам, что пользователь потока не выдает себя за фактическую учетную запись пользователя. Итак, олицетворение не используется для кода.NET, и в этом проблема (имитирует: False).

Проверьте конфигурацию делегирования Kerberos, которая включает:

  • Имена участников службы (SPN) в Active Directory
    – Тип службы (MSSQLSvc)
    – Имя сервера (SQL и SQL.DOMAIN.LOCAL)
    – Порт, если используется (1433)
    – Учетная запись, на которую она зарегистрирована (DOMAINSQLSvcAcct, поскольку она настроена для запуска службы SQL Server).
  • Конфигурация делегирования для учетной записи пула приложений (DOMAINSPContentPoolAcct, чтобы разрешить передачу учетных данных службе SPN, порту и учетной записи)
  • Код.NET (для проверки подлинности необходимо установить доверенный и использовать олицетворение)




Примечание:
Обратите внимание, что я не указал конфигурацию делегирования в DOMAINSPContentPoolAcct. Просто добавьте информацию и перезапустите службы IIS на сервере SharePoint WFE.

Kerberos для поставщика общих услуг (SSP)

До выпуска обновления инфраструктуры (июль 2008 г.) для серверов Microsoft Office Server проверка подлинности Kerberos не полностью поддерживалась поставщиком общих услуг. Это вызвало некоторые проблемы, например, с несколькими поставщиками общих служб и функциями поиска. Поэтому я рекомендую вам установить это обновление на свои системы, если вы еще этого не сделали. Microsoft позже опубликовала несколько накопительных обновлений, которые включают это обновление инфраструктуры, поэтому проверьте последний рекомендуемый путь обновления на веб-сайте блога команды Microsoft. Вы можете найти ссылку на этот раздел ссылок в блоге в конце этой статьи.

В этом обновлении инфраструктуры Microsoft добавила специальный формат имени участника-службы (SPN): MSSP/<host:port>/<SSP name>.

Подробные сведения о конфигурации SSP с использованием этого нового формата SSP см. на веб-сайте TechNet, указанном в разделе ссылок этой статьи. Я включил краткий обзор шагов настройки Kerberos, упомянутых в статье TechNet для поставщика общих служб.

Поставщик общих служб (SSP)

  • Зарегистрируйте SPN поставщика общих услуг в Active Directory.

  • Измените SSP для использования проверки подлинности Kerberos с помощью инструмента командной строки STSADM.

  • Внесите изменения в реестр на всех серверах MOSS 2007, чтобы использовать новый формат SPN для SSP.

  • Убедитесь, что проверка подлинности Kerberos работает для доступа к общим веб-службам корневого каталога и виртуального каталога.

Изображение 23830
Рис. 28. Регистрация имени участника службы для поставщика общих служб.

Разные вопросы и примечания

Учетные записи пользователей и служб SharePoint

Убедитесь, что учетные записи пользователя или SharePoint не заблокированы в домене и не имеют просроченного пароля. Политика компании может быть реализована в вашей среде, если это так.

Безопасное соединение с учетной записью компьютера

Некоторым клиентам/серверам не удается установить правильное безопасное соединение с доменом, и Kerberos построен на этом типе безопасной инфраструктуры. Если это произойдет, вам нужно сбросить и восстановить эти отношения. В статье KB216393 базы знаний Майкрософт (см. раздел ссылок в конце статьи) есть инструкции для этой процедуры.

Если ваш сервер/клиент был клонирован, вам необходимо сгенерировать новый идентификатор безопасности (SID), и рекомендуемый способ сделать это — запустить утилиту Microsoft sysprep. Другой способ — использовать бывшую Sysinternals, теперь Microsoft, утилиту NewSID.

Проблемы с размером MTU

Сетевые пакеты, отправляемые по проводам, имеют определенную длину. Если учетная запись является членом большого количества групп, это можно увидеть. Еще один способ решить проблему MTU — заставить Kerberos использовать TCP. Информацию об этом можно найти в статье базы знаний Microsoft KB244474 (см. раздел ссылок в конце статьи).

Несколько веб-приложений с разными методами аутентификации

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

Я хотел бы порекомендовать некоторые рекомендации для веб-приложений.

  • Используйте уникальные заголовки хоста
    например, intranet.domain.local вместо имени сервера SharePoint.

  • Используйте уникальные IP-адреса для заголовков узлов
    - это облегчает балансировку нагрузки позже

  • Используйте разные учетные записи пула приложений для разных веб-приложений
    – В целях безопасности, пожалуйста, создайте свой собственный. Если вы используете учетную запись NETWORK SERVICE, учетная запись компьютера — это учетная запись, используемая веб-приложением для идентификации SPN.

  • Используйте балансировку сетевой нагрузки (NLB) для серверов WFE.
    – вы получаете отказоустойчивость и лучшую производительность

  • Включите согласование при использовании Kerberos. Отключите его при использовании NTLM
    – Проверьте свое веб-приложение с помощью инструмента командной строки adsutil.vbs.

Проверьте, настроен ли Kerberos для вашего веб-приложения.

Запустите командную строку.



(идентификатор вашего сайта вы найдете через IIS Management под идентификатором)
Для Kerberos результат: NTAuthenticationProviders: (STRING) «Negotiate, NTLM»
Для NTLM результат: NTAuthenticationProviders: (STRING) «NTLM»

Для настройки веб-сайта IIS другим методом (в данном примере для Kerberos) используйте следующую команду:


Это необходимо на каждом интерфейсном веб-сервере SharePoint.

Сценарий SQL Server 2005 для проверки авторизации пользователей. метод

Я сделал этот SQL-скрипт, чтобы проверить, какие методы аутентификации используются для баз данных. Это очень полезно, когда вам нужно убедиться, что все работает так, как вы ожидаете.






Результат этого в моей тестовой среде (включая приведенный выше пример CompanyDatabase) показан на рис. 29 ниже.

Изображение 23831
Рисунок 29: Вывод сценария в SQL Management Studio

Вывод

В этой статье я обсудил делегирование Kerberos, олицетворение и настройку Shared Service Provider (SSP). Я поделился своими «заметками с поля» и скриптами для проверки используемого метода аутентификации — это можно использовать и с SharePoint, и с другими конфигурациями.

Настройка Kerberos и особенно устранение различных проблем может потребовать много работы. Моя задача заключалась в том, чтобы дать вам больше информации о методах, позволяющих точно определить причины проблем и решить их. Надеюсь, вы увидите, что эта задача выполнена, а также дадите мне обратную связь.

Ссылки

  • MSDN: блог группы Microsoft SharePoint
  • Microsoft Technet: Настройка проверки подлинности Kerberos (серверы Microsoft Office)
  • База знаний Microsoft: Как заставить Kerberos использовать TCP вместо UDP в Windows
  • База знаний Microsoft: сброс учетных записей компьютеров в Windows
  • Блог Джоэла Олсонса: Протоколы, порты и правила брандмауэра