Configurações de Sessão de JEAJEA Session Configurations

Aplica-se a: Windows PowerShell 5.0Applies to: Windows PowerShell 5.0

Um ponto de extremidade JEA é registrado em um sistema através da criação e registro de um arquivo de configuração de sessão do PowerShell de uma maneira específica.A JEA endpoint is registered on a system by creating and registering a PowerShell session configuration file in a specific way. As configurações de sessão determinam quem pode usar o ponto de extremidade JEA e a quais funções eles terão acesso.Session configurations determine who can use the JEA endpoint, and which role(s) they will have access to. Elas também definem configurações globais que se aplicam aos usuários de qualquer função na sessão JEA.They also define global settings that apply to users of any role in the JEA session.

Este tópico descreve como criar um arquivo de configuração de sessão do PowerShell e registrar um ponto de extremidade JEA.This topic describes how to create a PowerShell session configuration file and register a JEA endpoint.

Criar um arquivo de configuração de sessãoCreate a session configuration file

Para registrar um ponto de extremidade JEA, você precisa especificar como esse ponto de extremidade deve ser configurado.In order to register a JEA endpoint, you need to specify how that endpoint should be configured. Há muitas opções a serem considerados aqui e as mais importantes delas são: quem devem ter acesso ao ponto de extremidade JEA, quais funções serão atribuídas a eles, qual identidade será usada pelo JEA nos bastidores e qual será o nome do ponto de extremidade 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. Todas essas opções são definidas em um arquivo de configuração de sessão do PowerShell, que é um arquivo de dados do PowerShell que termina com uma extensão .pssc.These are all defined in a PowerShell session configuration file, which is a PowerShell data file ending with a .pssc extension.

Para criar um arquivo de configuração esqueleto de sessão para pontos de extremidade JEA, execute o comando a seguir.To create a skeleton session configuration file for JEA endpoints, run the following command.

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

Dica

Apenas as opções de configuração mais comuns são incluídas no arquivo esqueleto por padrão.Only the most common configuration options are included in the skeleton file by default. Use a opção -Full para incluir todas as configurações aplicáveis no PSSC gerado.Use the -Full switch to include all applicable settings in the generated PSSC.

Você pode abrir o arquivo de configuração de sessão em qualquer editor de texto.You can open the session configuration file in any text editor. O campo -SessionType RestrictedRemoteServer indica que a configuração da sessão será usada pelo JEA para gerenciamento seguro.The -SessionType RestrictedRemoteServer field indicates that the session configuration will be used by JEA for secure management. As sessões configuradas dessa forma funcionarão no modo NoLanguage e só terão estes oito comandos (e aliases) padrão disponíveis:Sessions configured this way will operate in NoLanguage mode and only have the following 8 default commands (and aliases) available:

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

Não estão disponíveis provedores de PowerShell, nem programas externos (executáveis, scripts, etc).No PowerShell providers are available, nor are any external programs (executables, scripts, etc.).

Há vários outros campos que você pode configurar para a sessão JEA.There are several other fields you will want to configure for the JEA session. Eles são abordados nas seções a seguir.They are covered in the following sections.

Escolha a identidade JEAChoose the JEA identity

Nos bastidores, o JEA precisa de uma identidade (conta) para usar ao executar os comandos do usuário conectado.Behind the scenes, JEA needs an identity (account) to use when running a connected user's commands. Você pode decidir qual identidade JEA será usada no arquivo de configuração de sessão.You decide which identity JEA will use in the session configuration file.

Conta Virtual LocalLocal Virtual Account

Se as funções com suporte nesse ponto de extremidade JEA são usadas para gerenciar o computador local e uma conta de administrador local for suficiente para executar os comandos com êxito, você deverá configurar o JEA para usar uma conta virtual local.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. As contas virtuais são contas temporárias exclusivas para um usuário específico e permanecem ativas apenas durante a sessão do PowerShell.Virtual accounts are temporary accounts that are unique to a specific user and only last for the duration of their PowerShell session. Em um servidor membro ou estação de trabalho, as contas virtuais pertencem ao grupo de Administradores do computador local e têm acesso à maioria dos recursos do sistema.On a member server or workstation, virtual accounts belong to the local computer's Administrators group, and have access to most system resources. Em um Controlador de Domínio do Active Directory, as contas virtuais pertencem ao grupo Administradores do domínio do domínio.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

