ドメイン内のサービスアカウントのAD制約付き委任の構成に取り組み、原則としてすべてが機能するようになりました。ただし、そのためには、特定のドメインコントローラーへのLDAP委任を設定する必要がありました。私たちにとってのそのアプローチの欠点は、新しいDCを導入した場合、新しいDCを含めるように委任を更新しなかった場合、サービスが停止する可能性があることです。ドメイン内のいずれか/すべてのDCに委任する方法はありますか、それとも一度に1つしか実行できませんか?
すべての場合において、Kerberos委任構成は機密性の高い操作であり、手動で、信頼できる管理者が注意して行う必要があります。 SPNには特定のサービスを提供するコンピューターの名前が含まれているため、「すべてのDC」を一度に指定することはできません。これは、次のDCの名前が将来何になるかわからないためです。
したがって、DCを昇格させるための手順にSPN構成手順を追加することをお勧めします。
実際、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 }
}
注:このスクリプトはデモ専用です! 未テストであり、バグが含まれている可能性があります。使用する前にLABでテストしてください!
繰り返しますが、これはデリケートな操作です。自動化を選択する場合は、改ざんを防ぐためにPowerShellスクリプトに署名してください。