This is an old revision of the document!
Выдача прав с помощью JEA
В ОС Windows возможно выдавать права на запуск отдельных командлетов с помощью концепции, которая называется Just Enough Administration (JEA). В данном примере мы рассмотрим - как делегировать права пользователю на управлениями машинами HYPER-V, не делая его ни локальным администратором, ни администратором HYPER-V.
Пользователь сможет подключаться к локальной сессии и выполнить ограниченный администратором набор команд, даже если для этих команд требуются привилегии админа.
Сначала нам необходимо создать файл сессии. Сделаем это следующей командой:
New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\hpv_manage.pssc'
Теперь нужно отредактировать файл сессии hpv_manage.pssc.
В типе сессии выбираем RestrictedRemoteServer. Эта опция создаст минимальное окружение доступных комманд. Если этого не сделать - комманды PS, без которых трудно работать в окружении - придется вручную перечислять в конфигурационном файле, который мы будем редактировать дальше.
Также, устанавливаем параметр TranscriptDirectory. В директории, заданной в параметре - будет храниться информация о конкретных действиях пользователей в рамках их сессий.
Устанавливаем опцию RunAsVirtualAccount. В этом случае команды будут выполняться под виртуализированныйм аккаунтом с привилегиями администратора, что нам и требуется.
В опции RoleDefinitions мы задаем имя группы (локального компьютера или Active Directory) и название роли JEA, которую мы сконфигурируем далее.
Название роли здесь должно точно соответствовать имени файла ролей JEA (не hpv_manage.pssc)
Файл hpv_manage.pssc в нашем случае будет выглядеть следующим образом:
@{ # Version number of the schema used for this document SchemaVersion = '2.0.0.0' # ID used to uniquely identify this document GUID = 'cabe6d8b-7204-672b-a135-f200b090fd44' # Author of this document Author = 'admin' # Description of the functionality provided by these settings # Description = '' # Session type defaults to apply for this session configuration. Can be 'RestrictedRemoteServer' (recommended), 'Empty', or 'Default' SessionType = 'RestrictedRemoteServer' # Directory to place session transcripts for this session configuration TranscriptDirectory = 'C:\PS\JEA_logs' # Whether to run this session configuration as the machine's (virtual) administrator account RunAsVirtualAccount = $true # Scripts to run when applied to a session # ScriptsToProcess = 'C:\ConfigData\InitScript1.ps1', 'C:\ConfigData\InitScript2.ps1' # User roles (security groups), and the role capabilities that should be applied to them when applied to a session RoleDefinitions = @{'.\Пользователи' = @{ RoleCapabilities = 'hyperv-power'}} }
Отсутствие ошибок в файле сессии можно проверить таким командлетом:
Test-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
Теперь нам нужно создать каталог, который будет содержать конфигурационные файлы JEA:
New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory
Папка, содержащая конфигурации всегда должна называться
RoleCapabilities
После того, как папка создана - самое время создать файл конфигурации ролей JEA, который и будет задавать - какие именно командлеты и модули можно использовать.
New-PSRoleCapabilityFile -Path 'C:\Programf iles\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'