两个 OU 上的不同 ACL 具有相同的“保护对象免遭删除”设置

两个 OU 上的不同 ACL 具有相同的“保护对象免遭删除”设置

背景

在配置了 Active Directory 以便将移动计算机的权限委托给帮助台人员之后,我开始听到报告称计算机会“卡”在特定的 OU 中。他们可以将计算机移入,但在尝试将计算机移出时会收到“访问被拒绝”消息。该问题 100% 可重现,并且仅出现在我们域中的少数 OU 中。

两个 OU 均已Protect object from accidental deletion启用。

我已经知道

检查 ACLldp.exe确实发现了一个微小但重要的区别。出于某种原因,只有一个 OU 具有被拒绝的 ACTRL_DS_DELETE_CHILD 属性Everyone

在任一 OU 上打开或关闭该Protect object标志都无法解决问题。它确实按预期修改了 ACL,但ACTRL_DS_DELETE_CHILD无论哪种情况,该标志都完全没有被修改。

我可以使用此解决方案来“修复”特定的 OU:

  1. 关闭Protect object标志
  2. 删除与 Everyone 关联的拒绝 ACE。
  3. Protect object重新开启
  4. 现在是 ACL 的比赛。

难道不同版本的 Active Directory 或远程服务器管理工​​具Protect object在 OU 上实际表示标志的方式会有所不同吗?

问题

什么可能导致这种差异?我该怎么做才能确保在 Active Directory 域中的所有 OU 上纠正此差异?

细节

统一的差异如下所示:

18c18
<       Ace Mask:  0x00010042
---
>       Ace Mask:  0x00010040
20d19
<           ACTRL_DS_DELETE_CHILD

ACE ACL 的细微差异阻止移动计算机对象

如何识别受影响的组织部门

编辑:我编写了一个 PowerShell 脚本来定位设置了此标志的组织单位。

$Base = "OU=MyOU,DC=your,DC=domain,DC=com"
Import-Module ActiveDirectory
Set-Location AD:
Get-ADOrganizationalUnit -SearchBase $Base -filter * |
    ForEach-Object {
        $matches = @(
            (Get-ACL $_.DistinguishedName).access |
            Where-Object {
                $_.IdentityReference -eq "Everyone"
            } |
            Where-Object {
                $_.ActiveDirectoryRights -like "*DeleteChild*"
            }
        )
        if ($matches.length -gt 0) {
            Write-Output $_
        }
    } |
    Format-Table DistinguishedName

答案1

解释

在组织单位上启用该Protect object from accidental deletion标志时,它会影响该对象的 ACL及其父类

  1. 受保护的 OU 获得 {Deny, Everyone, Delete+DeleteSubtree}
  2. 父 OU 获得 {Deny, Everyone, DeleteChildObjects}

父级上的访问控制条目对于实施保护是必要的,但确实会产生意想不到的结果,就像这里观察到的那样。而且无论你切换标志多少次protect否定父级的访问控制条目永远不会被自动删除。

因此,在我使用的 Active Directory 中,任何包含受保护 OU(基本上是任何非叶 OU)的 OU 都具有否定DeleteChild ACE,从而从具有委派权限的用户的角度“捕获”该 OU 中的计算机对象。

通过:在 Technet 论坛上保护对象免遭意外删除

解决方案

通过确保用于委派权限的基本 OU 在 ACL 中具有这两个访问控制条目,可以轻松解决此问题。

  1. {允许、分组、创建/删除计算机对象、此对象及其所有后代}*
  2. {允许、组、删除+删除子树、后代计算机对象}

我已经在目录中的相关 OU 上配置了第一个访问控制条目,但现在我知道这还不够。第一条规则被自动否定ACE 是每次创建受保护的 OU 时设置的。第二条规则允许直接删除对象,从而绕过否定当子 OU 受到保护时设置的条目。

*(第一条规则现在可能已经是多余的了。有人可以证实吗?

答案2

以下是我在测试中移动计算机对象所需的最低权限。

Allow   Descendant Computer objects              Write name
Allow   Descendant Computer objects              Write Name
Allow   Descendant Computer objects              Delete
Allow   This object and all descendant objects   Create Computer objects

必须将权限Delete(第三行)设置为Descendant Computer objects开启,以覆盖可能在要将计算机移出的 OU 的子级上设置的意外删除预防。将权限设置为开启Write Computer objectsThis object and all descendant objects不会不是有效。有两个name权限,一个小写,一个大写,两个都必须设置

相关内容