Uso de PowerShell Just Enough Administration (JEA) para delegar privilegios a usuarios que no son administradores

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).

¿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 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.

Antes de seguir adelante, asegúrese de que no haya errores en el archivo de configuración:

Test-PSSessionConfigurationFile -Path  'C:Program FilesWindowsPowerShelldc_manage.pssc'

Test-PSSessionConfigurationFile

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.

powershell jea: configuración permitida para ejecutar cmdlets

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

Register-PSSessionConfiguration - registrar el punto final de JEA

Puede enumerar los puntos finales de JEA disponibles:

Get-PSSessionConfiguration|ft name

Get-PSSessionConfiguration: obtenga puntos finales de jea

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

probando Just Enough Administration

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.

Archivo de registro de administración de Just Enough con sesiones remotas de PowerShell

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *