технологія Просто достатньо адміністрування (JEA), Яка з’явилася у версії PowerShell 5.0, дозволяє делегувати адміністративні повноваження на все, чим можна управляти за допомогою PowerShell. JEA дозволяє надати вашим користувачам права на виконання певних адміністративних завдань, котрі дають їм права адміністратора сервера або сервісу (AD, Exchange, SharePoint і т.д.) За допомогою JEA ви можете вказати яким користувачам можна запускати певні командлети, функції або PowerShell скрипти з правами привілейованих користувачів, а також детально Залогуватися всі дії (схоже на історію команд PowerShell).

Як використовувати PowerShell Just Enough Administration?

Адміністратор створює на сервері конфігураційний файл сесії PowerShell і файл з командами, які може виконувати користувач. На основі цих файлів створюється точка підключення JEA (endpoint), до якої може підключитися користувач і виконати в цій сесію будь-яку з доступних йому команд або програм.

У цьому прикладі ми покажемо приклад, як надати користувачам із групи техпідтримки права на перезавантаження контролера домен і перезапуск на ньому служб DNS і ADDS.

Спочатку потрібно створити конфігураційний файл сесії PowerShell (*.pssc). Для цього на контролері домену виконайте команду:

New-PSSessionConfigurationFile -Path 'C:Program FilesWindowsPowerShelldc_manage.pssc'

Відкрийте створений PSSC файл за допомогою блокнота.

New-PSSessionConfigurationFile pssc конфігураційний файл Just Enough Administration

У 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
Для доступу до мережевих ресурсів можна використовувати керований акаунт group managed service (gMSA): GroupManagedServiceAccount = ‘DomaingMSAUserName’

У директиві RoleDefinitions потрібно вказати групу безпеки AD, для якої дозволено підключатися до даної сесії PowerShell і назва ролі JEA (повинно відповідати імені PSRC файлу, які ми створимо далі).

наприклад,

RoleDefinitions = @{‘TESTspbHelpDesk' = @{ RoleCapabilities="HelpDesk_admins" }}

Назначаємо RoleDefinitions в Just Enough Administration

Збережіть конфігураційний файл сесії.

Перш ніж рухатися далі, перевірте що в файлі конфігурації немає помилок:

Test-PSSessionConfigurationFile -Path  'C:Program FilesWindowsPowerShelldc_manage.pssc'

Test-PSSessionConfigurationFile

Створіть новий каталог, в якому буде зберігається конфігураційний файл 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 файл.

New-PSRoleCapabilityFile PSRC конфігураційний файл зі списком команд і командлетів PowerShell, які повинні бути доступні користувачеві

Тепер потрібно зареєструвати нову конфігурацію PSSession для вашого PSSC файлу:

Register-PSSessionConfiguration –Name testspbHelpDesk -Path 'C:Program FilesWindowsPowerShelldc_manage.pssc'

і перезапустити WinRM:

Restart-Service WinRM

Зареєструвати-PSSessionConfiguration

Ви можете вивести список доступних точок підключення JEA за допомогою командлета:

Get-PSSessionConfiguration|ft name

Get-PSSessionConfiguration

Тепер перевіримо, як працює наша нова конфігурація 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

перевірка роботи Just Enough Administration в powershell - користувачеві може запускати тільки дозволені команди

Історія всіх дій користувача в PowerShell сесії JEA пишеться в лог файли в каталог C: PS JEA_logs.

Отже, JEA дозволяє гранульований видавати користувачам права по запуску PowerShell скриптів і програм від імені адміністратора.

Leave a Reply

Your email address will not be published. Required fields are marked *