Credential : comment mieux les utiliser ?

Posted by : at

Category : PowerShell   Niv100   Lightning   FrPSUG


Information

Cette article a été rédigé pour une présentation du French Powershell UserGroup.

Cette présentation peut-être vu sur Youtube sur la chaîne du FRPSUG

Module : BetterCredentials

Lors de mes dernières recherches, je suis tombé, par hasard, sur le module BetterCredentials de Jaykul

Alors attention le module n’est pas complètement sec :-)

Comme il le dit lui-même si bien ;-)

L’objectif de BetterCredentials est de fournir une commande Get-Credential entièrement compatible avec les versions antérieures qui améliore le Get-Credential d’origine en ajoutant des fonctionnalités supplémentaires qui sont absentes de la commande intégrée. Plus précisément, stockage des informations d’identification pour l’automatisation, et fourniture d’invites plus complètes avec une explication de l’utilisation des informations d’identification

En résumé c’est un Get-Credential mais en mieux…

pour l’utilisation il suffit d’installer le module directement de la PSGallery

Install-Module -Name BetterCredentials -scope CurrentUser -AllowClobber -force

Le -AllowClobber est important pour faire l’installation

Il faut ensuite, classiquement, importer le module

Import-Module BetterCredentials

la liste des commandes disponibles est la suivante

PS > Get-Command -Module BetterCredentials

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Find-Credential                                    4.5        BetterCredentials
Function        Get-Credential                                     4.5        BetterCredentials
Function        Remove-Credential                                  4.5        BetterCredentials
Function        Set-Credential                                     4.5        BetterCredentials
Function        Test-Credential                                    4.5        BetterCredentials

La première commande qui nous intéresse bien sur est Get-Credential.

Comme pour toute nouvelle commande commençons par regarder l’aide

 Get-Help -Name BetterCredentials\Get-Credential -Detailed

Remarquer que j’ai préfixé la commande avec le nom du module afin que le système comprenne que je veux l’aide de Get-Credential du module et non pas celle de la commande par défaut.

A la lecture de l’aide une phrase m’a beaucoup intéressé

 It also supports storing and retrieving credentials in your Windows Credential Manager, but otherwise functions identically to the built-in command

Hum, Hum intéressant.

Plutôt que de stocker les informations (UserName et Password) dans un fichier comme j’en ai parlé sur le post Credential : comment les utiliser ? ce module est capable de les stocker dans le Coffre-Fort Windows.

Voyons voir un peu cette fonction plus précisément.

PS > Get-Credential -UserName MonUtilsiateur -Domain MonDomaine -Store

UserName                                      Password
--------                                      --------
MonDomaine\MonUtilsiateur System.Security.SecureString

Bon jusque là rien de surprenant puisque le résultat est un object Credential avec Username et Password.

ok, ok mais avant nous avons bien parlé d’un stockage dans le Coffre-Fort Windows.

Allons jeter une oeil dans le Credential Manager et effectivement on retrouve une entrée correspondant à notre utilisateur avec son mot de passe.

Credential Manager

Afin de pouvoir récupérer ce compte il suffit de reprendre la commande

$cred = Get-Credential -UserName MonUtilsiateur -Domain MonDomaine

Si l’utilisateur existe dans le coffre-fort il récupère ce compte sinon il fait un prompt pour demander le mot de passe

Dans notre cas l’utilisateur est dans le coffre-fort

PS >  $cred = Get-Credential -UserName MonUtilsiateur -Domain MonDomaine
PS > $cred


Target        : MicrosoftPowerShell:user=MonDomaine\MonUtilsiateur
TargetAlias   :
Type          : Generic
Persistence   : Enterprise
Description   :
LastWriteTime : 2/10/2019 7:25:35 PM
UserName      : MonDomaine\MonUtilsiateur
Password      : System.Security.SecureString

Cette variable $cred peut-être utiliser par exemple dans la commande suivante

Enter-PSSession -ComputerName MonComputer -Credential $cred

J’avoue ne pas trop savoir quoi penser de ce module.

L’idée me parait intéressante mais ce module demande encore à être développé ce qui ne semble pas être le cas. Autre point bloquant, étant donné qu’il se base sur le Credential Manager de Windows, ce module n’est naturellement pas Cross-Platform :-(

Mais c’est là, la force de la communauté donc avis à tous les amateurs qui voudraient participer à l’évolution de ce module :-)


About LIENHARD Laurent
LIENHARD Laurent

Email : laurent@lienhard.fr

Website :

About LIENHARD Laurent

Auto-Didacte en PowerShell, Co-fondateur et animateur du French PowerShell & DevOps UserGroup

Useful Links