Uso de PowerShell Just Enough Administration (JEA) para delegar privilegios a usuarios que no son administradores
La función Just Enough Administration (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 que no son 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).
¿Cómo implementar PowerShell Just Enough Administration?
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 el 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 este caso, no tiene que otorgar acceso RDP al controlador de dominio para los usuarios, delegarles privilegios administrativos en AD, asignar derechos en los servicios de Windows o reiniciar el servidor de acuerdo con las guías que siguen a los enlaces. Todas las restricciones necesarias se establecen en la configuración de Just Enough Administration.
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 Files\WindowsPowerShell\dc_manage.pssc'Abra el archivo PSSC usando el Bloc de notas.
El archivo PSSC establece quién puede conectarse a este extremo de JEA y bajo qué cuenta se ejecutarán los comandos en la sesión de JEA.
Modifique los siguientes valores:
Tipo de sesión de Predeterminado a Servidor remoto restringido. Este modo permite usar 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 parámetro TranscriptDirectory. Aquí registrará todas las acciones de los usuarios de JEA:
TranscriptDirectory = C:\PS\JEA_logsLa opción RunAsVirtualAccount permite ejecutar comandos bajo una cuenta de administrador virtual (miembro del grupo Administrador local o Administrador de dominio):
RunAsVirtualAccount = $true
Puede usar una cuenta de servicio administrada de grupo (gMSA) para acceder a los recursos de la red:
GroupManagedServiceAccount = 'a-d\gMSAJEAUser'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 JEA (debe coincidir con el nombre del archivo PSRC que vamos a crear más adelante).
Por ejemplo:
RoleDefinitions = @{‘a-d.site\HelpDesk' = @{ RoleCapabilities = 'HelpDesk_admins' }}Guarde el archivo de configuración de la sesión.
Antes de continuar, asegúrese de que no haya errores en el archivo de configuración:
Test-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'Cree un nuevo directorio para guardar el archivo de configuración de JEA, por ejemplo:
New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType DirectoryLos archivos PSRC siempre deben estar ubicados en la subcarpeta RoleCapabilities del módulo correspondiente.
A continuación, cree un archivo de configuración de PSRC con la descripción de la función (utilice el nombre de archivo de la configuración de PSSC anterior).
New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'El archivo PSRC especifica lo que se permite hacer en la sesión JEA actual. En la directiva VisibleCmdlets, puede especificar los cmdlets (y sus parámetros válidos) que se pueden usar para un grupo de usuarios determinado.
En la opción VisibleExternalCommands, puede especificar comandos externos y archivos EXE que se pueden ejecutar.
Por ejemplo, la siguiente configuración permite a los usuarios de HelpDesk reiniciar el controlador de dominio mediante el comando de apagado o el
Restart-Computercmdlet, así como reiniciar DNSServer y Active Directory Domain Services usando el
Restart-Servicecmdlet.
VisibleCmdlets = 'Restart-Computer', @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'DNS', 'NTDS' }}
VisibleExternalCommands = 'c:\windows\system32\shutdown.exe'Guarde su archivo PSRC.
Luego registre una nueva configuración de PSSession para su archivo PSSC:
Register-PSSessionConfiguration -Name testHelpDesk -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'y reinicie WinRM:
Restart-Service WinRMVeamos cómo funciona nuestra nueva configuración Just-Enough-Administration (JEA). Puede conectarse al extremo 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 extremo de JEA):
Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDeskVea la lista de cmdlets disponibles en su sesión de PowerShell:
Get-CommandComo 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-Service dnsEl 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], ParameterBindingValidationExceptionEl historial de todas las acciones del usuario en la sesión de JEA PowerShell se registra en los archivos en C:\PS\JEA_logs.
Por lo tanto, JEA le permite otorgar acceso granular a los usuarios para ejecutar cmdlets, scripts o programas específicos de PowerShell como administrador.







