JEA 세션 구성JEA Session Configurations

적용 대상: Windows PowerShell 5.0Applies to: Windows PowerShell 5.0

JEA 엔드포인트는 특정한 방법으로 PowerShell 세션 구성 파일을 만들고 등록하여 시스템에 등록합니다.A JEA endpoint is registered on a system by creating and registering a PowerShell session configuration file in a specific way. 세션 구성은 JEA 엔드포인트를 사용할 수 있는 사용자 및 해당 사용자가 액세스할 수 있는 역할을 결정합니다.Session configurations determine who can use the JEA endpoint, and which role(s) they will have access to. 또한 JEA 세션에서 모든 역할의 사용자에게 적용되는 전역 설정을 정의합니다.They also define global settings that apply to users of any role in the JEA session.

이 항목에서는 PowerShell 세션 구성 파일을 만들고 JEA 엔드포인트를 등록하는 방법을 설명합니다.This topic describes how to create a PowerShell session configuration file and register a JEA endpoint.

세션 구성 파일 만들기Create a session configuration file

JEA 엔드포인트를 등록하려면 해당 엔드포인트가 구성되는 방법을 지정해야 합니다.In order to register a JEA endpoint, you need to specify how that endpoint should be configured. 여기서 고려해야 할 옵션은 많지만, 그중 가장 중요한 옵션은 JEA 엔드포인트에 대한 액세스 권한을 가져야 하는 사용자, 해당 사용자에게 할당할 역할, JEA를 사용할 ID 및 JEA 엔드포인트의 이름입니다.There are many options to consider here, the most important of which being who should have access to the JEA endpoint, which roles will they be assigned, which identity will JEA use under the covers, and what will be the name of the JEA endpoint. 이러한 내용은 모두 PowerShell 세션 구성 파일(확장명 .pssc로 끝나는 PowerShell 데이터 파일)에 정의됩니다.These are all defined in a PowerShell session configuration file, which is a PowerShell data file ending with a .pssc extension.

JEA 엔드포인트에 대한 기본 세션 구성 파일을 만들려면 다음 명령을 실행합니다.To create a skeleton session configuration file for JEA endpoints, run the following command.

New-PSSessionConfigurationFile -SessionType RestrictedRemoteServer -Path .\MyJEAEndpoint.pssc

가장 일반적인 구성 옵션만 기본 파일에 기본적으로 포함됩니다.Only the most common configuration options are included in the skeleton file by default. 생성된 PSSC에 적용 가능한 모든 설정을 포함하려면 -Full 스위치를 사용하세요.Use the -Full switch to include all applicable settings in the generated PSSC.

세션 구성 파일은 모든 텍스트 편집기에서 열 수 있습니다.You can open the session configuration file in any text editor. -SessionType RestrictedRemoteServer 필드는 세션 구성이 안전한 관리를 위해 JEA에서 사용됨을 나타냅니다.The -SessionType RestrictedRemoteServer field indicates that the session configuration will be used by JEA for secure management. 이 방법으로 구성된 세션은 NoLanguage 모드에서 작동하며 다음과 같은 8가지 기본 명령(및 별칭)만 사용할 수 있습니다.Sessions configured this way will operate in NoLanguage mode and only have the following 8 default commands (and aliases) available:

  • Clear-Host(cls, clear)Clear-Host (cls, clear)
  • Exit-PSSession(exsn, exit)Exit-PSSession (exsn, exit)
  • Get-Command(gcm)Get-Command (gcm)
  • Get-FormatDataGet-FormatData
  • Get-HelpGet-Help
  • Measure-Object(measure)Measure-Object (measure)
  • Out-DefaultOut-Default
  • Select-Object(select)Select-Object (select)

PowerShell 공급자와 외부 프로그램(실행 파일, 스크립트 등)은 모두 사용할 수 없습니다.No PowerShell providers are available, nor are any external programs (executables, scripts, etc.).

JEA 세션에 대해 구성할 다른 여러 가지 필드도 있습니다.There are several other fields you will want to configure for the JEA session. 이러한 필드는 다음 섹션에 설명되어 있습니다.They are covered in the following sections.

