Powershell: Sécuriser un mot de passe

Powershell: Sécuriser un mot de passe

By ronan, 28 janvier, 2025

Pour sécuriser un mot de passe afin de l'utiliser dans des scripts Powershell, exécuter les étapes suivantes

Générer la clé avec des données aléatoires

PS > $key = (1..32 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 }) -as [byte[]]

Sauvegarder la clé dans un fichier caché qui devra être accessible par les scripts concernés

PS > [System.IO.File]::WriteAllBytes(".mykey", $Key)

Bien évidement, cette clé devra rester secrète

PS > Get-Content .mykey
¥l{}ƒ)’´Yrz’¸¯>°'ÈH'­y¼ò/Àp↕Ž

Si la clé existe déjà, on initialise la variable $key de cette façon là

PS > $key = Get-Content .key -Encoding Byte

Première étape de sécurisation du mot de passe

PS > $monmotdepasse = "ceciestmonmotdepasse" | ConvertTo-SecureString -AsPlainText -Force
PS > $monmotdepasse
System.Security.SecureString

Une autre possibilité, en utilisant Get-Credential, permet de ne pas saisir son mot de passe dans la console PowerShell
Le résultat obtenu est une SecureString

PS > $monmotdepasse = Get-Credential

cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential

Une fenêtre Windows s'ouvre permettant de saisir ses identifiants

PS > $monmotdepasse.Password
System.Security.SecureString

Seconde étape de sécurisation du mot de passe

PS > $monmotdepassesecurise = $monmotdepasse | ConvertFrom-SecureString -Key $key
PS > $monmotdepassesecurise
76492d1116743f0423413b16050a5345MgB8AGMAZABXAHgAOQBWAHoAcgBXADUAcABJAEkAQQBVAGIAMQA1AGsAYgBuAHcAPQA9AHwAMAAxADcANABjADgAMQAwADMAOQBhADIAZQBkAGIAZAA3ADQAYgA2AGQAMQBhADEAZgAxADkAMwBjADEAOQA4ADUANABjADUANgBmAGUAMgA2ADMAMwAxADEAYQAwAGIAYwBkADUAOAAwADMAZAA4AGEAOQBhADcANQA4ADUAMQBiAGIAOQA2ADkANABiADAAMAA4ADgAMgA2AGEANgAyADAAZgBjADkAOQAwAGEAMQAyADcAZQA2AGEAMgBjAGUA

Si la variable $monmotdepasse a été initialisée via la commande Get-Credential, la variable $monmotdepassesecurise sera initialisée de cette manière

PS > $monmotdepassesecurise = $monmotdepasse.Password | ConvertFrom-SecureString -Key $key

Cette chaine de caractères devra être copiée/collée dans tous les scripts Powershell concernés.

Etiquettes