有没有简单的方法来设置所有域控制器的Active Directory约束委派

我们已经在我们的域中为服务帐户configuration了AD约束委派,我们已经得到了一切原则上的工作。 但是,为此,我们必须将LDAP委派设置为特定的域控制器。 对于我们来说,这种方法的缺点是,如果我们引入一个新的DC,如果我们没有更新我们的代表团来包括新的DC,那么我们可能会有服务中断。 有没有办法委托给域中的任何/所有数据中心,还是一次只能做一个?

在所有情况下,Kerberos委派configuration都是一个敏感的操作,应该谨慎,手动并由可信的pipe理员来完成。 由于SPN包含提供特定服务的计算机的名称,因此无法一次指定“所有DC”。 那是因为你将来无法知道下一个DC的名字。

所以我会build议你的程序中增加SPNconfiguration步骤来提升DC。

实际上,Kerberos约束的委托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 } } 

注意:此脚本仅用于演示! 这是未经testing ,可能包含错误。 在使用前在LAB中进行testing!

再次,这是敏感的操作。 如果select自动化,请确保签署PowerShell脚本以防止篡改。