在自动化Active Directory组方面需要帮助

时间:2018-10-25 13:52:08

标签: active-directory

我有一个要求,但不确定是否可行。所以只是想在我开始之前获得建议。

我很少维护一些AD组,例如添加,删除成员。现在,如果成员离开团队或更改其主管经理,则需要将其从特定的广告组中删除。

是否可以通过脚本自动执行此操作。 ?

2 个答案:

答案 0 :(得分:0)

以多种不同的语言轻松完成修改组以添加或删除成员的操作。在每种情况下,您都需要适当的业务逻辑来说“当团队从X更改时,从组Y删除”或“当经理更改到A,然后添加到组B”。

棘手的是确定何时需要进行更改。有很多方法可以做到这一点。

  1. 首先执行更改信息的过程-如果团队和经理是通过HR系统或自定义网站输入的,则数据输入源可用于创建事件。这可以是将Web调用添加到现有Web表单,创建HR数据表的自定义视图,等等。

  2. 如果直接在AD中进行更改,则Active Directory域服务supports change notifications-这会给系统增加很大的负担,因此取决于对象的数量和频率的合理性可能不合理。变化。

  3. 如果不需要立即进行更改,则可以采用批处理方法,您可以使用LDAP筛选器来标识需要更改的成员身份,而不是直接从更改中触发事件。

我使用第三种方法。目录影响很小,并且不需要在AD外部进行更改。缺点是组更改不是立即进行的。由于我们不是在谈论终止帐户(无论如何他们都无法访问系统),所以我相信仍在公司工作的人员在他们仍在小组中时不会滥用其访问权限(并且坦白说,这并不是我在工作时立即将报告更改注册为HR必须输入更改,然后将更改输入到身份管理平台中,然后然后将新信息添加到广告中。我知道在通过HR处理报告更改之前已经在新职位上工作了一两个星期的人。我在用户所在的小组中额外花了大约六个小时的时间,这并不算什么。

如果某个组的成员都应向一组经理报告和/或具有特定部门的值,则应使用以下过滤器:

(&(memberOf=cn=mygroup,ou=specialgroups,dc=company,dc=gTLD)(!((|(manager=dn=Bob,ou=employees,dc=company,dc=com)(department=Engineering)))))

将标识不向Bob汇报或不在工程部门工作的MyGroup成员,请修改该组以删除这些成员。

调整过滤器以要求经理和团队的值都是特定的,并具有有效经理的列表等。您也可以反向查询,以识别工程部门中的任何人或向Bob报告,但不是该组的成员:

(&(!(memberOf=cn=mygroup,ou=specialgroups,dc=company,dc=gTLD))((|(manager=dn=Bob,ou=employees,dc=company,dc=com)(department=Engineering))))

修改组以将那些用户添加为成员。

我已经将组成员资格过滤器存储在组本身的属性上-主要是这样,只要“规则”发生更改,我就不需要重新编译我的代码。然后是一个Web前端,它允许过滤器中列出的个人将经理和部门添加/删除到资格列表中。如果您的组织是相当静态的,那可能是过大了,但是我不想处理很多“哦,现在向弗兰克报告的人也应该在这里”的电话。

答案 1 :(得分:0)

我相信可以有几种方法可以自动执行此操作。

最简单的方法可能是安排一个计划任务,该任务将定期在您的用户中运行,检查用户的团队,主管或任何其他可更改的参数是否对应于当前组成员身份,如果不是,则该任务需要将用户从不再需要成为其成员的组中删除。

另一种实现方法是使用某些第三方软件。使用该方法的好处是,一旦您进行了更改(例如,更改用户的经理),所有其他操作都会立即执行,因此您无需等待计划任务执行。

这是Adaxes的示例,这是我们拥有的解决方案。也有其他解决方案,但是这一解决方案很好地展示和解释了该方法。它允许您拥有在更新用户后触发的自动化规则,并且如果满足正确的条件(例如,更改了Manager属性),则可以自动将用户从组中删除。

这里是一本教程,详细介绍了如何使用基于条件的规则自动执行组成员身份:https://www.adaxes.com/tutorials_AutomatingDailyTasks_AddUsersToGroupsByDepartment.htm