выдача_прав_с_помощью_jea

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
выдача_прав_с_помощью_jea [2023/06/23 12:53] jpвыдача_прав_с_помощью_jea [2025/02/11 09:16] (current) jp
Line 1: Line 1:
 ===== Выдача прав с помощью JEA ===== ===== Выдача прав с помощью JEA =====
  
-В ОС Windows возможно выдавать права на запуск отдельных командлетов с помощью концепции, которая называется //Just Enough Administration (JEA)//. В данном примере мы рассмотрим - как делегировать права пользователю на управлениями машинами HYPER-V, не делая его ни локальным администратором, ни администратором HYPER-V.+В ОС Windows возможно выдавать права на запуск отдельных командлетов с помощью концепции, которая называется **//Just Enough Administration (JEA)//**
  
-Пользователь сможет подключаться к локальной сессии и выполнить ограниченный администратором набор команд, даже если для этих команд требуются привилегии админа. +В данном примере мы рассмотрим - как делегировать права пользователю на управлениями машинами HYPER-V, не делая его ни локальным администратором, ни администратором HYPER-V. Все действия и редактируемые файлы находятся на одном локальном компьютере. Пользователь, которого ограничиваем - сможет подключаться к локальной сессии и выполнить заданный администратором набор команд, даже если для этих команд требуются привилегии админа.  
 + 
 +//Можно ограничивать не только команды, но и их **параметры**.//  
 + 
 +Приступим к настройке.
  
 Сначала нам необходимо создать файл сессии. Сделаем это следующей командой: Сначала нам необходимо создать файл сессии. Сделаем это следующей командой:
Line 11: Line 15:
 Теперь нужно отредактировать файл сессии //hpv_manage.pssc//. Теперь нужно отредактировать файл сессии //hpv_manage.pssc//.
  
-В типе сессии выбираем **//RestrictedRemoteServer//**. Эта опция создаст минимальное окружение доступных комманд. Если этого не сделать - комманды PS, без которых трудно работать в окружении придется вручную перечислять в конфигурационном файле, который мы будем редактировать дальше. +В типе сессии выбираем**//RestrictedRemoteServer//**. Эта опция создаст минимальное окружение доступных комманд. Если этого не сделать - комманды PS, без которых трудно работать в окружениипридется вручную перечислять в конфигурационном файле (*.psrc), который мы будем редактировать дальше. 
  
 Также, устанавливаем параметр //**TranscriptDirectory**//. В директории, заданной в параметре - будет храниться информация о конкретных действиях пользователей в рамках их сессий. Также, устанавливаем параметр //**TranscriptDirectory**//. В директории, заданной в параметре - будет храниться информация о конкретных действиях пользователей в рамках их сессий.
  
-Устанавливаем опцию //**RunAsVirtualAccount**//. В этом случае команды будут выполняться под виртуализированныйм аккаунтом с привилегиями администратора, что нам и требуется. +Устанавливаем опцию //**RunAsVirtualAccount**//. В этом случае команды будут выполняться под виртуализированным аккаунтом с привилегиями администратора, что нам и требуется. 
  
 В опции //**RoleDefinitions**// мы задаем имя группы (локального компьютера или Active Directory) и название роли JEA, которую мы сконфигурируем далее. В опции //**RoleDefinitions**// мы задаем имя группы (локального компьютера или Active Directory) и название роли JEA, которую мы сконфигурируем далее.
  
-:!: //Название роли здесь должно точно соответствовать имени файла ролей JEA (не hpv_manage.pssc)//+:!: //Название роли здесь должно точно соответствовать имени файла ролей JEA (не hpv_manage.pssc, а hyperv-power.psrc)//
  
 Файл //hpv_manage.pssc// в нашем случае будет выглядеть следующим образом: Файл //hpv_manage.pssc// в нашем случае будет выглядеть следующим образом:
Line 64: Line 68:
  
    New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory    New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory
-:!: Папка, содержащая конфигурации всегда должна называться ''RoleCapabilities''+:!: Папка, содержащая конфигурациивсегда должна называться ''RoleCapabilities''
  
 После того, как папка создана - самое время создать файл конфигурации ролей JEA, который и будет задавать - какие именно командлеты и модули можно использовать. После того, как папка создана - самое время создать файл конфигурации ролей JEA, который и будет задавать - какие именно командлеты и модули можно использовать.
 <WRAP prewrap> <WRAP prewrap>
 <code> <code>
