Compartir a través de


Configuraciones de sesión de JEA

Un punto de conexión de JEA se registra en un sistema mediante la creación y el registro de un archivo de configuración de sesión de PowerShell. Las configuraciones de sesión definen quién puede usar el punto de conexión de JEA y los roles a los que tienen acceso. También definen la configuración global que se aplica a todos los usuarios de la sesión de JEA.

Creación de un archivo de configuración de sesión

Para registrar un punto de conexión de JEA, debe especificar cómo se configura ese punto de conexión. Hay muchas opciones que se deben tener en cuenta. Las opciones más importantes son:

  • Quién tiene acceso al punto de conexión de JEA
  • Qué roles se pueden asignar
  • Qué identidad de JEA se usa en segundo plano
  • Nombre del punto de conexión de JEA

Estas opciones se definen en un archivo de datos de PowerShell con una .pssc extensión conocida como archivo de configuración de sesión de PowerShell. El archivo de configuración de sesión se puede editar mediante cualquier editor de texto.

Ejecute el comando siguiente para crear un archivo de configuración de plantilla en blanco.

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

Sugerencia

Solo las opciones de configuración más comunes se incluyen en el archivo de plantilla de forma predeterminada. Use el conmutador -Full para incluir todas las opciones aplicables en el PSSC generado.

El -SessionType RestrictedRemoteServer campo indica que JEA usa la configuración de sesión para la administración segura. Las sesiones de este tipo funcionan en modo NoLanguage y solo tienen acceso a los siguientes comandos predeterminados (y alias):

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

No hay proveedores de PowerShell disponibles ni ningún programa externo (ejecutables o scripts).

Para obtener más información sobre los modos de lenguaje, consulte about_Language_Modes.

Elección de la identidad de JEA

En segundo plano, JEA necesita una identidad (cuenta) para usarla al ejecutar los comandos de un usuario conectado. Debe definir qué identidad usa JEA en el archivo de configuración de sesión.

Cuenta virtual local

Las cuentas virtuales locales son útiles cuando todos los roles definidos para el punto de conexión de JEA se usan para administrar la máquina local y una cuenta de administrador local es suficiente para ejecutar los comandos correctamente. Las cuentas virtuales son cuentas temporales que son únicas para un usuario específico y solo duran durante su sesión de PowerShell. En un servidor miembro o estación de trabajo, las cuentas virtuales pertenecen al grupo Administradores del equipo local. En un controlador de dominio de Active Directory, las cuentas virtuales pertenecen al grupo Administradores de dominio del dominio.

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

Si los roles definidos por la configuración de sesión no requieren privilegios administrativos completos, puede especificar los grupos de seguridad a los que pertenecerá la cuenta virtual. En un servidor miembro o estación de trabajo, los grupos de seguridad especificados deben ser grupos locales, no grupos de un dominio.

Cuando se especifican uno o varios grupos de seguridad, la cuenta virtual no se asigna al grupo local o de administradores de dominio.

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

Nota:

A las cuentas virtuales se les concede temporalmente el derecho Inicio de sesión como servicio en la directiva de seguridad del servidor local. Si ya se ha concedido este derecho a una de las instancias de VirtualAccountGroups especificadas en la directiva, la cuenta virtual individual ya no se agregará ni quitará de la directiva. Esto puede ser útil en escenarios como controladores de dominio en los que se auditan estrechamente las revisiones de la directiva de seguridad del controlador de dominio. Esto solo está disponible en Windows Server 2016 con el paquete acumulativo de noviembre de 2018 o posterior y Windows Server 2019 con el paquete acumulativo de enero de 2019 o posterior.

Cuenta de servicio administrada por grupo

Una cuenta de servicio administrada por grupo (GMSA) es la identidad adecuada que se debe usar cuando los usuarios de JEA necesitan acceder a recursos de red, como recursos compartidos de archivos y servicios web. Las cuentas GMSA proporcionan una identidad de dominio que se usa para autenticarse con recursos de cualquier máquina del dominio. Los derechos que proporciona una GMSA están determinados por los recursos a los que accede. No tiene derechos de administrador en ninguna máquina o servicio a menos que el administrador del equipo o servicio haya concedido explícitamente esos derechos a la GMSA.

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

