Använda SecretStore i automation
Den här artikeln innehåller ett exempel på hur du använder ett Microsoft.PowerShell.SecretStore-valv i ett automatiseringsscenario. Med ett SecretStore-valv kan du på ett säkert sätt lagra och hämta lösenord, token och andra hemligheter som du behöver använda i din automationspipeline på den lokala datorn.
Konfigurera värden som kör automatiseringen
I det här exemplet måste du först installera och konfigurera SecretManagement-modulerna. Det här exemplet förutsätter att automationsvärden kör Windows. Dessa kommandon måste köras i användarkontexten för automationskontot på värden.
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
Konfigurera SecretStore-valvet
Du måste också skapa ett lösenord som en SecureString som används för att skydda SecretStore-valvet. Det automatiseringssystem som du använder kan ha ett sätt att på ett säkert sätt ange ett lösenord som du kan använda för att skydda valvet. GitHub tillhandahåller till exempel ett sätt att lagra och använda hemligheter på ett säkert sätt i GitHub Actions. Mer information finns i Använda hemligheter i GitHub Actions.
I det här exemplet är lösenordet en SecureString som exporteras säkert till en XML-fil och krypteras av Windows Data Protection (DPAPI). Följande kommando uppmanar dig att ange ett lösenord. I det här exemplet är användarnamnet oviktigt.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
När du har lösenordet kan du spara det i en krypterad XML-fil.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
Därefter måste du konfigurera SecretStore-valvet . Konfigurationen anger användarinteraktion till None
, så att SecretStore aldrig uppmanar användaren. Konfigurationen kräver ett lösenord och lösenordet skickas som ett SecureString-objekt . Parametern -Confirm:false
används så att PowerShell inte uppmanar till bekräftelse.
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
Nu när du har installerat och konfigurerat valvet kan du använda Set-Secret
för att lägga till hemligheterna du behöver för dina automationsskript.
Använda hemligheter i automatisering
SecretStore-lösenordet måste anges på ett säkert sätt. Här importeras lösenordet från en fil som krypterades med Hjälp av Windows Data Protection (DPAPI).
Anteckning
Det här är en lösning endast för Windows, men ett annat alternativ är att använda en säker variabel som tillhandahålls av ett CI-system som GitHub Actions.
Automation-skriptet måste låsa upp valvet för att hämta hemligheterna som behövs i skriptet. Cmdleten Unlock-SecretStore
används för att låsa upp SecretStore för den här sessionen. Tidsgränsen för lösenord har konfigurerats i 1 timme. Valvet förblir olåst i sessionen under den tiden. Efter tidsgränsen måste valvet låsas upp igen innan hemligheter kan nås.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret