В больших развертываниях Active Directory Domain Services рано или поздно возникает задача делегирования полномочий. Классика, когда отдел технической поддержки ответственный за создание компьютеров, пользователей. Для этого ему необходимо выполнить делегирование в Active Directory, предоставив полномочия в нужных организационных подразделениях. Чуть ранее я описывал процесс делегирования Active Directory Domain Services используя графический инструментарий. Сейчас же пришло время рассмотреть пример автоматизированного делегирования средствами PowerShell. Это позволит упростить процесс и применить его в организациях любых масштабов.
Для делегирования Active Directory будет использоваться сторонний PowerShell модуль – Quest ActiveRoles Management Shell. К сожалению, после 2014 года данный продукт стал платным и более не доступен для загрузки. Последняя доступная версия 1.5.1 Ее можно скачать с моего блога по ссылкам ниже:
- 64-bit : Quest ActiveRolesManagementShellforActiveDirectoryx64 151.zip
- 32-bit : Quest ActiveRolesManagementShellforActiveDirectoryx86 151.zip
Стоит отметить, что хоть версия 2014-го года она прекрасно работает на Windows Server 2019 (последняя версия ОС на момент написания статьи) и модуль выполняет свои функции.
Ниже представлен скрипт для автоматического делегирования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Add-PSSnapin Quest.ActiveRoles.ADManagement # Импортирование модуля $OUs = Import-Csv "C:\tmp\OU.csv" #Импорт CSV файла с конечным перечнем OU где необходимо сделать делегирование foreach ($OU in $OUs) { $BaseOU = $OU.OU # $UsersOU = "OU=Computers,"+ $BaseOU $GroupOU = "OU=Groups,"+ $BaseOU $ComputersOU = "OU=Users,"+ $BaseOU $GroupForDelegation = "CORP\Support_Admins" Add-QADPermission $GroupOU -Account $GroupForDelegation -Rights ReadProperty,WriteProperty -Property (‘member’) -ApplyTo ChildObjects -ApplyToType Group #Делегирование прав управления членством в группах Add-QADPermission $ComputersOU -Account $GroupForDelegation -Rights GenericAll -ApplyTo ChildObjects -ApplytoType Computer Add-QADPermission $ComputersOU -Account $GroupForDelegation -Rights CreateChild,DeleteChild -ApplyTo All -ChildType Computer #Делегирование прав на создание и управления объектами компьютеров Add-QADPermission $UsersOU –Account $GroupForDelegation -Rights GenericAll -ApplyTo ChildObjects -ApplyToType User Add-QADPermission $UsersOU -Account $GroupForDelegation -Rights CreateChild,DeleteChild -ApplyTo All -ChildType User Add-QADPermission $UsersOU -Account $GroupForDelegation -Rights ReadProperty,WriteProperty -Property (‘PwdLastSet’) -ApplyTo ChildObjects -ApplyToType User #Делегирование прав на создание и управление объектами пользователей } |
Пример csv файла: OU
Происходит импортирование с csv файла списка OU структурных подразделений, где необходимо выполнить делегирование. Я приверженец структуры, когда в конкретном OU структурного подразделения находятся группы, пользователи, компьютеры, которые к нему относятся. Поэтому, скрипт добавляет дополнительные OU для формирования конечного DN. В скрипте присутствует цикл, который рекурсивно выполнит действия для каждого указанного OU из csv файла.
Описанный выше скрипт позволит выполнить делегирование в Active Directory максимально быстро. Так же хочу обратить внимание на PowerShell модуль – Quest ActiveRoles Management Shell. Задачи делегирования это малая часть его возможностей. Он обладает внушительным функционалом для задач автоматизации Active Directory.