Los GMSA solo deben usarse cuando sea necesario:

  • Cuando se usa una GMSA, es difícil realizar el seguimiento de las acciones hasta un usuario. Todos los usuarios comparten la misma identidad de ejecución. Debe revisar las transcripciones y los registros de sesión de PowerShell para correlacionar usuarios individuales con sus acciones.

  • La GMSA puede tener acceso a muchos recursos de red a los que el usuario que se conecta no necesita acceso. Intente limitar siempre los permisos efectivos en una sesión de JEA para seguir el principio de privilegios mínimos.

Nota:

Las cuentas de servicio administradas de grupo solo están disponibles en máquinas unidas a un dominio mediante PowerShell 5.1 o versiones posteriores.

Para más información sobre cómo proteger una sesión de JEA, consulte el artículo consideraciones de seguridad .

Transcripciones de sesión

Se recomienda configurar un punto de conexión de JEA para registrar automáticamente transcripciones de las sesiones de los usuarios. Las transcripciones de sesión de PowerShell contienen información sobre el usuario que se conecta, la ejecución como identidad asignada a ellos y los comandos ejecutados por el usuario. Pueden ser útiles para un equipo de auditoría que necesite comprender quién realizó un cambio específico en un sistema.

Para configurar la transcripción automática en el archivo de configuración de sesión, proporcione una ruta de acceso a una carpeta donde se deben almacenar las transcripciones.

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

La cuenta del sistema local escribe transcripciones en la carpeta, lo que requiere acceso de lectura y escritura al directorio. Los usuarios estándar no deben tener acceso a la carpeta. Limite el número de administradores de seguridad que tienen acceso para auditar las transcripciones.

Unidad de usuario

Si los usuarios que se conectan necesitan copiar archivos hacia o desde el punto de conexión de JEA, puede habilitar la unidad de usuario en el archivo de configuración de sesión. La unidad de usuario es una PSDrive que se asigna a una carpeta única por cada usuario que se conecta. Esta carpeta permite a los usuarios copiar archivos en o desde el sistema sin concederles acceso al sistema de archivos completo ni exponer el proveedor FileSystem. El contenido de la unidad de usuario permanece invariable entre sesiones para adaptarse a situaciones en las que se puede interrumpir la conectividad de red.

MountUserDrive = $true

De forma predeterminada, la unidad de usuario permite almacenar un máximo de 50 MB de datos por usuario. Puede limitar la cantidad de datos que un usuario puede consumir con el campo UserDriveMaximumSize .

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

Si no desea que los datos de la unidad de usuario sean persistentes, puede configurar una tarea programada en el sistema para limpiar automáticamente la carpeta cada noche.

Nota:

La unidad de usuario solo está disponible en PowerShell 5.1 o versiones posteriores.

Para obtener más información sobre PSDrive, consulte Administración de unidades de PowerShell.

Definiciones de roles

Las definiciones de roles en un archivo de configuración de sesión definen la asignación de usuarios a roles. A cada usuario o grupo incluido en este campo se le concede permiso al punto de conexión de JEA cuando está registrado. Cada usuario o grupo se puede incluir como clave en la tabla hash solo una vez, pero se puede asignar varios roles. El nombre de la funcionalidad de rol debe ser el nombre del archivo de funcionalidad de rol, sin la .psrc extensión .

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

Si un usuario pertenece a más de un grupo en la definición de roles, obtiene acceso a los roles de cada uno. Si dos roles conceden acceso a los mismos cmdlets, se concede al usuario el conjunto de parámetros más permisivo.

Al especificar usuarios o grupos locales en el campo definiciones de roles, asegúrese de usar el nombre del equipo, no localhost ni caracteres comodín. Puede comprobar el nombre del equipo inspeccionando la $Env:COMPUTERNAME variable .

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

