我正在尝试使用访问控制条目 (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