Se as funções com suporte pela configuração de sessão não exigem esses privilégios amplos, você pode, opcionalmente, especificar os grupos de segurança aos quais a conta virtual pertencerá.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. Em um servidor membro ou estação de trabalho, os grupos de segurança especificados devem ser grupos locais e não grupos de um domínio.On a member server or workstation, the specified security groups must be local groups, not groups from a domain.

Quando um ou mais grupos de segurança forem especificados, a conta virtual não pertencerá mais ao grupo local de administradores local ou grupo de administradores de domínio.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'

Conta de Serviço Gerenciado de GrupoGroup Managed Service Account

Para cenários que exigem que o usuário JEA acesse recursos de rede, como outros computadores ou serviços Web, uma gMSA (conta de serviço gerenciado de grupo) é uma identidade mais apropriada a ser usada.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. As contas gMSA fornecem uma identidade de domínio que pode ser usada para autenticar para recursos em qualquer computador no domínio.gMSA accounts give you a domain identity which can be used to authenticate against resources on any machine within the domain. Os direitos concedidos pela conta gMSA são determinados pelos recursos que você está acessando.The rights the gMSA account gives you is determined by the resources you are accessing. Você não terá automaticamente direitos de administrador em todos os computadores ou serviços, a menos que o administrador de computador/serviços tenha explicitamente concedido privilégios de administrador à conta 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'

As contas gMSA só devem ser usadas quando for necessário o acesso aos recursos de rede por alguns motivos:gMSA accounts should only be used when access to network resources are required for a few reasons:

  • É mais difícil rastrear ações de um usuário ao usar uma conta gMSA, pois cada usuário compartilha a mesma identidade Run As.It is harder to trace back actions to a user when using a gMSA account since every user shares the same run-as identity. Você precisará consultar transcrições e logs de sessão do PowerShell para correlacionar os usuários e suas ações.You will need to consult PowerShell session transcripts and logs to correlate users with their actions.

  • A conta gMSA pode ter acesso a vários recursos de rede que o usuário conectado não necessita acessar.The gMSA account may have access to many network resources which the connecting user does not need access to. Sempre tente limitar as permissões efetivas em uma sessão JEA para seguir o princípio de privilégio mínimo.Always try to limit effective permissions in a JEA session to follow the principle of least privilege.

Observação

As contas de serviço gerenciado de grupo estão disponíveis apenas no Windows PowerShell 5.1 ou mais recente e em computadores que ingressaram no domínio.Group managed service accounts are only available in Windows PowerShell 5.1 or newer and on domain-joined machines.

Mais informações sobre usuários Run AsMore information about run as users

Informações adicionais sobre identidades Run As e como elas influenciam na segurança de uma sessão JEA podem ser encontradas no artigo considerações de segurança.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.

Transcrições de sessãoSession transcripts

É recomendável configurar um arquivo de configuração de sessão JEA para registrar automaticamente as transcrições de sessões de usuários.It is recommended that you configure a JEA session configuration file to automatically record transcripts of users' sessions. As transcrições de sessão do PowerShell contêm informações sobre o usuário conectado, a identidade Run As atribuída a ele e os comandos executados pelo usuário.PowerShell session transcripts contain information about the connecting user, the run as identity assigned to them, and the commands run by the user. Elas podem ser úteis para uma equipe de auditoria que precisa entender quem executou uma alteração específica em um sistema.They can be useful to an auditing team who needs to understand who performed a specific change to a system.

Para configurar a transcrição automática no arquivo de configuração de sessão, forneça um caminho para uma pasta em que as transcrições devem ser armazenadas.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'

A pasta especificada deve ser configurada para impedir que os usuários modifiquem ou excluam qualquer dado nela.The specified folder should be configured to prevent users from modifying or deleting any data in it. As transcrições são gravadas na pasta pela conta Sistema Local, que requer acesso de leitura e gravação no diretório.Transcripts are written to the folder by the Local System account, which requires read and write access to the directory. Os usuários padrão não devem ter nenhum acesso à pasta e um conjunto limitado de administradores de segurança deve ter acesso para auditar as transcrições.Standard users should have no access to the folder, and a limited set of security administrators should have access to audit the transcripts.

