JEA (Just Enough Administration)

Présentation JEA

JEA est une nouveauté intérressante de Windows 2016, cette nouvelle fonctionnalité permet de donner des droits d’accès limités à une personne se connectant en session distante et en Powershell.

Avec JEA, vous pouvez affecter à un groupe de personne le droit d’utiliser les cmdlettes get*, stop-service, start-service, rien d’autres. vous pouvez encore affiner en ne donnant le droit d’arrêter qu’un ou plusieurs service comme le service spooler.

vous pouvez créer une fonction pour votre groupe, lui donner des alias, etc.

vous pouvez suivre ce que fait ce groupe à travers la transcription.

le but est de donner au final le minimum de droit à un utilisateur et 

Ne plus donner des droits d’administrateurs systèmes pour effectuer des taches liés a des rôles particuliers, à des applications particulières.

pour fonctionner, JEA à besoin de 2 fichiers particulier, 1 fichier avec l’extension PSSC et 1 fichier PSRC.

PSSC pour PowerShell Session Configuration et PSRC pour PowerShell Role Capability.

Fichier RoleCapability

Le fichier RoleCapability décrit ce que quelqu’un peut faire dans une session JEA. 

Porte l’extension .psrc.

Ce fichier liste toutes les applets de commande, toutes les fonctions, tous les fournisseurs et tous les programmes externes devant être accessibles aux utilisateurs qui se connectent.

Il doit être présent dans le chemin des modules .

Par ex sous c:\program Files\WindowsPowershell\Modules\JEA_Role\RoleCapabilties\fichier.psrc

#Chemins ou peuvent etre stockés les modules powershell
$env:PSModulePath -split « ; »

C:\Users\gaelmarot\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

ficher Session Configuration

Les configurations de session déterminent qui peut utiliser le point de terminaison JEA (une connexion à un serveur), et à quel(s) rôle(s) ils ont accès. 

Rôle lié au fichier psrc

Elles définissent également les paramètres globaux qui s’appliquent aux utilisateurs des rôles de la session JEA.

De nombreuses options peuvent etre paramétrées dans ce fichier:

•qui doit avoir accès au point de terminaison JEA
•quels rôles (liés avec le fichier psrc) leur seront affectés
•quelles identités JEA utilisera et quel nom du point de terminaison JEA. 
•Les identités sont toutes définies dans un fichier de configuration de session PowerShell, qui est un fichier de données PowerShell se terminant par une extension .pssc.
•New-PSSessionConfigurationFile permet de créer le fichier pssc, plusieurs arguments peuvent être utilisés.
•Seules les options de configuration les plus courantes sont incluses dans le squelette de fichier par défaut. Utiliser l’argument –full pour obtenir tous les paramètres dans le fichier pssc

il y’a une corresspondance entre le fichier PSRC et PSSC, c’est le RoleCapabality, le nom correspond au nom du fichier PSRC . ex: RoleCapability=Maintenance pour le fichier Maintenance.psrc 

exemple de role

RoleDefinitions = @{ ‘gtek-it\dl-tech’ = @{ RoleCapabilities = ‘Maintenance’, ‘adminSQL’ }

 ‘ gtek-it\dl-admdns ‘ = @{ RoleCapabilities = ‘DnsOperator’, ‘DnsAuditor’ } }

2 groupes gtek-it dans cette option avec pour DL-tech les roles maintenance, adminSQL et pour le groupe dl-admdns les roles DnsOperator, DNSauditor.

Pour résumé, on peut dire que pssc créé un fichier contenant des cmdlets, des fonctions, le fichier psrc affine les droits plus finement, mais ces 2 fichiers sont pratiquement identiques, vous pouvez les éditer et les modifier, il faudra dans ce cas réutiliser la cmdlette unregister-pssessionconfiguration et register-pssessionconfiguration

l’exemple suivant paramètres nos 2 fichiers , ce script est à exécuter sur le serveur devant recevoir les cmdlettes restrictif, dans cet exemple, j’utilise un serveur membre nommé 2K16-ST2

FICHIER PSSC ​​ 

New-PSSessionConfigurationFile​​ -Path​​ C:\ProgramData\JEAConfiguration\testJEA.pssc​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -CompanyName​​ "GTEK-IT"​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -Author​​ "Equipe GTEK-IT"​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -RunAsVirtualAccount​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -SessionType​​ RestrictedRemoteServer​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -TranscriptDirectory​​ "C:\ProgramData\JEAconfiguration"​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -RoleDefinitions​​ @{​​ 'gtek-it\dl-tech'​​ =​​ @{ RoleCapabilities​​ =​​ 'Maintenance'​​ }} `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -full​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -VisibleCmdlets​​ 'get*',​​ 'Restart-Service',​​ 'stop-process'​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -VisibleProviders​​ "FileSystem","Function","Variable"​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -VisibleExternalCommands​​ 'c:\windows\sytem32\whoami',​​ 'c:\windows\system32\wusa'​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -VisibleAliases​​ 'dir','gwmi','cd','ls','gci'​​ 

​​ FICHIER PSRC

New-PSRoleCapabilityFile​​ -Path​​ "$env:ProgramFiles\WindowsPowerShell\Modules\DemoModule\RoleCapabilities\Maintenance.psrc"​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -VisibleCmdlets​​ 'set-content','out-file','tee-object'​​ `

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ -FunctionDefinitions​​ @{ Name​​ =​​ 'Get-InfoUtil'; ScriptBlock​​ =​​ {$PSSenderInfo}}

ENREGISTREMENT DU FICHIER DE CONFIGURATION DE SESSION

Register-PSSessionConfiguration​​ -Name​​ maintenance​​ -Path​​ C:\ProgramData\JEAConfiguration\testJEA.pssc

Test

Nous pouvons maintenant tester. nous nous connectons sur le serveur paramétré avec nos fichiers PSSC et PSRC

on utilise configuration name avec le nom maintenance (mis dans le fichier pssc)

enter-pssession 2K16-ST2 -ConfigurationName maintenance -Credential gmarot

tapez get-command pour vérifier les cmdlettes utilisable pour Gmarot

nous trouvons les cmdlettes get*, plus les cmdlettes clear-host, exit-pssession, out-default…ces fonctions sont chargées par défaut.

si l’on mesure le nombre de cmdlette, on est limité à 72

nous pouvons maintenant tester des cmdlettes , des fonctions…

vous pouvez remarquer que certaines cmdlettes ou alias ne sont pas dispo pour l’utilisateur gmarot, la fonction get-infotutil créée dans le fichier psrc fonctionne.

tapez exit-pssession quitter la session distante

replacez vous sur le serveur contenant les fichiers pssc et psrc.

Get-PSSessionConfiguration affiche les droits par groupes sur une session distante.

Get-PSSessionCapability -ConfigurationName maintenanceUsername gtek-it\gmarot

cette commande affiche les cmdlettes que disposera l’utilisateur gmarot pour la configname nommé maintenance

  • Pour supprimer une configuration de session, utiliser

 Unregister-PSSessionConfiguration -Name maintenance

 

Laisser un commentaire