Active Directory OU 访问控制条目 ACE 问题 .Net PowerShell 和 dsa.msc 差异

Active Directory OU 访问控制条目 ACE 问题 .Net PowerShell 和 dsa.msc 差异

我正在尝试使用访问控制条目 (ACE) 来自动化 Active Directory (AD) 组织单位 (OU) 的委派权限。

但是,我不完全了解 Active Directory 模式,并且我面临的一个问题是,我的 PowerShell 结果与通过 dsa.msc(Active Directory 用户和计算机)设置的手动配置的 OU 权限不匹配。

UI 中有一个设置,即 InheritedObjectType bf967a86-0de6-11d0-a285-00aa003049e2,它对应于“Application-Version”,我无法通过 PowerShell 或 dsacls.exe 来设置它

有谁知道为什么当我设置 UI 时,我会在 Application-Version InheritedObjectType 上收到这个额外的 ActiveDirectoryRight CreateChild,以及如何通过 powershell 复制该设置?

我在用着win_ad_dacls.ps1 作者:Jordan Borean以免重新发明轮子(这样我就可以通过 ansible 幂等地和本地地运行它)。

最终目标

授予用户/组对 OU 所有子对象的所有计算机对象的以下权限:

  • 创建所有子对象
  • 读取所有属性
  • 写入所有属性
  • 重设密码

测试/验证方法

Get-Acl 'AD:\OU=TestOU,OU=Servers,OU=TestADACE,DC=domain,DC=local' | Select-Object -ExpandProperty Access | Where-Object {$_.IdentityReference -match 'domain\\testuser'}

实际设置的 UI 设置

这些是我在 Active Directory 用户和计算机 (dsa.msc) 中使用计算机对象上的委派向导设置此文档的最终目标部分下的 6 个权限后,在测试/验证方法中运行上面的 PowerShell 时看到的设置。

ActiveDirectoryRights : CreateChild, ListChildren, ReadProperty, GenericWrite
InheritanceType       : Descendents
ObjectType            : 00000000-0000-0000-0000-000000000000
InheritedObjectType   : bf967a86-0de6-11d0-a285-00aa003049e2
ObjectFlags           : InheritedObjectAceTypePresent
AccessControlType     : Allow
IdentityReference     : domain\testuser
IsInherited           : False
InheritanceFlags      : ContainerInherit
PropagationFlags      : InheritOnly

ActiveDirectoryRights : CreateChild
InheritanceType       : Descendents
ObjectType            : ddc790ac-af4d-442a-8f0f-a1d4caa7dd92
InheritedObjectType   : bf967a86-0de6-11d0-a285-00aa003049e2
ObjectFlags           : ObjectAceTypePresent, InheritedObjectAceTypePresent
AccessControlType     : Allow
IdentityReference     : domain\testuser
IsInherited           : False
InheritanceFlags      : ContainerInherit
PropagationFlags      : InheritOnly

ActiveDirectoryRights : ExtendedRight
InheritanceType       : Descendents
ObjectType            : 00299570-246d-11d0-a768-00aa006e0529
InheritedObjectType   : bf967a86-0de6-11d0-a285-00aa003049e2
ObjectFlags           : ObjectAceTypePresent, InheritedObjectAceTypePresent
AccessControlType     : Allow
IdentityReference     : domain\testuser
IsInherited           : False
InheritanceFlags      : ContainerInherit
PropagationFlags      : InheritOnly

我无法理解的事物

在通过 UI (dsa.msc) 设置的设置中,我无法弄清楚如何自动化这个设置。我担心跳过此设置会破坏某些功能。

ActiveDirectoryRights : CreateChild
InheritanceType       : Descendents
ObjectType            : ddc790ac-af4d-442a-8f0f-a1d4caa7dd92
InheritedObjectType   : bf967a86-0de6-11d0-a285-00aa003049e2
ObjectFlags           : ObjectAceTypePresent, InheritedObjectAceTypePresent
AccessControlType     : Allow
IdentityReference     : domain\testuser
IsInherited           : False
InheritanceFlags      : ContainerInherit
PropagationFlags      : InheritOnly

我可以使用下面的 Ansible Playbook 设置的 Powershell 设置这个 Ansible 模块

这些是我在设置下面 Ansible 任务下列出的权限后在测试/验证方法中运行上面的 PowerShell 时看到的设置。

ActiveDirectoryRights : CreateChild, ListChildren, ReadProperty, GenericWrite
InheritanceType       : Descendents
ObjectType            : 00000000-0000-0000-0000-000000000000
InheritedObjectType   : bf967a86-0de6-11d0-a285-00aa003049e2
ObjectFlags           : InheritedObjectAceTypePresent
AccessControlType     : Allow
IdentityReference     : domain\testuser
IsInherited           : False
InheritanceFlags      : ContainerInherit
PropagationFlags      : InheritOnly

ActiveDirectoryRights : ExtendedRight
InheritanceType       : Descendents
ObjectType            : 00299570-246d-11d0-a768-00aa006e0529
InheritedObjectType   : bf967a86-0de6-11d0-a285-00aa003049e2
ObjectFlags           : ObjectAceTypePresent, InheritedObjectAceTypePresent
AccessControlType     : Allow
IdentityReference     : domain\testuser
IsInherited           : False
InheritanceFlags      : ContainerInherit
PropagationFlags      : InheritOnly

Ansible 任务

  - name: Broad access on Computer Objects in App OU
    state: present
    path: "OU=TestOU,OU=Servers,OU=TestADACE,DC=domain,DC=local"
    rights: CreateChild, ListChildren, ReadProperty, GenericWrite
    inheritance_type: Descendents
    inherited_object_type: Computer
    object_type: 00000000-0000-0000-0000-000000000000
    access: allow
    account: domain\testuser
    
  - name: Reset Password Permission on Computer Objects in App OU
    state: present
    path: "OU=TestOU,OU=Servers,OU=TestADACE,DC=domain,DC=local"
    rights: ExtendedRight
    inheritance_type: Descendents
    inherited_object_type: Computer
    object_type: 00299570-246d-11d0-a768-00aa006e0529 # the rightsGuid for the extended right User-Force-Change-Password (“Reset Password”) class
    access: allow
    account: domain\testuser

相关内容