Unidade de usuárioUser drive

Se os usuários que estão se conectando precisarem copiar arquivos do ou para o ponto de extremidade JEA para executar um comando, você poderá habilitar a unidade do usuário no arquivo de configuração de sessão.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. A unidade de usuário é um PSDrive que é mapeada para uma pasta exclusiva para cada usuário que está se conectando.The user drive is a PSDrive that is mapped to a unique folder for each connecting user. Essa pasta serve como um espaço para que eles possam copiar arquivos do sistema ou para o sistema, sem fornecer acesso ao sistema de arquivos completo ou expor o provedor 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. Os conteúdos da unidade de usuário são persistentes entre as sessões para se adaptar a situações em que a conectividade de rede pode ser interrompida.The user drive contents are persistent across sessions to accommodate situations where network connectivity may be interrupted.

MountUserDrive = $true

Por padrão, a unidade de usuário permite que seja armazenado um máximo de 50 MB de dados por usuário.By default, the user drive allows you to store a maximum of 50MB of data per user. Você pode limitar a quantidade de dados que um usuário pode consumir com o campo 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

Se quiser que os dados na unidade de usuário não sejam persistentes, você poderá configurar uma tarefa agendada no sistema para limpar automaticamente a pasta toda noite.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.

Observação

A unidade de usuário só está disponível no Windows PowerShell 5.1 ou mais recente.The user drive is only available in Windows PowerShell 5.1 or newer.

Definições de funçãoRole definitions

As definições de função em um arquivo de configuração de sessão definem o mapeamento de usuários para as funções.Role definitions in a session configuration file define the mapping of users to roles. Cada usuário ou grupo incluído nesse campo automaticamente receberá permissão para o ponto de extremidade JEA quando ele for registrado.Every user or group included in this field will automatically be granted permission to the JEA endpoint when it is registered. Cada usuário ou grupo pode ser incluído como uma chave na tabela de hash somente uma vez, mas pode ser atribuído a várias funções.Each user or group can be included as a key in the hashtable only once, but can be assigned multiple roles. O nome da capacidade de função deve ser o nome do arquivo de capacidade de função, sem a extensão .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' }
}

Se um usuário pertencer a mais de um grupo na definição de função, ele receberá acesso às funções de cada grupo.If a user belongs to more than one group in the role definition, they will get access to the roles of each. Se duas funções de concedem acesso aos mesmos cmdlets, o conjunto de parâmetros mais permissivo será concedido ao usuário.If two roles grant access to the same cmdlets, the most permissive parameter set will be granted to the user.

Ao especificar usuários ou grupos locais no campo de definições de função, use o nome do computador (não localhost ou .) antes da barra invertida.When specifying local users or groups in the role definitions field, be sure to use the computer name (not localhost or .) before the backslash. Você pode verificar o nome do computador inspecionando a variável $env:computername.You can check the computer name by inspecting the $env:computername variable.

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

Ordem de pesquisa de capacidade de funçãoRole capability search order

Conforme mostrado no exemplo acima, os recursos de função são referenciados pelo nome simples (nome sem a extensão) do arquivo de capacidade de função.As shown in the example above, role capabilities are referenced by the flat name (filename without the extension) of the role capability file. Se vários recursos de função estão disponíveis no sistema com o mesmo nome simples, o PowerShell usará sua ordem de pesquisa implícita para selecionar o arquivo de capacidade de função efetivo.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. Ele não dará acesso a todos os arquivos de capacidade de função com o mesmo nome.It will not give access to all role capability files with the same name.

A JEA usa a variável de ambiente do $env:PSModulePath para determinar quais caminhos verificar para os arquivos de capacidade da função.JEA uses the $env:PSModulePath environment variable to determine which paths to scan for role capability files. Em cada um desses caminhos, a JEA procurará módulos válidos do PowerShell que contenham uma subpasta "RoleCapabilities".Within each of those paths, JEA will look for valid PowerShell modules that contain a "RoleCapabilities" subfolder. Como com a importação de módulos, a JEA prefere as capacidades de função que são fornecidas com o Windows para capacidades de função personalizadas com o mesmo nome.As with importing modules, JEA prefers role capabilities that are shipped with Windows to custom role capabilities with the same name. Para todos os outros conflitos de nomenclatura, a precedência é determinada pela ordem na qual o Windows enumera os arquivos no diretório (não é garantido que seja em ordem alfabética).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). O primeiro arquivo de capacidade de função encontrado que corresponder ao nome será usado para o usuário que está se conectando.The first role capability file found that matches the desired name will be used for the connecting user.

