web-dev-qa-db-ja.com

すべてのドメインコントローラーに対してActiveDirectoryの制約付き委任を設定する簡単な方法はありますか?

ドメイン内のサービスアカウントのAD制約付き委任の構成に取り組み、原則としてすべてが機能するようになりました。ただし、そのためには、特定のドメインコントローラーへのLDAP委任を設定する必要がありました。私たちにとってのそのアプローチの欠点は、新しいDCを導入した場合、新しいDCを含めるように委任を更新しなかった場合、サービスが停止する可能性があることです。ドメイン内のいずれか/すべてのDCに委任する方法はありますか、それとも一度に1つしか実行できませんか?

5
Abs

すべての場合において、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スクリプトに署名してください。

3
iPath