JEA ID 선택Choose the JEA identity

백그라운드에서 JEA에는 연결된 사용자의 명령을 실행할 때 사용할 ID(계정)가 필요합니다.Behind the scenes, JEA needs an identity (account) to use when running a connected user's commands. 세션 구성 파일에서 JEA가 사용할 ID를 결정합니다.You decide which identity JEA will use in the session configuration file.

로컬 가상 계정Local Virtual Account

이 JEA 엔드포인트에서 지원하는 역할이 모두 로컬 컴퓨터를 관리하는 데 사용되고 명령을 실행하는 데 로컬 관리자 계정으로 충분하다면 로컬 가상 계정을 사용하도록 JEA를 구성해야 합니다.If the roles supported by this JEA endpoint are all used to manage the local machine, and a local administrator account is sufficient to run the commands succesfully, you should configure JEA to use a local virtual account. 가상 계정은 특정 사용자에게 고유하고 해당 PowerShell 세션 기간 동안만 지속하는 임시 계정입니다.Virtual accounts are temporary accounts that are unique to a specific user and only last for the duration of their PowerShell session. 구성원 서버 또는 워크스테이션에서 가상 계정은 로컬 컴퓨터의 Administrators 그룹에 속하고 대부분의 시스템 리소스에 액세스할 수 있습니다.On a member server or workstation, virtual accounts belong to the local computer's Administrators group, and have access to most system resources. Active Directory 도메인 컨트롤러에서 가상 계정은 도메인의 Domain Admins 그룹에 속합니다.On an Active Directory Domain Controller, virtual accounts belong to the domain's Domain Admins group.

# Setting the session to use a virtual account
RunAsVirtualAccount = $true

세션 구성에서 지원하는 역할에 광범위한 권한이 필요하지 않으면 필요에 따라 가상 계정이 속할 보안 그룹을 지정할 수 있습니다.If the roles supported by the session configuration do not require such broad privileges, you can optionally specify the security groups to which the virtual account will belong. 구성원 서버 또는 워크스테이션에서 지정된 보안 그룹은 도메인의 그룹이 아니라 로컬 그룹이어야 합니다.On a member server or workstation, the specified security groups must be local groups, not groups from a domain.

하나 이상의 보안 그룹을 지정한 경우 가상 계정은 더 이상 로컬 또는 도메인 관리자 그룹에 속하지 않게 됩니다.When one or more security groups is specified, the virtual account will no longer belong to the local or domain administrators group.

# Setting the session to use a virtual account that only belongs to the NetworkOperator and NetworkAuditor local groups
RunAsVirtualAccount = $true
RunAsVirtualAccountGroups = 'NetworkOperator', 'NetworkAuditor'

그룹 관리 서비스 계정Group Managed Service Account

JEA 사용자가 다른 컴퓨터 또는 웹 서비스와 같은 네트워크 리소스에 액세스해야 하는 시나리오의 경우 gMSA(그룹 관리 서비스 계정)가 사용하기 더 적합한 ID입니다.For scenarios requiring the JEA user to access network resources such as other machines or web services, a group managed service account (gMSA) is a more appropriate identity to use. gMSA 계정은 도메인 내의 모든 컴퓨터에 있는 리소스에 대해 인증하는 데 사용할 수 있는 도메인 ID를 제공합니다.gMSA accounts give you a domain identity which can be used to authenticate against resources on any machine within the domain. gMSA 계정이 제공하는 권한은 액세스하는 리소스에 의해 결정됩니다.The rights the gMSA account gives you is determined by the resources you are accessing. 컴퓨터/서비스 관리자가 명시적으로 gMSA 계정 관리자 권한을 부여하지 않은 한, 자동으로 컴퓨터 또는 서비스에 대한 관리자 권한이 부여되지는 않습니다.You will not automatically have admin rights on any machines or services unless the machine/service administrator has explicitly granted the gMSA account admin privileges.

# Configure JEA sessions to use the gMSA account in the local computer's domain with the sAMAccountName of 'MyJEAgMSA'
GroupManagedServiceAccount = 'Domain\MyJEAgMSA'