Orden de búsqueda de funcionalidad de rol

Como se muestra en el ejemplo anterior, las capacidades de rol son referenciadas por el nombre base del archivo de capacidades de rol. El nombre base de un archivo es el nombre de archivo sin la extensión . Si hay varias funcionalidades de rol disponibles en el sistema con el mismo nombre, PowerShell usa su orden de búsqueda implícito para seleccionar el archivo de funcionalidad de rol efectivo. JEA no proporciona acceso a todos los archivos de funcionalidad de rol con el mismo nombre.

JEA utiliza la variable de entorno $Env:PSModulePath para determinar qué rutas de acceso examinar para archivos de capacidad de rol. Dentro de cada una de esas rutas de acceso, JEA busca módulos de PowerShell válidos que contienen una subcarpeta "RoleCapabilities". Al igual que con la importación de módulos, JEA prefiere funcionalidades de rol que se incluyen con Windows a funcionalidades de rol personalizadas con el mismo nombre.

Para todos los demás conflictos de nomenclatura, la precedencia viene determinada por el orden en que Windows enumera los archivos del directorio. No se garantiza que el orden sea alfabético. Para el usuario que se conecta se usa el primer archivo de funcionalidad de rol que coincide con el nombre especificado. Dado que el orden de búsqueda de la funcionalidad de rol no es determinista, se recomienda encarecidamente que las funcionalidades de rol tengan nombres de archivo únicos.

Reglas de acceso condicional

A todos los usuarios y grupos incluidos en el campo RoleDefinitions se les concede acceso automáticamente a los puntos de conexión de JEA. Las reglas de acceso condicional permiten refinar este acceso y requerir que los usuarios pertenezcan a grupos de seguridad adicionales que no afecten a los roles a los que están asignados. Esto resulta útil cuando desea integrar una solución de administración de acceso con privilegios Just-In-Time, autenticación de tarjeta inteligente u otra solución de autenticación multifactor con JEA.

Las reglas de acceso condicional se definen en el campo RequiredGroups en un archivo de configuración de sesión. En él, puede proporcionar una tabla hash (opcionalmente anidada) que use las claves "And" y "Or" para construir las reglas. Estos son algunos ejemplos de cómo usar este campo:

# 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' }}

Nota:

Las reglas de acceso condicional solo están disponibles en PowerShell 5.1 o versiones posteriores.

Otras propiedades

Los archivos de configuración de sesión también pueden hacer todo lo que puede hacer un archivo de capacidad de rol, solo sin la capacidad de dar a los usuarios que se conectan acceso a diferentes comandos. Si desea permitir que todos los usuarios accedan a cmdlets, funciones o proveedores específicos, puede hacerlo directamente en el archivo de configuración de sesión. Para obtener una lista completa de las propiedades admitidas en el archivo de configuración de sesión, ejecute Get-Help New-PSSessionConfigurationFile -Full.

Prueba de un archivo de configuración de sesión

Puede probar una configuración de sesión mediante el cmdlet Test-PSSessionConfigurationFile . Se recomienda probar el archivo de configuración de sesión si ha editado manualmente el .pssc archivo. Las pruebas garantizan que la sintaxis sea correcta. Si se produce un error en un archivo de configuración de sesión, esta prueba no se puede registrar en el sistema.

Archivo de configuración de sesión de ejemplo

En el ejemplo siguiente se muestra cómo crear y validar una configuración de sesión para JEA. Las definiciones de roles se crean y almacenan en la $roles variable para mayor comodidad y legibilidad. no es un requisito para hacerlo.

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

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

Actualización de archivos de configuración de sesión

Para cambiar las propiedades de una configuración de sesión de JEA, incluida la asignación de usuarios a roles, debe anular el registro. A continuación, vuelva a registrar la configuración de sesión de JEA mediante un archivo de configuración de sesión actualizado.

Pasos siguientes