-New-PSRoleCapabilityFile -Path 'C:\Program files\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'+New-PSRoleCapabilityFile -Path 'C:\Program files\WindowsPowerShell\Modules\JEA\RoleCapabilities\hyperv-power.psrc'
 </code> </code>
 </WRAP> </WRAP>
Line 75: Line 79:
 Отредактируем этот файл, поправив следующие директивы. Отредактируем этот файл, поправив следующие директивы.
  
-//**VisibleCmdlets**// - задает какие, собственно, командлеты и скакими параметрами можно использовать. В данном примере мы разрешаем командлеты, связанные с управлением HYPER-V. +//**VisibleCmdlets**// - задает какие, собственно, командлеты и с какими параметрами можно использовать. В данном примере мы разрешаем командлеты, связанные с управлением HYPER-V. 
  
 //**ModulesToImport**// - в данном случае нам требуется подключить в сессию модуль HYPER-V, т.к. без него перечисленные командлеты вообще не будут запущены. //**ModulesToImport**// - в данном случае нам требуется подключить в сессию модуль HYPER-V, т.к. без него перечисленные командлеты вообще не будут запущены.
  
-Пример файла psrc, в котором разрешается управление HYPER-V+Пример файла //hyperv-power.psrc//, в котором разрешается управление HYPER-V:
 <WRAP prewrap> <WRAP prewrap>
 <code> <code>
Line 146: Line 150:
 После правки файла, нам нужно зарегистрировать конфигурацию: После правки файла, нам нужно зарегистрировать конфигурацию:
  
-Register-PSSessionConfiguration –Name hyperv-power -Path 'C:\Program Files\WindowsPowerShell\hpv_manage.pssc'+   Register-PSSessionConfiguration –Name hyperv-power -Path 'C:\Program Files\WindowsPowerShell\hpv_manage.pssc'
  
 На всякий случай перезапускаем службу WinRM На всякий случай перезапускаем службу WinRM
  
    Restart-Service WinRM    Restart-Service WinRM
-Убрать регистрацию конфигурации можно следующей командой:+Убрать созданную регистрацию конфигурации можно следующей командой:
    UnRegister-PSSessionConfiguration –Name hyperv-power    UnRegister-PSSessionConfiguration –Name hyperv-power
-{{tag>Microsoft PowerShell HYPER-V}}+После перезапуска службы WinRM пользователь, с ограниченными правами, входящий в группу, которую мы указали в файле //hpv_manage.pssc// - может войти в созданную сессию командой с указанием конфигурации:
  
 +   Enter-PSSession -ComputerName localhost -ConfigurationName hyperv-power
 +Если он выполнит //get-command//, то получит вот такой список:
  
 +<code>
 +CommandType     Name                                               Version    Source
 +-----------     ----                                               -------    ------
 +Function        Clear-Host
 +Function        Exit-PSSession
 +Function        Get-Command
 +Function        Get-FormatData
 +Function        Get-Help
 +Function        Measure-Object
 +Function        Out-Default
 +Function        Select-Object
 +Cmdlet          Get-Command                                        7.2.11.500 Microsoft.PowerShell.Core
 +Cmdlet          Get-VM                                             2.0.0.0    Hyper-V
 +Cmdlet          Restart-VM                                         2.0.0.0    Hyper-V
 +Cmdlet          Resume-VM                                          2.0.0.0    Hyper-V
 +Cmdlet          Start-VM                                           2.0.0.0    Hyper-V
 +Cmdlet          Stop-VM                                            2.0.0.0    Hyper-V
 +Cmdlet          Suspend-VM                                         2.0.0.0    Hyper-V
 +</code>
 +
 +Как видим, пользователю доступны командлеты, позволяющие управлять виртуальными машинами хоста, но создавать или удалять он их не может.
 +
 +Если нам требуется запстить определенное действие одной командой (без интерактивной сесии), то можно использовать //Invoke-Command//. Например, такой командой можно посмотреть статус виртуальных машин:
 +
 +   Invoke-Command -ComputerName localhost -ConfigurationName hyperv-power -ScriptBlock {get-vm}
 +=== Материалы по теме ===
 +
 +https://winitpro.ru/index.php/2020/09/29/powershell-just-enough-administration-jea-delegirovaniye-admin-prav-polzovatelyam/ \\
 +https://4sysops.com/archives/just-enough-administration-jea-part-2-an-example/ \\
 +https://secops.one/2019/11/05/hyper-v-just-enough-administration-jea/
 +{{tag>Microsoft PowerShell HYPER-V}}
выдача_прав_с_помощью_jea.1687524839.txt.gz · Last modified: 2023/06/23 12:53 by jp