технологія Просто достатньо адміністрування (JEA), Яка з’явилася у версії PowerShell 5.0, дозволяє делегувати адміністративні повноваження на все, чим можна управляти за допомогою PowerShell. JEA дозволяє надати вашим користувачам права на виконання певних адміністративних завдань, котрі дають їм права адміністратора сервера або сервісу (AD, Exchange, SharePoint і т.д.) За допомогою JEA ви можете вказати яким користувачам можна запускати певні командлети, функції або PowerShell скрипти з правами привілейованих користувачів, а також детально Залогуватися всі дії (схоже на історію команд PowerShell).
Адміністратор створює на сервері конфігураційний файл сесії PowerShell і файл з командами, які може виконувати користувач. На основі цих файлів створюється точка підключення JEA (endpoint), до якої може підключитися користувач і виконати в цій сесію будь-яку з доступних йому команд або програм.
У цьому прикладі ми покажемо приклад, як надати користувачам із групи техпідтримки права на перезавантаження контролера домен і перезапуск на ньому служб DNS і ADDS.
Спочатку потрібно створити конфігураційний файл сесії PowerShell (*.pssc
). Для цього на контролері домену виконайте команду:
New-PSSessionConfigurationFile -Path 'C:Program FilesWindowsPowerShelldc_manage.pssc'
Відкрийте створений PSSC файл за допомогою блокнота.
У PSSC файлі вказується кому можна підключатися до даної endpoint JEA, з-під якої облікового запису будуть виконуватися команди в сесії JEA.
Змініть значення:
- Тип сеансу с За замовчуванням на RestrictedRemoteServer. Даний режим дозволить використовувати следуюшие командлети PowerShell: Clear-Host, Exit-PSSession, Get-Command, Get-FormatData, Get-Help, Measure-Object, Out-Default і Select-Object;
- У параметрі TranscriptDirectory вкажіть каталог (потрібно створити його), в який потрібно Залогуватися всі дії користувачів JEA:
TranscriptDirectory = C:PSJEA_logs
- Варіант RunAsVirtualAccount дозволяє запускати команди з-під віртуального аккаунта адміністратора (члена локальної групи або Administrator або Domain Admin):
RunAsVirtualAccount = $true
GroupManagedServiceAccount = ‘DomaingMSAUserName’
У директиві RoleDefinitions потрібно вказати групу безпеки AD, для якої дозволено підключатися до даної сесії PowerShell і назва ролі JEA (повинно відповідати імені PSRC файлу, які ми створимо далі).
наприклад,
RoleDefinitions = @{‘TESTspbHelpDesk' = @{ RoleCapabilities="HelpDesk_admins" }}
Збережіть конфігураційний файл сесії.
Test-PSSessionConfigurationFile -Path 'C:Program FilesWindowsPowerShelldc_manage.pssc'
Створіть новий каталог, в якому буде зберігається конфігураційний файл JEA, наприклад:
New-Item -Path 'C:Program FilesWindowsPowerShellModulesJEARoleCapabilities ' -ItemType Directory
файли .psrc завжди повинні знаходиться в папці Рольові можливості потрібного вам модуля.
Тепер в цьому каталозі потрібно створити конфігураційний PSRC файл з описом ролі (обов’язково використовувати ім’я файлу з конфігурації PSSC вище).
New-PSRoleCapabilityFile -Path 'C:Program FilesWindowsPowerShellModulesJEARoleCapabilitiesHelpDesk_admins.psrc'
У PSRC файлі вказується що дозволено робити в рамках цієї сесії JEA. У директиві VisibleCmdlets можна вказати командлети (і їх допустимі параметри), які дозволено використовувати для даної групи користувачів.
У параметрі VisibleExternalCommands можна вказати зовнішні команди і exe файли, які дозволено запускати.
Наприклад, наступна конфігурація дозволить користувачам з групи spbHelpDesk перезавантажувати даний контролер домену командою shutdown або Командлети Restart-Computer, і перезапускати служби DNSServer і Active Directory Domain Services Командлети Restart-Service.
VisibleCmdlets="Restart-Computer", @{ Name="Restart-Service"; Parameters = @{ Name="Name"; ValidateSet="DNS", 'NTDS' }} VisibleExternalCommands="c:windowssystem32shutdown.exe"
Збережіть PSRC файл.
Тепер потрібно зареєструвати нову конфігурацію PSSession для вашого PSSC файлу:
Register-PSSessionConfiguration –Name testspbHelpDesk -Path 'C:Program FilesWindowsPowerShelldc_manage.pssc'
і перезапустити WinRM:
Restart-Service WinRM
Get-PSSessionConfiguration|ft name
Тепер перевіримо, як працює наша нова конфігурація Just-Enough-Administration (JEA). Ви можете підключитися до створеної endpoint JEA під користувачем, який входить до групи безпеки, зазначеної в файлі конфігурації. Підключіться через PowerShell Remoting до контролера домену (обов’язково потрібно вказувати ім’я endpoint JEA):
Enter-PSSession -ComputerName dc01 -ConfigurationName testspbHelpDesk
Перевірте список доступних командлетів у вашій сесії PowerShell:
Get-Command
Як ви бачите, є невелика кількість команд, в тому числі Restart-Service та Restart-Computer. Користувачеві дозволено виконувати тільки ті дії, які ми йому дозволили.
Спробуйте перезапустити службу DNS:
Restart-Computer dns
Служба успішно перезапустити (команда виконується від привілейованого користувача з правами адміністратора домену).
Якщо спробувати перезапустити будь-яку іншу службу, яка не описана в файлі конфігурації JEA, з’явиться помилка:
Cannot validate argument on parameter 'Name'. The argument "spooler" does not belong to the set "DNS,NTDS" specifiedby the ValidateSet attribute. Supply an argument that is in the set and then try the command again. + CategoryInfo : InvalidData: (:) [Restart-Service], ParameterBindingValidationException
Історія всіх дій користувача в PowerShell сесії JEA пишеться в лог файли в каталог C: PS JEA_logs.
Отже, JEA дозволяє гранульований видавати користувачам права по запуску PowerShell скриптів і програм від імені адміністратора.