Como a ordem de pesquisa de capacidade de função não é determinista quando duas ou mais capacidades de função compartilham o mesmo nome, é altamente recomendável garantir que as capacidades de função tenham nomes exclusivos em seu computador.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.

Regras de acesso condicionalConditional access rules

Todos os usuários e grupos incluídos no campo RoleDefinitions recebem automaticamente acesso a pontos de extremidade JEA.All users and groups included in the RoleDefinitions field are automatically granted access to JEA endpoints. As regras de acesso condicional permitem que você refine esse acesso e exigem que os usuários façam parte de grupos de segurança adicionais, o que não afeta as funções atribuídas a eles.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. Isso pode ser útil se você deseja integrar uma solução de gerenciamento de acesso privilegiado "just-in-time", uma autenticação de cartão inteligente ou outra solução de autenticação multifator com o 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.

As regras de acesso condicional são definidas no campo RequiredGroups em um arquivo de configuração de sessão.Conditional access rules are defined in the RequiredGroups field in a session configuration file. Lá, você pode fornecer uma tabela de hash (opcionalmente aninhada) que usa chaves 'E' e 'Ou' para construir suas regras.There, you can provide a hashtable (optionally nested) that uses 'And' and 'Or' keys to construct your rules. Aqui estão alguns exemplos de como utilizar esse campo: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' }}

Observação

As regras de acesso condicional só estão disponíveis no Windows PowerShell 5.1 ou mais recente.Conditional access rules are only available in Windows PowerShell 5.1 or newer.

Outras propriedadesOther properties

Os arquivos de configuração de sessão também podem fazer tudo o que um arquivo de recurso de função pode fazer, mas sem a capacidade de fornecer aos usuários que estão se conectando o acesso a comandos diferentes.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. Se quiser permitir que todos os usuários acessem provedores, funções ou cmdlets específicos, você poderá fazer isso diretamente no arquivo de configuração de sessão.If you want to allow all users access to specific cmdlets, functions, or providers, you can do so right in the session configuration file. Para obter uma lista completa das propriedades com suporte no arquivo de configuração de sessão, execute Get-Help New-PSSessionConfigurationFile -Full.For a full list of supported properties in the session configuration file, run Get-Help New-PSSessionConfigurationFile -Full.

Testando um arquivo de configuração de sessãoTesting a session configuration file

Você pode testar uma configuração de sessão usando o cmdlet Test-PSSessionConfigurationFile.You can test a session configuration using the Test-PSSessionConfigurationFile cmdlet. É altamente recomendável que você teste o arquivo de configuração de sessão caso tenha editado o arquivo pssc manualmente usando um editor de texto, a fim de garantir que a sintaxe está correta.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. Se um arquivo de configuração de sessão não passar nesse teste, não poderá ser registrado com êxito no sistema.If a session configuration file does not pass this test, it will not be able to be successfully registered on the system.

Arquivo de configuração de sessão de exemploSample session configuration file

Abaixo há um exemplo completo que mostra como criar e validar uma configuração de sessão para o JEA.Below is a complete example showing how to create and validate a session configuration for JEA. Observe que as definições de função são criadas e armazenadas na variável $roles para conveniência e legibilidade.Note that the role definitions are created and stored in the $roles variable for convenience and readability. Não é um requisito fazer assim.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

Atualizando arquivos de configuração de sessãoUpdating session configuration files

Se você precisar alterar as propriedades de uma configuração de sessão JEA, incluindo o mapeamento de usuários às funções, você deverá cancelar o registro e registrar novamente a configuração de sessão 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. Quando registrar novamente a configuração da sessão JEA, use um arquivo de configuração de sessão do PowerShell atualizado que inclui as alterações desejadas.When you re-register the JEA session configuration, use an updated PowerShell session configuration file that includes your desired changes.

Próximas etapasNext steps