Active Directory 2003 - 委派权限被删除

Active Directory 2003 - 委派权限被删除

我有一个在 Windows 2003 上运行的域,采用 2000 模式。我正在尝试创建一个 AD 组来向用户授予临时域管理员权限,以避免向他们授予永久 DA。

我已经在 OU:Groups/Admin/Delegated Permissions 中创建了一个 AD 组:g.Temp_DomainAdmin。

我有一个运行 VBScript 的计划任务来从该组中删除所有用户。

该任务以服务帐户运行,具有有限的权限:s.purge_temp_da

我已将 OU 的权限委托给服务帐户,以允许完全控制其下的组。

手动运行任务非常完美。但每当它在午夜运行时,它就会失败并显示“-2147024891 - 一般访问被拒绝错误”。查看 g.Temp_DomainAdmin 组会发现委派的权限已消失。

有什么想法吗?这是 VBScript:

Option Explicit
Dim objRootDSE, strDomain, objGroup, objUser, strdistinguishedName, arrDnComponents
Const ADS_PROPERTY_DELETE = 4
' Retrieve domain information
Set objRootDSE = GetObject("LDAP://RootDSE")
strDomain = objRootDSE.Get("DefaultNamingContext")
' Bind to the group
Set objGroup = GetObject("LDAP://CN=G.ADM.Temp_DomainAdmin,OU=Delegated Permissions,OU=Admin,OU=Resource Access,OU=groups," & strDomain)

' Iterate through the user objects in the group
For Each objUser In objGroup.Members

    on error resume next

    ' Get the users distinguishedName
    strdistinguishedName = objUser.distinguishedName
    wscript.echo "Removing " & objUser.cn

    ' Remove the user from the group
    objGroup.PutEx ADS_PROPERTY_DELETE, "member", Array(strdistinguishedName)
    objGroup.SetInfo
    wscript.echo "Removed " & objUser.cn

    if err.number <> 0 then
        wscript.echo err.number & " - " & err.description
    end if

    on error goto 0
Next
wscript.echo "Done"

谢谢

答案1

您正在体验 Active Directory 的“adminSDHolder”和“SDProp”功能的影响。此功能的目的是将已知 ACL 应用于属于特殊受保护组的安全主体(用户、组和计算机)。您的“g.Temp_DomainAdmin”组作为“Domain Admins”的成员,已被标记为“adminCount”值“1”,现在受“adminSDHolder”的约束。当此线程运行时,您的“g.Temp_DomainAdmin”组的 ACL 将重置为已知 ACL。(Microsoft对此功能有更详细的描述如果您想了解更多详情。

你可以修改 adminSDHolder ACL以允许您尝试执行的操作,但通常不推荐这种做法。

由于您的脚本有权添加/删除“域管理员”组的成员,因此您最好以具有“域管理员”成员身份的用户身份运行该脚本,从而避免委派脚本的任何权限。 (基本上,如果某人“拥有”脚本执行上下文,即使您尝试安排委派,他们仍然可以使用该脚本将自己添加到“域管理员”中。 委派使事情变得复杂,并且没有提供真正的安全性。)

相关内容