
ドメイン内のサービス アカウントに対して AD 制約付き委任を構成する作業を完了し、原則としてすべてが機能するようになりました。ただし、そのためには、特定のドメイン コントローラーへの LDAP 委任を設定する必要がありました。このアプローチの欠点は、新しい DC を導入した場合、委任を更新して新しい DC を含めないと、サービスが停止する可能性があることです。ドメイン内の任意の DC またはすべての DC に委任する方法はありますか。それとも、一度に 1 つしか実行できないのでしょうか。
答え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 スクリプトに必ず署名してください。