gMSA 계정은 다음과 같은 몇 가지 이유로 네트워크 리소스에 액세스해야 하는 경우에만 사용되어야 합니다.gMSA accounts should only be used when access to network resources are required for a few reasons:

  • 모든 사용자가 같은 실행 ID를 공유하므로 gMSA 계정을 사용할 경우 사용자까지 거슬러 올라가 작업을 추적하기가 어렵습니다.It is harder to trace back actions to a user when using a gMSA account since every user shares the same run-as identity. PowerShell 세션 기록 및 로그를 확인하여 사용자와 해당 작업의 상관 관계를 지정해야 합니다.You will need to consult PowerShell session transcripts and logs to correlate users with their actions.

  • gMSA 계정은 연결하는 사용자가 액세스할 필요가 없는 많은 네트워크 리소스에 대한 액세스 권한을 가질 수 있습니다.The gMSA account may have access to many network resources which the connecting user does not need access to. 항상 JEA 세션에서 유효 권한을 제한하여 최소 권한 원칙을 따르도록 합니다.Always try to limit effective permissions in a JEA session to follow the principle of least privilege.

참고

그룹 관리 서비스 계정은 Windows PowerShell 5.1 이상 및 도메인에 가입된 컴퓨터에서만 사용할 수 있습니다.Group managed service accounts are only available in Windows PowerShell 5.1 or newer and on domain-joined machines.

실행 사용자에 대한 자세한 내용More information about run as users

실행 ID 및 실행 ID가 JEA 세션의 보안에 어떤 영향을 주는지에 대한 자세한 내용은 보안 고려 사항 문서에서 확인할 수 있습니다.Additional information about run as identities and how they factor into the security of a JEA session can be found in the security considerations article.

세션 기록Session transcripts

사용자의 세션 기록을 자동으로 기록하려면 JEA 세션 구성 파일을 구성하는 것이 좋습니다.It is recommended that you configure a JEA session configuration file to automatically record transcripts of users' sessions. PowerShell 세션 기록은 연결하는 사용자, 사용자에게 할당된 실행 ID 및 사용자가 실행한 명령에 대한 정보를 포함합니다.PowerShell session transcripts contain information about the connecting user, the run as identity assigned to them, and the commands run by the user. 이러한 기록은 시스템에 대한 특정 변경 내용을 수행한 사용자를 파악해야 하는 감사 팀에 유용할 수 있습니다.They can be useful to an auditing team who needs to understand who performed a specific change to a system.

세션 구성 파일에서 자동 기록을 구성하려면 기록이 저장되는 폴더의 경로를 제공합니다.To configure automatic transcription in the session configuration file, provide a path to a folder where the transcripts should be stored.

TranscriptDirectory = 'C:\ProgramData\JEAConfiguration\Transcripts'

지정된 폴더는 사용자가 폴더 내의 데이터를 수정하거나 삭제하지 못하도록 구성되어야 합니다.The specified folder should be configured to prevent users from modifying or deleting any data in it. 기록은 디렉터리에 대한 읽기 및 쓰기 권한이 필요한 로컬 시스템 계정에 의해 폴더에 기록됩니다.Transcripts are written to the folder by the Local System account, which requires read and write access to the directory. 표준 사용자는 폴더에 대한 액세스 권한이 없어야 하고, 제한된 보안 관리자 집합은 기록을 감사하기 위한 액세스 권한이 있어야 합니다.Standard users should have no access to the folder, and a limited set of security administrators should have access to audit the transcripts.

사용자 드라이브User drive

