Динамические группы пользователей Active Directory с помощью PowerShell

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

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

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

Для использования подобных динамических групп пользователей вы должны у всех учётных записей держать максимально актуальными все поля, использующиеся в критериях выборки (например, при заведении новых пользователей скриптом PowerShell нужно сразу указывать город, отдел, организацию и т.д).

  • В Exchange Server есть динамические группы рассылки ( Exchange Dynamic Distribution Groups ), которые формируются автоматически на основе критериев пользователя, например, значения в поле ”Компания” (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=remontka,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.

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago