De SecretStore gebruiken in automatisering
Dit artikel bevat een voorbeeld voor het gebruik van een Microsoft.PowerShell.SecretStore-kluis in een automatiseringsscenario. Een SecretStore-kluis biedt u een manier om veilig de wachtwoorden, tokens en andere geheimen op te slaan en op te halen die u in uw automatiseringspijplijn op de lokale computer moet gebruiken.
De host instellen die de automatisering uitvoert
Voor dit voorbeeld moet u eerst de SecretManagement-modules installeren en configureren. In dit voorbeeld wordt ervan uitgegaan dat op uw Automation-host Windows wordt uitgevoerd. Deze opdrachten moeten worden uitgevoerd in de gebruikerscontext van het Automation-account op de host.
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
De SecretStore-kluis configureren
U moet ook een wachtwoord maken als securestring dat wordt gebruikt om de SecretStore-kluis te beveiligen. Het automatiseringssysteem dat u gebruikt, heeft mogelijk een manier om veilig een wachtwoord op te geven dat u kunt gebruiken om de kluis te beveiligen. GitHub biedt bijvoorbeeld een manier om geheimen veilig op te slaan en te gebruiken in GitHub Actions. Zie Geheimen gebruiken in GitHub Actions voor meer informatie.
In dit voorbeeld is het wachtwoord een SecureString die veilig wordt geëxporteerd naar een XML-bestand en versleuteld door Windows Data Protection (DPAPI). Met de volgende opdracht wordt u gevraagd om een wachtwoord. In dit voorbeeld is de Gebruikersnaam niet belangrijk.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
Zodra u het wachtwoord hebt, kunt u het opslaan in een versleuteld XML-bestand.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
Vervolgens moet u de SecretStore-kluis configureren. De configuratie stelt gebruikersinteractie in op None
, zodat SecretStore nooit een prompt aan de gebruiker geeft. Voor de configuratie is een wachtwoord vereist en het wachtwoord wordt doorgegeven als een SecureString-object . De -Confirm:false
parameter wordt gebruikt zodat PowerShell niet om bevestiging vraagt.
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 u de kluis hebt geïnstalleerd en geconfigureerd, kunt u gebruiken Set-Secret
om de geheimen toe te voegen die u nodig hebt voor uw automatiseringsscripts.
Geheimen gebruiken in automatisering
Het SecretStore-wachtwoord moet op een veilige manier worden opgegeven. Hier wordt het wachtwoord geïmporteerd uit een bestand dat is versleuteld met Behulp van Windows Data Protection (DPAPI).
Notitie
Dit is een windows-oplossing, maar een andere optie is het gebruik van een beveiligde variabele die wordt geleverd door een CI-systeem, zoals GitHub Actions.
Het automatiseringsscript moet de kluis ontgrendelen om de geheimen op te halen die nodig zijn in het script. De Unlock-SecretStore
cmdlet wordt gebruikt om de SecretStore voor deze sessie te ontgrendelen. De time-out van het wachtwoord is geconfigureerd voor 1 uur. De kluis blijft gedurende die tijd ontgrendeld in de sessie. Na de time-out moet de kluis opnieuw worden ontgrendeld voordat geheimen kunnen worden geopend.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret