Secret Management Modules für PowerShell

Hallo zusammen,

Ich habe mich mit mal mit den PowerShell Module Microsoft.PowerShell.SecretManagement und Microsoft.PowerShell.SecretStore befasst.

Zuerst müssen die Module mal installiert werden. Dazu muss die PowerShell "Als Administrator" gestartet werden. 

Find-Module Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore

Install-Module Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore -Scope AllUsers

Schauen wir uns nun mal die Commandlets der beiden Module an

Get-Command -Module Microsoft.PowerShell.SecretManagement

Get-Command -Module Microsoft.PowerShell.SecretStore

Nun Muss erst mal ein Vault (Tresor) angelet werden

Get-SecretVault
#File Vault
Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Get-SecretVault

Wo liegen denn die Secrets? Diese Frage beantwortet folgendes Command

Get-ChildItem $env:LocalAppData\Microsoft\PowerShell\secretmanagement

Per Default hat der Vault ein Passwort. Natürlich kann das auch entfernt werden

Get-SecretStoreConfiguration

$SecureString = ConvertTo-SecureString "PasswordToTheVault" -AsPlaintext -Force

Unlock-SecretStore -Password $SecureString

#Remove Password from SecretStore

Set-SecretStoreConfiguration -Authentication None

Beim ersten Eintrag muss das Passwort für den Vault festgelegt werden

Set-Secret -Name m.muster@icewolf.ch -Secret 'Pa$$sw0rd'

Und so holt man sich die Secrets wieder heraus

Get-Secret -Name Password1

Get-Secret -Name Password1 -AsPlainText

Es können sogar Metadaten hinzugefügt werden

Get-SecretInfo
Set-SecretInfo -Name m.muster@icewolf.ch -Metadata @{Environement = "Prod"}
Get-SecretInfo | Select-Object name, Metadata

Bisher haben alle Beispiele auf einem lokalen FileVault basiert. Aber man kann auch Azure KeyVault benutzen.

Ich benutze hier den Azure Key Vault mit dem Namen "IcewolfDevKeyVault". Wie man sieht kann man dort auch Keys und Zertifikate benutzen.

Hierbei nutze ich das "Vault Access Policy" Permission Modell

Installieren der benötigen Module

Install-Module Az.Accounts

Install-Module Az.KeyVault

Registrieren von Azure Keyvault

Import-Module Az.Accounts

Import-Module Az.KeyVault

Connect-AzAccount

$VaultParameters = @{AZKVaultName = "IcewolfDevKeyVault"; SubscriptionId = "42ecead4-eae9-4456-997c-1580c58b54ba"}

Register-SecretVault -Module Az.Keyvault -Name KeyVaultStore -VaultParameters $VaultParameters

Get-SecretVault

Nun zeige ich mal die Secrets im KeyVaultStore an

Get-SecretInfo -Vault KeyVaultStore

Get-Secret -Name MyPassword

Get-Secret -Name MyPassword -AsPlainText

Wie man sieht, ist das das Passwort aus dem Azure Key Vault

Grüsse
Andres Bohren