При управлінні доступом і настройками користувачів в домені Active Directory у адміністратора може виникнути завдання створення динамічних груп користувачів AD. Така динамічна група повинна автоматично включити або виключати користувачів з групи в залежності від параметрів облікового запису користувача в домені. Наприклад, ви хочете автоматично додавати користувачів з певної OU в групу, або створити групу користувачів, яка включає в себе всі облікові записи певного відділу (поле Department) і т.д. Динамічні групу дозволяють істотно спростити адміністратору процес призначення повноважень на файлові сервера, робочі станції і т.д.
У Active Directory немає вбудованого функціоналу динамічних групи безпеки. Однак ви можете створити PowerShell скрипт, який автоматично вибирає користувачів з Active Directory за певним критерієм і додає користувачів в певну групу безпеки AD (можна тимчасово) і видаляє з групи облікові записи, які не потрапляють більше під умови формування групи.
При зміні атрибутів користувача в AD скрипт повинен автоматично додавати або виключати користувача з групи.
Для використання подібних динамічних груп користувачів ви повинні у всіх облікових записів тримати максимально актуальними всі поля, що використовуються в умовах вибірки (наприклад, при закладі нових користувачів скриптом PowerShell потрібно відразу вказувати місто, відділ, організацію і т.д).
- В Exchange Server є динамічні групи розсилки (Exchange Dynamic Distribution List), які формуються автоматично на основі критеріїв користувача, наприклад, значення в поле "Компанія" (company в AD), OU де знаходиться користувач, поля City, сервера Exchange, на якому розташований ящик або будь-якого іншого атрибута користувача в Active Directory. Але динамічні групи розсилки можна використовувати тільки для формування груп розсилок, але не груп безпеки;
- Вбудовані динамічні групи є в Azure AD. В цьому каталозі ви можете створити різні правила динамічного членства в групах безпеки і групах Office 365;
- Частково можливості динамічних груп для надання доступу можна замінити функцією Динамічний контроль доступу (Dynamic Access Control - DAC) в Windows Server 2012 і вище;
Припустимо, вам необхідно автоматично додавати всіх користувачів з кількох OU, у яких в поле Департамент (Department) в AD зазначено "Відділ продажів". Я написав такий PowerShell скрипт (для його роботи необхідна наявність модуля Модуль Active Directory для Windows PowerShell, використовується командлет Get-ADUser для отримання інформації про користувачів і командлети управління групами AD - Add-ADGroupMember, Get-ADGroupMember і Remove-ADGroupMember).
## Ім'я вашого домену AD
$ ADDomain = 'dc = winitpro, dc = ru'
## Ім'я динамічної групи
$ ADGroupname = 'mskSales'
## Список OU для пошуку користувачів
$ ADOUs = @ (
"OU = Users, OU = Accounts, OU = SPB, $ ADDomain",
"OU = Users, OU = Accounts, OU = MSK, $ ADDomain"
)
$ Users = @ ()
# Пошук користувачів за вказаними OU
foreach ($ OU in $ ADOUs)
$ Users + = Get-ADUser -SearchBase $ OU -Filter Department -like "Відділ продажів"
foreach ($ user in $ users)
Add-ADGroupMember -Identity $ ADGroupname -Member $ user.samaccountname -ErrorAction SilentlyContinue
## Тепер перевіримо всіх користувачів групи на соотвествие критеріям вибірки і, якщо користувач не відповідає (перенесений в іншу OU, змінений відділ) виключити його з групи
$ Members = Get-ADGroupMember -Identity $ ADGroupname
foreach ($ member in $ members)
if ($ member.distinguishedname -notlike "* OU = Users, OU = Accounts, OU = SPB, $ ADDomain *" -and $ member.distinguishedname -notlike "* OU = Users, OU = Accounts, OU = MSK, $ ADDomain * ")
Remove-ADGroupMember -Identity $ ADGroupname -Member $ member.samaccountname -Confirm: $ false
if ((Get-ADUser -identity $ member -properties Department | Select-Object Department) .department -notlike "Відділ продажів")
Remove-ADGroupMember -Identity $ ADGroupname -Member $ member.samaccountname -Confirm: $ false
Запустіть скрипт і перевірте, що в результаті в групу mskSales автоматично додані всі користувачі з даних OU, у яких в поле Department зазначено "Відділ продажів". Всі користувачі, які не відповідають цим критеріям з цієї групи виключаються.
Цей скрипт потрібно запускати вручну, але краще запускати його регулярно через окреме завдання планувальника Task Scheduler, від імені облікового запису, у якій є права в AD на користувачів і групи (не варто запускати скрипт з-під адміністратора домену, всі необхідні права можна делегувати звичайної сервісної учетке або gmsa аккаунту).
Цей PowerShell скрипт можна використовувати в якості каркаса для створення ваших власних правил формування динамічних груп в AD.