Abs*_*Abs 5 active-directory delegation
我们已经为域中的服务帐户配置了 AD 约束委派,原则上我们已经让一切正常工作。但是,要做到这一点,我们必须将 LDAP 委派设置为特定的域控制器。这种方法对我们的不利之处在于,如果我们引入一个新的 DC,如果我们未能更新我们的委派以包含新的 DC,我们可能会出现服务中断。有没有办法委托给域中的任何/所有 DC,或者一次只能做一个?
在所有情况下,Kerberos 委派配置都是一项敏感操作,应由受信任的管理员手动谨慎完成。由于 SPN 包含提供特定服务的计算机的名称,因此不可能一次指定“所有 DC”。那是因为你将来无法知道你的下一个 DC 的名字是什么。
因此,我建议将 SPN 配置步骤添加到升级 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 }
}
Run Code Online (Sandbox Code Playgroud)
注意:此脚本仅用于演示!它未经测试,可能包含错误。使用前先在实验室进行测试!
再次强调,这是敏感操作。如果选择自动化,请务必对 PowerShell 脚本进行签名以防止篡改。
归档时间: |
|
查看次数: |
1775 次 |
最近记录: |