
Мы работали над настройкой ограниченного делегирования AD для учетной записи службы в нашем домене, и в принципе все заработало. Однако для этого нам пришлось настроить делегирование LDAP на определенные контроллеры домена. Недостатком этого подхода для нас является то, что если мы представим новый контроллер домена, у нас может возникнуть сбой в обслуживании, если мы не обновим наше делегирование, включив новый контроллер домена. Есть ли способ делегировать любому/всем контроллерам домена в домене, или это можно сделать только по одному за раз?
решение1
Во всех случаях настройка делегирования Kerberos является чувствительной операцией и должна выполняться с осторожностью, вручную и доверенным администратором. Поскольку SPN содержит имя компьютера, который предлагает определенную службу, невозможно указать "все DC" сразу. Это потому, что вы не можете знать в будущем, как будет называться ваш следующий DC.
Поэтому я бы предложил добавить этапы настройки SPN в ваши процедуры продвижения контроллеров домена.
Фактически, Kerberos Constrained delegate UI заполняет атрибут "msDS-AllowedToDelegateTo". Поэтому было бы легко автоматизировать делегирование с помощью PowerShell, например:
$userWithConstrainedDelegation = "put_username_here"
$domain = Get-ADDomain
$user = Get-ADUser $userWithConstrainedDelegation -Properties "msDS-AllowedToDelegateTo"
$spns = @()
$spnsToAdd = @()
#// Get all domain controllers in the current domain
Get-ADDomainController -Filter * | % {
#// Construct SPNs (an example for ldap SPN)
$spns += "ldap/{0}" -f $_.Name
$spns += "ldap/{0}" -f $_.HostName
$spns += "{0}/{1}" -f $s1,$domain.NetBIOSName
#// Check if SPN should be added
foreach($service in $spns){
if ($user.'msDS-AllowedToDelegateTo' -inotcontains $service){
"ADDING: {0}" -f $service
$spnsToAdd += $service
}
}
$spns = @()
}
#// Add missing SPNs
if ($spnsToAdd.Count -gt 0){
Set-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = $spnsToAdd }
}
ПРИМЕЧАНИЕ:Этот скрипт предназначен только для демо!непроверенныйи может содержать ошибки. Проверьте его в лабораторной среде перед использованием!
Опять же, это чувствительная операция. Если вы выбираете автоматизацию, обязательно подпишите скрипт PowerShell, чтобы предотвратить несанкционированное вмешательство.