Trucs & Astuces

Powershell: Sécuriser un mot de passe

Powershell: Sécuriser un mot de passe

Par 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