Les mots de passe sécurisés permettent de ne pas transmettre en clair des mots de passe importants dans les scripts de production. Il s’agit d’un grave manque de sécurité. Ainsi, à l’aide de PowerShell, nous pouvons sécuriser un mot de passe ou, au moins, réduire sa visibilité. Nous aborderons d'abord des aspects généraux des chaînes sécurisées, puis nous verrons comment Dell Command PowerShell Provider (DCPP) utilise les fonctionnalités de PowerShell pour sécuriser les mots de passe.
Nous souhaitons lire le nom d’utilisateur et le mot de passe de l’utilisateur sur la console. Nous savons que le nom d’utilisateur ne nécessite généralement aucune sécurité et qu’il peut être visible par tous. Mais pour le mot de passe, nous ne devons pas informer les personnes inconnues du mot de passe de l’utilisateur. Nous pouvons faciliter cette exigence à l’aide des commandes ci-dessous :
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Voici un aperçu de la façon dont nous pouvons renforcer la sécurité lorsque nous devons sécuriser des informations essentielles, comme un mot de passe. Dans l’exemple ci-dessus, la variable $Pass est de type System.Security.SecureString
. Découvrons deux autres applets de commande PowerShell largement utilisés pour sécuriser plus facilement les champs avant d’aborder certains aspects de DCPP.
Les deux commandes sont ConvertTo-SecureString
et ConvertFrom-SecureString
. ConvertTo-SecureString
convertit un texte brut en texte System.Security.SecureString
. Un exemple est présenté ci-dessous :
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
Dans l’exemple ci-dessus, le texte brut P@assword1
est converti au type System.Security.SecureString
. Il s’agit plus d’une information qui peut ou non être largement utilisée.
L’applet de commande suivant ConvertFrom-SecureString
est plus largement utilisé, car il permet de convertir les chaînes sécurisées en chaînes standard chiffrées. La principale limitation de ConvertTo-SecureString
est que sa sortie ne peut pas être directement écrite dans un fichier pour une utilisation ultérieure. Nous devons utiliser ConvertFrom-SecureString
qui se convertit System.Security.SecureString
en une chaîne standard chiffrée, pouvant être aisément enregistrée dans un fichier afin d’éliminer cette limitation.
Nous convertissons du texte brut P@ssword1
pour sécuriser la chaîne, puis nous envoyons sa sortie à ConvertFrom-SecureString
pour obtenir une chaîne chiffrée qui peut être enregistrée en toute sécurité et de manière pratique dans un fichier.
Par exemple, supposons sur un ordinateur que le mot de passe administrateur ait été défini et qu’il faille sauvegarder cette information dans un fichier. Pour ce faire, nous pouvons procéder ainsi :
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
Nous pouvons récupérer le mot de passe d’administrateur et l’enregistrer dans une variable comme objet sécurisé, par exemple :
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
Maintenant, réfléchissez à la manière d’utiliser un mot de passe sécurisé pour DCPP. Dans DCPP, si le mot de passe de l’ordinateur de l’utilisateur est défini sur Système ou Administrateur, alors pour toutes les commandes set
nous devons transmettre le mot de passe approprié. Le fait de transmettre ce mot de passe en texte brut constitue donc une violation de la sécurité. Il nous faut transmettre le mot de passe sous la forme System.Security.SecureString
. En outre, lorsque nous transmettons un SecureString
mot de passe, nous devons le transmettre à l’aide d’un -PasswordSecure
paramètre switch et non à l’aide du –Password
paramètre switch habituel. Voici un exemple illustrant le point où l’utilisateur essaie de définir AdvancedBatteryChargeCfg
to Disabled
et de transmettre SecureString
le mot de passe :
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Ici, $pass contient le mot de passe système et administrateur et est de type System.Security.SecureString
. Comme dans la discussion ci-dessus, nous pouvons lire $pass
comme :
$pass = Read-Host "Enter system/admin password" –AsSecureString
Nous pouvons enregistrer $pass
dans un fichier, si nécessaire, en tant que :
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Articles connexes :