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

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago