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
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
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