Utiliser secretStore dans l’automatisation
Cet article fournit un exemple d’utilisation d’un coffre Microsoft.PowerShell.SecretStore dans un scénario d’automatisation. Un coffre SecretStore vous permet de stocker et de récupérer en toute sécurité les mots de passe, jetons et autres secrets que vous devez utiliser dans votre pipeline d’automatisation sur l’ordinateur local.
Configurer l’hôte qui exécute l’automatisation
Pour cet exemple, vous devez d’abord installer et configurer les modules SecretManagement. Cet exemple suppose que votre hôte Automation exécute Windows. Ces commandes doivent être exécutées dans le contexte utilisateur du compte Automation sur l’hôte.
Install-Module -Name Microsoft.PowerShell.SecretStore -Repository PSGallery -Force
Install-Module -Name Microsoft.PowerShell.SecretManagement -Repository PSGallery -Force
Import-Module Microsoft.PowerShell.SecretStore
Import-Module Microsoft.PowerShell.SecretManagement
Configurer le coffre SecretStore
Vous devez également créer un mot de passe en tant que SecureString utilisé pour sécuriser le coffre SecretStore. Le système d’automatisation que vous utilisez peut avoir un moyen de fournir en toute sécurité un mot de passe que vous pouvez utiliser pour sécuriser le coffre. Par exemple, GitHub offre un moyen de stocker et d’utiliser des secrets de manière sécurisée dans GitHub Actions. Pour plus d’informations, consultez Utilisation de secrets dans GitHub Actions.
Dans cet exemple, le mot de passe est un SecureString qui est exporté en toute sécurité vers un fichier XML et chiffré par la Protection des données Windows (DPAPI). La commande suivante vous invite à entrer un mot de passe. Dans cet exemple , le UserName n’est pas important.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
Une fois que vous avez le mot de passe, vous pouvez l’enregistrer dans un fichier XML chiffré.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
Ensuite, vous devez configurer le coffre SecretStore . La configuration définit l’interaction utilisateur sur None
, de sorte que SecretStore n’invite jamais l’utilisateur. La configuration nécessite un mot de passe et le mot de passe est transmis en tant qu’objet SecureString . Le -Confirm:false
paramètre est utilisé pour que PowerShell n’invite pas à confirmer.
Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
$password = Import-CliXml -Path $securePasswordPath
$storeConfiguration = @{
Authentication = 'Password'
PasswordTimeout = 3600 # 1 hour
Interaction = 'None'
Password = $password
Confirm = $false
}
Set-SecretStoreConfiguration @storeConfiguration
Maintenant que le coffre est installé et configuré, vous pouvez utiliser Set-Secret
pour ajouter les secrets dont vous avez besoin pour vos scripts d’automatisation.
Utiliser des secrets dans l’automatisation
Le mot de passe SecretStore doit être fourni de manière sécurisée. Ici, le mot de passe est importé à partir d’un fichier chiffré à l’aide de la protection des données Windows (DPAPI).
Notes
Il s’agit d’une solution Windows uniquement, mais une autre option consiste à utiliser une variable sécurisée fournie par un système CI comme GitHub Actions.
Le script d’automatisation doit déverrouiller le coffre pour récupérer les secrets nécessaires dans le script. L’applet Unlock-SecretStore
de commande est utilisée pour déverrouiller le SecretStore pour cette session. Le délai d’expiration du mot de passe a été configuré pour une heure. Le coffre reste déverrouillé dans la session pendant ce laps de temps. Après le délai d’expiration, le coffre doit être à nouveau déverrouillé pour que les secrets soient accessibles.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret