Verwenden des SecretStore in der Automatisierung
Dieser Artikel enthält ein Beispiel für die Verwendung eines Microsoft.PowerShell.SecretStore-Tresors in einem Automatisierungsszenario. Ein SecretStore-Tresor bietet Ihnen die Möglichkeit, die Kennwörter, Token und andere Geheimnisse, die Sie in Ihrer Automatisierungspipeline auf dem lokalen Computer verwenden müssen, sicher zu speichern und abzurufen.
Einrichten des Hosts, auf dem die Automatisierung ausgeführt wird
Für dieses Beispiel müssen Sie zuerst die Module SecretManagement installieren und konfigurieren. In diesem Beispiel wird davon ausgegangen, dass auf Ihrem Automatisierungshost Windows ausgeführt wird. Diese Befehle müssen im Benutzerkontext des Automation-Kontos auf dem Host ausgeführt werden.
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
Konfigurieren des SecretStore-Tresors
Sie müssen auch ein Kennwort als SecureString erstellen, das zum Sichern des SecretStore-Tresors verwendet wird. Das von Ihnen verwendete Automatisierungssystem bietet möglicherweise eine Möglichkeit, ein Kennwort sicher bereitzustellen, das Sie zum Sichern des Tresors verwenden können. GitHub bietet beispielsweise eine Möglichkeit zum sicheren Speichern und Verwenden von Geheimnissen in GitHub Actions. Weitere Informationen finden Sie unter Verwenden von Geheimnissen in GitHub Actions.
In diesem Beispiel ist das Kennwort ein SecureString , das sicher in eine XML-Datei exportiert und von Windows Data Protection (DPAPI) verschlüsselt wird. Der folgende Befehl fordert Sie zur Eingabe eines Kennworts auf. In diesem Beispiel ist der Benutzername unwichtig.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
Sobald Sie das Kennwort haben, können Sie es in einer verschlüsselten XML-Datei speichern.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
Als Nächstes müssen Sie den SecretStore-Tresor konfigurieren. Die Konfiguration legt die Benutzerinteraktion auf fest None
, sodass SecretStore den Benutzer nie dazu auffordert. Die Konfiguration erfordert ein Kennwort, und das Kennwort wird als SecureString-Objekt übergeben. Der -Confirm:false
Parameter wird verwendet, damit PowerShell nicht zur Bestätigung auffordert.
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
Nachdem Sie den Tresor installiert und konfiguriert haben, können Set-Secret
Sie die Geheimnisse hinzufügen, die Sie für Ihre Automatisierungsskripts benötigen.
Verwenden von Geheimnissen in der Automatisierung
Das SecretStore-Kennwort muss auf sichere Weise bereitgestellt werden. Hier wird das Kennwort aus einer Datei importiert, die mit Windows Data Protection (DPAPI) verschlüsselt wurde.
Hinweis
Dies ist eine reine Windows-Lösung, aber eine andere Option besteht darin, eine sichere Variable zu verwenden, die von einem CI-System wie GitHub Actions bereitgestellt wird.
Das Automatisierungsskript muss den Tresor entsperren, um die im Skript erforderlichen Geheimnisse abzurufen. Das Unlock-SecretStore
Cmdlet wird verwendet, um den SecretStore für diese Sitzung zu entsperren. Das Kennworttimeout wurde für eine Stunde konfiguriert. Der Tresor bleibt in der Sitzung für diesen Zeitraum entsperrt. Nach dem Timeout muss der Tresor erneut entsperrt werden, bevor auf Geheimnisse zugegriffen werden kann.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret