Динамични потребителски групи на Active Directory с PowerShell

Когато управлява настройките за достъп и потребители в домейн на Active Directory, администраторът може да има задачата да създаде динамични потребителски групи AD. Такава динамична група трябва автоматично да включва или изключва потребители от групата, в зависимост от настройките на потребителския акаунт в домейна. Например, искате автоматично да добавите потребители от конкретен OU към група или да създадете потребителска група, която включва всички акаунти на определен отдел (поле на отдел) и т.н. Динамичните групи позволяват на администратора да опрости процеса на задаване на разрешения на файлови сървъри, работни станции и т.н..

Active Directory няма вградена функционалност за динамични групи за сигурност. Можете обаче да създадете PowerShell скрипт, който автоматично избира потребителите от Active Directory според конкретен критерий и добавя потребителите към конкретна група за сигурност на AD (можете временно) и премахва акаунти от групата, които вече не попадат в условията на групиране.

При промяна на потребителските атрибути в AD скриптът трябва автоматично да добави или изключи потребителя от групата.

За да използвате такива динамични потребителски групи, трябва да запазите всички полета, използвани в критериите за подбор, възможно най-подходящи за всички акаунти (например, когато създавате нови потребители със скрипта PowerShell, трябва незабавно да посочите града, отдела, организацията и т.н.).

  • В Exchange Server има динамични групи за дистрибуция (Exchange Dynamic Distribution List), които се формират автоматично въз основа на потребителски критерии, например стойностите в полето "company" (компания в AD), OU, където се намира потребителят, City City, Exchange сървърът, на който поле или друг потребителски атрибут в Active Directory. Но динамичните групи за разпространение могат да се използват само за формиране на групи за разпространение, но не и за групи за сигурност;
  • В Azure AD има вградени динамични групи. В тази директория можете да създадете различни динамични правила за членство за групи и групи за сигурност на Office 365;
  • Отчасти способността на динамичните групи да предоставят достъп може да бъде заменена от функцията за динамичен контрол на достъпа (DAC) в Windows Server 2012 и по-нови версии;

Да предположим, че трябва автоматично да добавите всички потребители от множество ОУ, чието поле „Отдел“ в 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 = потребители, OU = акаунти, OU = SPB, $ ADDomain“,
„OU = потребители, OU = акаунти, OU = MSK, $ ADDomain“
)
$ потребители = @ ()
# Търсете потребители по посочени OU
foreach ($ OU в $ ADOUs)
$ users + = Get-ADUser -SearchBase $ OU -Filter Отдел по продажби -подобен отдел

foreach ($ потребител в $ потребители)

Add-ADGroupMember -Identity $ ADGroupname -Member $ user.samaccountname -ErrorAction SilentlyContinue

## Сега ще проверим всички потребители на групата за съответствие с критериите за подбор и, ако потребителят не отговаря (преместен в друг ОУ, отдел е променен), ще го изключим от групата
$ members = Get-ADGroupMember -Identity $ ADGroupname
foreach ($ member в $ members)

if ($ member.distinguishedname -notlike "* OU = Потребители, OU = акаунти, OU = SPB, $ ADDomain *" -и $ member.distinguishedname -notlike "* OU = Потребители, OU = Акаунти, 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



Стартирайте скрипта и проверете дали в резултат на това всички потребители от данните на OU, за които е зададено „отдел продажби“ в полето „Отдел“, автоматично се добавят към групата mskSales. Всички потребители, които не отговарят на тези критерии, са изключени от тази група..

Този скрипт трябва да се стартира ръчно, но е по-добре да го стартирате редовно чрез отделна задача на инструмента за планиране на задачи, от името на акаунт, който има права за AD за потребители и групи (не стартирайте скрипта от администратора на домейна, можете да делегирате всички необходими права на обичайните акаунт за услуга или gmsa акаунт).

Този скрипт на PowerShell може да се използва като рамка за създаване на собствени правила за създаване на динамични групи в AD.