Хочу проверить свое понимание. Это полностью гипотетический сценарий ниже, поскольку я в настоящее время готовлюсь к сертификации.
У меня есть пул приложений IIS с базовым веб-сайтом, который получает доступ к данным из SQL Backend. Я хочу настроить проверку подлинности Kerberos и, следовательно, делегирование.
Идентификатор AppPool, на котором запущен сайт: IISApp01
и имеет SPN, установленное на HTTP/IISSRV01.serverfault.local
.
Теперь все хорошо, но где в Active Directory я устанавливаю параметры делегирования, на объекте компьютера, на котором размещен пул приложений IIS, или в учетной записи пользователя. IISApp01
который является идентификатором AppPool. Кто на самом деле будет делегировать учетные данные моему ящику SQL? Итак - как мне добавить службы в ограниченный список служб, которым я разрешаю делегировать?
Спасибо!
Краткая версия: вы устанавливаете параметры делегирования для участника безопасности (то есть пользователя или компьютера), для которого вы только что настроили SPN, на вкладке Делегирование этого участника в AD Users and Computers.
Более длинная версия: Нет, нет, нет!
Вы не хотите настраивать аутентификацию Kerberos и поэтому делегация. Это отдельные понятия, независимые друг от друга.
Вы можете аутентифицироваться с помощью Kerberos без необходимости ничего делегировать. Фактически, IIS 7 в Windows 2008 и более поздние версии изначально поставляются с конфигурацией по умолчанию, что означает, что любой блок с одним членом домена, где используется его реальное имя хоста, сможет выполнить проверку подлинности Curb. См. «Аутентификация в режиме ядра» и, спойлеры! Вам нужно будет отключить это, чтобы ваш сценарий работал так, как вы его описали *.
Curb Delegation требует, чтобы один участник использовался для завершения одного прыжка с проверкой подлинности Kerberos, а затем выполнял другой от имени исходного запрашивающего участника безопасности (пользователя).
Вернемся к решению:
Итак, для ПК -> IIS -> SQL вам нужно будет определить, под каким именем выполняется каждый процесс:
ПК (пользователь) -> IIS (Учетная запись пула приложений (IISApp01)) -> SQL (Учетная запись службы ("SQLService"))
В этом сценарии каждая учетная запись должна быть учетной записью пользователя домена, и для простоты вам необходимо отключить проверку подлинности в режиме ядра в параметрах встроенной проверки подлинности Windows для рассматриваемого веб-сайта.
Затем вам нужно определить SPN, используемое на каждом переходе, и убедиться, что оно зарегистрировано для каждого из них:
ПК (пользователь) не имеет значения
Уровень IIS: SETSPN -S IISApp01 http / name.used.by.client (это никогда не выполняется автоматически)
Уровень SQL: SETSPN -S SQLService mssql / name.used.by.iis.app: 1433 (возможно, это было автоматически)
тогда у вас должна быть вкладка Delegation, доступная для IISApp01, на которой вы можете указать, что IISApp01 является доверенным для ограниченного делегирования (поиск, выберите SqlService, затем выберите соответствующий SPN, зарегистрированный для SqlService).
Доступен веб-сайт / программа под названием DelegConfig, которая помогает вам это отобразить.
* не совсем верно; есть много решений.