Изменение группы для добавления или удаления членов легко выполняется на разных языках.В каждом случае вам нужна соответствующая бизнес-логика, чтобы сказать «когда команда изменится с X, удалить из группы Y» или «когда менеджер сменится на A, добавить в группу B».
Хитрый бит определяет, когда необходимо внести изменение.Есть много способов сделать это.
Подключите процесс, который в первую очередь меняет информацию - если команда и менеджер вводятся через систему управления персоналом или пользовательский веб-сайт, источник ввода данных можно использовать для созданиямероприятие.Это может быть добавление веб-вызова в существующую веб-форму, создание настраиваемого представления таблицы данных HR и т. Д.
Если изменения вносятся непосредственно в AD, доменные службы Active Directory поддерживает уведомления об изменениях - это может добавить значительную нагрузку на систему, поэтому может быть или не быть разумным в зависимости от количества объектов и частоты изменений.
Еслиизменение не обязательно должно быть немедленным, пакетный подход может быть жизнеспособным, и вы можете использовать фильтр LDAP для определения членства, которое нужно изменить, а не инициировать события непосредственно из изменений.
Я использую третий метод.Это оказывает незначительное влияние на каталоги и не требует внесения изменений вне AD.Недостатком является то, что смена группы не является немедленной.Поскольку мы не говорим о прекращенных учетных записях (которые в любом случае не смогут получить доступ к системе), я верю людям, которые все еще работают в компании, не злоупотреблять их доступом в течение времени, пока они находятся в группе (иЧестно говоря, это не значит, что изменение отчета регистрируется сразу же, где я работаю - HR должен ввести изменение, затем изменение подается в платформу управления идентификацией, , затем , новая информация превращает ее в AD.Я знаю людей, которые находились на новой должности в течение недели или двух до того, как изменения в отчетности были обработаны через HR. Мои дополнительные шесть часов, когда пользователь входит в группу, не представляют особой сложности).
Если все члены группы должны отчитываться перед набором менеджеров и / или иметь конкретное значение отдела, такой фильтр как:
(&(memberOf=cn=mygroup,ou=specialgroups,dc=company,dc=gTLD)(!((|(manager=dn=Bob,ou=employees,dc=company,dc=com)(department=Engineering)))))
будет идентифицировать любого, кто является членом MyGroup, который не отчитывается передБоб или работа в Техническом отделе - измените группу, чтобы удалить тех участников.
Настройте фильтр таким образом, чтобы значения менеджера и команды были конкретными, иметь список допустимых менеджеров и т. Д. Вы также можете отменить запрос, чтобы определить, кто из является вИнженерный отдел или отчеты Бобу, но он не является членом группы:
(&(!(memberOf=cn=mygroup,ou=specialgroups,dc=company,dc=gTLD))((|(manager=dn=Bob,ou=employees,dc=company,dc=com)(department=Engineering))))
Измените группу, чтобы добавить этих пользователей в качестве участников.
Я сохранил квалификационный фильтр членства в группе для атрибута самой группы - в первую очередь, чтобы мне не нужно было перекомпилировать мой код всякий раз, когда «правило» изменяется.Затем есть веб-интерфейс, который позволяет лицам, указанным в фильтре, добавлять / удалять менеджеров и отделы в список квалификации.Это может быть излишним, если ваша организация довольно статична, но я не хотел иметь дело с группой «о, теперь люди, которые отчитываются перед Фрэнком, тоже должны быть здесь».