背景
我正在创建一项服务,允许支持人员在非工作时间启用他们的 firecall 帐户(即,如果晚上出现问题,我们无法联系到具有管理员权限的人,支持团队的另一名成员可以在 AD 上启用他们的个人 firecall 帐户,该帐户之前已设置为具有管理员权限)。此服务还记录更改的原因,提醒关键人员,以及一系列其他操作,以确保此访问更改受到审核/以便我们可以确保以正确的方式使用这些临时管理员权限。
为此,我需要运行我服务的服务帐户具有在 Active Directory 上启用用户的权限。理想情况下,我希望将其锁定,以便服务帐户只能启用/禁用特定 AD 安全组中的用户。
问题
如何授予帐户访问权限以启用/禁用 AD 中特定安全组成员的用户?
备份问题
如果无法通过安全组执行此操作,是否有合适的替代方案?即可以通过 OU 完成吗,或者最好编写一个脚本来循环遍历安全组的所有成员并更新对象(firecall 帐户)本身的权限?
提前致谢。
附加标签
(我还没有权限在这里创建新的标签,因此下面列出以帮助进行关键字搜索,直到可以标记它并编辑/删除此位)DSACLS、DSACLS.EXE、FIRECALL、ACCOUNT、SECURITY-GROUP
答案1
修改 Active Directory (AD) 对象属性的权限由访问控制列表 (ACL) 控制。ACL 可显式(无需继承)应用于对象,或通过从对象所在的容器(OU 或容器对象)继承而隐式应用于对象。
将属性的控制权委托给用户或组(顺便说一句,你几乎总是应该将权限委托给组)无非就是更改容器对象(最常见的)或单个非容器对象(如用户帐户和计算机帐户 - 虽然从技术上讲,它们是容器对象)。
ACL 是不是根据对象的安全组成员身份应用于对象,这就是您所声明的您正在寻找的。
最好的办法是将您想要委派控制的用户帐户安排到一个 OU 中,并将控制权委派给该 OU。如果这不可行,那么您只能单独修改每个用户帐户的 ACL。
答案2
大多数第三方身份和访问管理软件可以通过代表用户完成请求来处理这种类型的访问控制,通常使用域管理员凭据(但总是可以进一步锁定)。
不幸的是,Windows 本身无法做到这一点:AD 中的组成员身份实际上只是列在组的成员列表中(member
组的属性,用于生成memberOf
构造的属性),并且在目录中没有结构意义(回想一下,AD 很大程度上只是 LDAP)。相比之下,AD 中的权限是结构定义的,因此您可以根据组未定义的层次结构为帐户授予子树(例如域、OU 或单个用户)上的特定权限。该结构基于域和 OU,类似于任何其他 LDAP 树。如果某些内容未出现在用户的 DN(可分辨名称)中,则不能使用它来管理目录权限。
答案3
委托。您需要将写入权限委托给对象的 userAccountControl 属性。
此委派可应用于安全组的成员。