La Administración suficiente (JEA) está disponible a partir de la versión 5.0 de PowerShell y le permite delegar privilegios administrativos a cualquier cosa que pueda administrar con PowerShell. El objetivo principal de PowerShell JEA es limitar los privilegios. JEA le permite otorgar permisos a usuarios no administradores para realizar tareas administrativas específicas sin otorgarles derechos de administrador de servidor o servicio (AD, Exchange, SharePoint, etc.). Con JEA, puede establecer qué usuarios pueden ejecutar cmdlets, funciones o scripts de PowerShell específicos con privilegios de administrador y registrar todas las acciones (similar al historial de comandos de PowerShell).
Un administrador crea un archivo de configuración de sesión de PowerShell en un servidor que contiene comandos que un usuario puede ejecutar. En función de los archivos, se crea un punto final JEA al que un usuario puede conectarse y ejecutar cualquiera de los comandos o programas disponibles para él.
Aquí mostraremos un ejemplo de cómo otorgar permiso a los usuarios que no son administradores para reiniciar un controlador de dominio y reiniciar los servicios DNS y ADDS en él.
En primer lugar, cree un archivo de configuración de una sesión de PowerShell (* .pssc). Para hacerlo, ejecute este comando en su controlador de dominio:
New-PSSessionConfigurationFile -Path 'C:Program FilesWindowsPowerShelldc_manage.pssc'
Abra el archivo PSSC con el Bloc de notas.
El archivo PSSC establece quién puede conectarse a este punto final de JEA y bajo qué cuenta se ejecutarán los comandos en la sesión de JEA.
Modifique los siguientes valores:
- SessionType de Predeterminado a RestrictedRemoteServer. Este modo permite utilizar los siguientes cmdlets de PowerShell: Clear-Host, Exit-PSSession, Get-Command, Get-FormatData, Get-Help, Measure-Object, Out-Default o Select-Objectl
- Especifique una carpeta (créela) en el TranscriptDirectory parámetro. Aquí registrará todas las acciones de los usuarios de JEA:
TranscriptDirectory = C:PSJEA_logs - La RunAsVirtualAccount La opción permite ejecutar comandos bajo una cuenta de administrador virtual (miembro del grupo Administrador local o Administrador de dominio):
RunAsVirtualAccount = $true
En la directiva RoleDefinitions, especifique el grupo de seguridad de AD al que se le permite conectarse a la sesión de PowerShell y el nombre del rol de JEA (debe coincidir con el nombre del archivo PSRC que crearemos más adelante).
Por ejemplo:
RoleDefinitions = @{‘woshub.comHelpDesk' = @{ RoleCapabilities="HelpDesk_admins" }}
Guarde el archivo de configuración de la sesión.
Test-PSSessionConfigurationFile -Path 'C:Program FilesWindowsPowerShelldc_manage.pssc'

Cree un nuevo directorio para mantener el archivo de configuración de JEA, por ejemplo:
New-Item -Path 'C:Program FilesWindowsPowerShellModulesJEARoleCapabilities ' -ItemType Directory
PSRC Los archivos siempre deben estar ubicados en el Funciones de rol subcarpeta del módulo correspondiente.
Luego, cree un archivo PSRC de configuración con la descripción del rol (use el nombre de archivo de la configuración PSSC anterior).
New-PSRoleCapabilityFile -Path 'C:Program FilesWindowsPowerShellModulesJEARoleCapabilitiesHelpDesk_admins.psrc'
El archivo PSRC especifica qué se permite hacer en la sesión actual de JEA. En el VisibleCmdlets directiva, puede especificar los cmdlets (y sus parámetros válidos) que se pueden usar para un grupo de usuarios determinado.
En el VisibleExternalCommands opción, puede especificar comandos externos y archivos EXE permitidos para ejecutarse.
Por ejemplo, la siguiente configuración permite Mesa de ayuda que los usuarios reinicien el controlador de dominio mediante el comando shutdown o el Restart-Computer cmdlet, así como reiniciar DNSServer y Active Directory Domain Services usando el Restart-Service cmdlet.
VisibleCmdlets="Restart-Computer", @{ Name="Restart-Service"; Parameters = @{ Name="Name"; ValidateSet="DNS", 'NTDS' }}
VisibleExternalCommands="c:windowssystem32shutdown.exe"
Guarde su archivo PSRC.

Luego registre una nueva configuración de PSSession para su archivo PSSC:
Register-PSSessionConfiguration –Name testHelpDesk -Path 'C:Program FilesWindowsPowerShelldc_manage.pssc'
y reinicie WinRM:
Restart-Service WinRM

Get-PSSessionConfiguration|ft name

Veamos cómo funciona nuestra nueva configuración de Just-Enough-Administration (JEA). Puede conectarse al punto final JEA creado con una cuenta de usuario del grupo de seguridad especificado en el archivo de configuración. Conéctese al controlador de dominio mediante PowerShell Remoting (debe especificar el nombre del punto de conexión JEA):
Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk
Vea la lista de cmdlets disponibles en su sesión de PowerShell:
Get-Command
Como puede ver, hay una pequeña cantidad de comandos disponibles, incluidos Restart-Service y Restart-Computer. Un usuario solo puede hacer lo que se le permite hacer.
Intente reiniciar el servicio DNS:
Restart-Computer dns
El servicio se ha reiniciado correctamente (el comando se ejecuta como un usuario privilegiado con permisos de administrador de dominio).
Si intenta reiniciar cualquier otro servicio que no se describe en el archivo de configuración de JEA, aparece el siguiente mensaje de error:
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

El historial de todas las acciones del usuario en la sesión de JEA PowerShell se registra en los archivos de C: PS JEA_logs.

Por lo tanto, JEA le permite otorgar a los usuarios acceso granular para ejecutar cmdlets, scripts o programas específicos de PowerShell como administrador.





