Динамические группы пользователей 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=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
}
}

динамическая группа AD - условия добавления и исключения пользователей
Запустите скрипт и проверьте, что в результате в группу mskSales автоматически добавлены все пользователи из данных OU, у которых в поле Department указано “Отдел продаж”. Все пользователи, которые не соответствуют этим критериям из этой группы исключаются.
powershell скрипт для формирования динамических группо пользователей в AD

Этот скрипт нужно запускать вручную, но лучше запускать его регулярно через отдельное задание планировщика Task Scheduler, от имени учетной записи, у которой имеются права в AD на пользователей и группы (не стоит запускать скрипт из-под администратора домена, все необходимые права можно делегировать обычной сервисной учетке или gmsa аккаунту).

Этот PowerShell скрипт можно использовать в качестве каркаса для создания ваших собственных правил формирования динамических групп в AD.


Предыдущая статья Следующая статья


Комментариев: 10 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)