연결하는 사용자가 명령을 실행하기 위해 JEA 엔드포인트로/에서 파일을 복사해야 할 경우 세션 구성 파일에서 사용자 드라이브를 사용하도록 설정할 수 있습니다.If your connecting users will need to copy files to/from the JEA endpoint in order to run a command, you can enable the user drive in the session configuration file. 사용자 드라이브는 각 연결하는 사용자에 대해 고유한 폴더에 매핑되는 PSDrive입니다.The user drive is a PSDrive that is mapped to a unique folder for each connecting user. 이 폴더는 전체 파일 시스템에 대한 액세스 권한을 제공하거나 FileSystem 공급자를 노출하지 않고 각 연결하는 사용자가 시스템으로/에서 파일을 복사할 수 있는 공간 역할을 합니다.This folder serves as a space for them to copy files to/from the system, without giving them access to the full file system or exposing the FileSystem provider. 사용자 드라이브 콘텐츠는 세션 전체에서 유지되어 네트워크 연결이 중단될 수 있는 상황을 수용합니다.The user drive contents are persistent across sessions to accommodate situations where network connectivity may be interrupted.

MountUserDrive = $true

기본적으로 사용자 드라이브를 사용하여 사용자당 최대 50MB의 데이터를 저장할 수 있습니다.By default, the user drive allows you to store a maximum of 50MB of data per user. UserDriveMaximumSize 필드를 사용하여 사용자가 사용할 수 있는 데이터의 양을 제한할 수 있습니다.You can limit the amount of data a user can consume with the UserDriveMaximumSize field.

# Enables the user drive with a per-user limit of 500MB (524288000 bytes)
MountUserDrive = $true
UserDriveMaximumSize = 524288000

사용자 드라이브의 데이터가 유지되지 않게 하려는 경우 매일 밤 자동으로 폴더를 정리하도록 시스템에 대한 예약된 작업을 구성할 수 있습니다.If you do not want data in the user drive to be persistent, you can configure a scheduled task on the system to automatically clean up the folder every night.

참고

사용자 드라이브는 Windows PowerShell 5.1 이상에서만 사용할 수 있습니다.The user drive is only available in Windows PowerShell 5.1 or newer.

역할 정의Role definitions

세션 구성 파일의 역할 정의는 역할에 대한 사용자의 매핑을 정의합니다.Role definitions in a session configuration file define the mapping of users to roles. JEA 엔드포인트가 등록되면 이 필드에 포함된 모든 사용자 또는 그룹에 자동으로 해당 JEA 엔드포인트에 대한 사용 권한이 부여됩니다.Every user or group included in this field will automatically be granted permission to the JEA endpoint when it is registered. 각 사용자 또는 그룹은 해시 테이블의 키로 한 번만 포함될 수 있지만, 역할은 여러 개가 할당될 수 있습니다.Each user or group can be included as a key in the hashtable only once, but can be assigned multiple roles. 역할 기능의 이름은 .psrc 확장명이 없는 역할 기능 파일의 이름이어야 합니다.The name of the role capability should be the name of the role capability file, without the .psrc extension.

