Computer >> 컴퓨터 >  >> 체계 >> Windows Server

PowerShell JEA(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

Just Enough Administration(JEA ) 기능은 PowerShell 버전 5.0부터 사용할 수 있으며 PowerShell로 관리할 수 있는 모든 항목에 관리 권한을 위임할 수 있습니다. PowerShell JEA의 주요 목적은 권한을 제한하는 것입니다. JEA를 사용하면 관리자가 아닌 사용자에게 서버 또는 서비스 관리자 권한(AD, Exchange, SharePoint 등)을 부여하지 않고 특정 관리 작업을 수행할 수 있는 권한을 부여할 수 있습니다. JEA를 사용하여 관리자 권한으로 특정 cmdlet, 기능 또는 PowerShell 스크립트를 실행하고 모든 작업을 기록할 수 있는 사용자를 설정할 수 있습니다(PowerShell 명령 기록과 유사).

PowerShell Just Enough Administration을 구현하는 방법은 무엇입니까?

관리자는 사용자가 실행할 수 있는 명령이 포함된 PowerShell 세션 구성 파일을 서버에 만듭니다. 파일을 기반으로 JEA 끝점은 사용자가 연결하여 사용할 수 있는 모든 명령이나 프로그램을 실행할 수 있도록 생성됩니다.

여기에서는 관리자가 아닌 사용자에게 도메인 컨트롤러를 재부팅하고 DNS 및 ADDS 서비스를 다시 시작할 수 있는 권한을 부여하는 방법의 예를 보여줍니다.

이 경우 링크를 따라가는 가이드에 따라 사용자에게 도메인 컨트롤러에 대한 RDP 액세스 권한을 부여하거나 AD에서 관리 권한을 위임하거나 Windows 서비스에 대한 권한을 할당하거나 서버를 다시 시작할 수 없습니다. 필요한 모든 제한 사항은 Just Enough Administration 구성에서 설정됩니다.

먼저 PowerShell 세션의 구성 파일(*.pssc ). 이를 수행하려면 도메인 컨트롤러에서 다음 명령을 실행하십시오.

New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

메모장을 사용하여 PSSC 파일을 엽니다.

PowerShell JEA(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

PSSC 파일은 이 JEA 끝점에 연결할 수 있는 사람과 JEA 세션의 명령이 실행되는 계정을 설정합니다.

다음 값을 수정합니다.

  • 세션 유형 기본값에서 RestrictedRemoteServer로 . 이 모드에서는 Clear-Host, Exit-PSSession, Get-Command, Get-FormatData, Get-Help, Measure-Object, Out-Default 또는 Select-Objectl과 같은 PowerShell cmdlet을 사용할 수 있습니다.
  • TranscriptDirectory에서 폴더 지정(생성) 매개변수. 여기에 모든 JEA 사용자 작업이 기록됩니다. TranscriptDirectory = C:\PS\JEA_logs
  • RunAsVirtualAccount 옵션을 통해 가상 관리자 계정(로컬 관리자 또는 도메인 관리자 그룹의 구성원)에서 명령을 실행할 수 있습니다. RunAsVirtualAccount = $true
그룹 관리 서비스 계정(gMSA)을 사용하여 네트워크 리소스에 액세스할 수 있습니다. GroupManagedServiceAccount = 'woshub\gMSAJEAUser'

RoleDefinitions 지시문에서 PowerShell 세션에 연결할 수 있는 AD 보안 그룹과 JEA 역할 이름을 지정합니다(나중에 만들 PSRC 파일 이름과 일치해야 함).

예:

RoleDefinitions = @{‘woshub.com\HelpDesk' = @{ RoleCapabilities = 'HelpDesk_admins' }}

PowerShell JEA(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

세션 구성 파일을 저장합니다.

계속 진행하기 전에 구성 파일에 오류가 없는지 확인하십시오.

Test-PSSessionConfigurationFile -Path  'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

PowerShell JEA(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

JEA 구성 파일을 보관할 새 디렉터리를 만듭니다. 예:

New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory

PSRC 파일은 항상 RoleCapabilities에 있어야 합니다. 해당 모듈의 하위 폴더.

그런 다음 역할 설명이 포함된 구성 PSRC 파일을 만듭니다(위의 PSSC 구성에서 파일 이름 사용).

New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'

PSRC 파일은 현재 JEA 세션에서 수행할 수 있는 작업을 지정합니다. VisibleCmdlet 지시문을 사용하여 지정된 사용자 그룹에 사용할 수 있는 cmdlet(및 해당 유효한 매개변수)을 지정할 수 있습니다.

VisibleExternalCommands에서 옵션에서 외부 명령과 실행을 허용하는 EXE 파일을 지정할 수 있습니다.

예를 들어 다음 구성은 HelpDesk를 허용합니다. 사용자가 종료 명령 또는 Restart-Computer를 사용하여 도메인 컨트롤러를 다시 시작합니다. cmdlet 및 Restart-Service를 사용하여 DNSServer 및 Active Directory 도메인 서비스를 다시 시작합니다. cmdlet.

VisibleCmdlets = 'Restart-Computer', @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'DNS', 'NTDS' }}
VisibleExternalCommands = 'c:\windows\system32\shutdown.exe'

PSRC 파일을 저장합니다.

PowerShell JEA(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

그런 다음 PSSC 파일에 대한 새 PSSession 구성을 등록합니다.

Register-PSSessionConfiguration –Name testHelpDesk -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

WinRM을 다시 시작하십시오.

Restart-Service WinRM

PowerShell JEA(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

사용 가능한 JEA 엔드포인트를 나열할 수 있습니다.

Get-PSSessionConfiguration|ft name

PowerShell JEA(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

새로운 JEA(Just-Enough-Administration) 구성이 작동하는 방식을 살펴보겠습니다. 구성 파일에 지정된 보안 그룹에서 사용자 계정으로 생성된 JEA 엔드포인트에 연결할 수 있습니다. PowerShell Remoting을 사용하여 도메인 컨트롤러에 연결합니다(JEA 끝점 이름을 지정해야 함):

Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk

PowerShell 세션에서 사용 가능한 cmdlet 목록 보기:

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(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

JEA PowerShell 세션의 모든 사용자 작업 기록은 C:\PS\JEA_logs의 파일에 기록됩니다.

PowerShell JEA(Just Enough Administration)를 사용하여 관리자가 아닌 사용자에게 권한 위임

따라서 JEA를 사용하면 특정 PowerShell cmdlet, 스크립트 또는 프로그램을 관리자로 실행할 수 있는 액세스 권한을 사용자에게 세부적으로 부여할 수 있습니다.