RoleDefinitions = @{
    'CONTOSO\JEA_DNS_ADMINS'    = @{ RoleCapabilities = 'DnsAdmin', 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_OPERATORS' = @{ RoleCapabilities = 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_AUDITORS'  = @{ RoleCapabilities = 'DnsAuditor' }
}

사용자가 역할 정의에서 둘 이상의 그룹에 속하는 경우 각 역할에 대한 액세스 권한을 얻게 됩니다.If a user belongs to more than one group in the role definition, they will get access to the roles of each. 두 역할이 같은 cmdlet에 대한 액세스 권한을 부여하는 경우 사용자에게 최대로 허용되는 매개 변수 집합이 부여됩니다.If two roles grant access to the same cmdlets, the most permissive parameter set will be granted to the user.

역할 정의 필드에서 로컬 사용자 또는 그룹을 지정할 경우 백슬래시 앞에 컴퓨터 이름을 사용해야 합니다(localhost 또는 . 제외).When specifying local users or groups in the role definitions field, be sure to use the computer name (not localhost or .) before the backslash. $env:computername 변수를 검사하여 컴퓨터 이름을 확인할 수 있습니다.You can check the computer name by inspecting the $env:computername variable.

RoleDefinitions = @{
    'MyComputerName\MyLocalGroup' = @{ RoleCapabilities = 'DnsAuditor' }
}

역할 기능 검색 순서Role capability search order

위의 예제에 표시된 것처럼 역할 기능은 역할 기능 파일의 일반 이름(확장명이 없는 파일 이름)으로 참조됩니다.As shown in the example above, role capabilities are referenced by the flat name (filename without the extension) of the role capability file. 시스템에서 일반 이름이 같은 역할 기능을 여러 개 사용할 수 있는 경우 PowerShell에서는 암시적 검색 순서를 사용하여 유효 역할 기능 파일을 선택합니다.If multiple role capabilities are available on the system with the same flat name, PowerShell will use its implicit search order to select the effective role capability file. 이름이 같은 모든 역할 기능 파일에 대한 액세스 권한을 부여하지는 않습니다.It will not give access to all role capability files with the same name.

JEA에서는 $env:PSModulePath 환경 변수를 사용하여 역할 기능 파일을 검색할 경로를 확인합니다.JEA uses the $env:PSModulePath environment variable to determine which paths to scan for role capability files. JEA는 이러한 경로 각각에서 "RoleCapabilities" 하위 폴더가 포함된 유효한 PowerShell 모듈을 찾습니다.Within each of those paths, JEA will look for valid PowerShell modules that contain a "RoleCapabilities" subfolder. 모듈을 가져오는 경우와 마찬가지로, JEA는 같은 이름의 사용자 지정 역할 기능보다 Windows와 함께 제공되는 역할 기능을 선호합니다.As with importing modules, JEA prefers role capabilities that are shipped with Windows to custom role capabilities with the same name. 명명에 관한 다른 모든 충돌의 경우는 Windows에서 디렉터리의 파일을 열거하는 순서에 따라 우선순위가 결정됩니다(사전 순이 아닐 수 있음).For all other naming conflicts, precedence is determined by the order in which Windows enumerates the files in the directory (not guaranteed to be alphabetically). 원하는 이름과 일치하는 첫 번째 역할 기능으로 검색된 것이 연결 사용자에게 사용됩니다.The first role capability file found that matches the desired name will be used for the connecting user.

같은 이름의 역할 기능이 두 개 이상 있는 경우 역할 기능의 검색 순서를 장담할 수 없으므로, 컴퓨터에서 역할 기능의 이름이 고유한지 확인할 것을 강력하게 권장합니다.Since the role capability search order is not deterministic when two or more role capabilities share the same name, it is strongly recommended that you ensure role capabilities have unique names on your machine.

조건부 액세스 규칙Conditional access rules

RoleDefinitions 필드에 포함된 모든 사용자 및 그룹에는 자동으로 JEA 엔드포인트에 대한 액세스 권한이 부여됩니다.All users and groups included in the RoleDefinitions field are automatically granted access to JEA endpoints. 조건부 액세스 규칙을 사용하여 이 액세스 권한을 구체화하고 사용자가 사용자에게 할당된 역할에 영향을 주지 않는 추가 보안 그룹에 속해야 하도록 할 수 있습니다.Conditional access rules allow you to refine this access and require users to belong to additional security groups which do not impact the roles which they are assigned. 이 기능은 "Just In Time" 권한 있는 액세스 권한 관리 솔루션, 스마트 카드 인증 또는 다른 다단계 인증 솔루션을 JEA와 통합하려는 경우 유용할 수 있습니다.This can be useful if you want to integrate a "just in time" privileged access management solution, smartcard authentication, or other multifactor authentication solution with JEA.

조건부 액세스 규칙은 세션 구성 파일에서 RequiredGroups 필드에 정의됩니다.Conditional access rules are defined in the RequiredGroups field in a session configuration file. 여기서 'And' 및 'Or' 키를 사용하여 규칙을 구성하는 해시 테이블(필요에 따라 중첩됨)을 제공할 수 있습니다.There, you can provide a hashtable (optionally nested) that uses 'And' and 'Or' keys to construct your rules. 다음은 이 필드를 사용하는 방법의 몇 가지 예입니다.Here are some examples of how to leverage this field:

# Example 1: Connecting users must belong to a security group called "elevated-jea"
RequiredGroups = @{ And = 'elevated-jea' }

# Example 2: Connecting users must have signed on with 2 factor authentication or a smart card
# The 2 factor authentication group name is "2FA-logon" and the smart card group name is "smartcard-logon"
RequiredGroups = @{ Or = '2FA-logon', 'smartcard-logon' }

# Example 3: Connecting users must elevate into "elevated-jea" with their JIT system and have logged on with 2FA or a smart card
RequiredGroups = @{ And = 'elevated-jea', @{ Or = '2FA-logon', 'smartcard-logon' }}

참고

조건부 액세스 규칙은 Windows PowerShell 5.1 이상에서만 사용할 수 있습니다.Conditional access rules are only available in Windows PowerShell 5.1 or newer.

기타 속성Other properties

세션 구성 파일도 역할 기능 파일이 수행할 수 있는 모든 작업을 수행할 수 있지만, 연결하는 사용자에게 다른 명령에 대한 액세스 권한을 부여하는 기능은 제외됩니다.Session configuration files can also do everything a role capability file can do, just without the ability to give connecting users access to different commands. 모든 사용자가 특정 cmdlet, 함수 또는 공급자에 액세스할 수 있게 하려는 경우 세션 구성 파일에서 직접 이렇게 할 수 있습니다.If you want to allow all users access to specific cmdlets, functions, or providers, you can do so right in the session configuration file. 세션 구성 파일에서 지원되는 속성의 전체 목록을 보려면 Get-Help New-PSSessionConfigurationFile -Full을 실행합니다.For a full list of supported properties in the session configuration file, run Get-Help New-PSSessionConfigurationFile -Full.

세션 구성 파일 테스트Testing a session configuration file

Test-PSSessionConfigurationFile cmdlet을 사용하여 세션 구성 파일을 테스트할 수 있습니다.You can test a session configuration using the Test-PSSessionConfigurationFile cmdlet. 구문이 올바른지 확인하기 위해 텍스트 편집기를 사용하여 수동으로 pssc 파일을 편집한 경우 세션 구성 파일을 테스트하는 것이 좋습니다.It is strongly recommended that you test your session configuration file if you have edited the pssc file manually using a text editor to ensure the syntax is correct. 세션 구성 파일이 이 테스트를 통과하지 못하면 시스템에 등록될 수 없습니다.If a session configuration file does not pass this test, it will not be able to be successfully registered on the system.

샘플 세션 구성 파일Sample session configuration file

다음은 JEA에 대한 세션 구성을 만들고 유효성을 검사하는 방법을 보여 주는 전체 예제입니다.Below is a complete example showing how to create and validate a session configuration for JEA. 역할 정의는 편의성과 가독성을 위해 생성되어 $roles 변수에 저장되어 있습니다.Note that the role definitions are created and stored in the $roles variable for convenience and readability. 이는 작업을 수행하기 위한 요구 사항은 아닙니다.It is not a requirement to do so.

$roles = @{
    'CONTOSO\JEA_DNS_ADMINS'    = @{ RoleCapabilities = 'DnsAdmin', 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_OPERATORS' = @{ RoleCapabilities = 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_AUDITORS'  = @{ RoleCapabilities = 'DnsAuditor' }
}

New-PSSessionConfigurationFile -SessionType RestrictedRemoteServer -Path .\JEAConfig.pssc -RunAsVirtualAccount -TranscriptDirectory 'C:\ProgramData\JEAConfiguration\Transcripts' -RoleDefinitions $roles -RequiredGroups @{ Or = '2FA-logon', 'smartcard-logon' }
Test-PSSessionConfigurationFile -Path .\JEAConfig.pssc # should yield True

세션 구성 파일 업데이트Updating session configuration files

역할에 대한 사용자의 매핑을 비롯한 JEA 세션 구성의 속성을 변경해야 하는 경우 JEA 세션 구성을 등록 취소한 후 다시 등록해야 합니다.If you need to change properties of a JEA session configuration, including the mapping of users to roles, you must unregister and re-register the JEA session configuration. JEA 세션 구성을 다시 등록할 때 원하는 변경 내용을 포함하는 업데이트된 PowerShell 세션 구성 파일을 사용합니다.When you re-register the JEA session configuration, use an updated PowerShell session configuration file that includes your desired changes.

다음 단계Next steps