Verwalten von Key Vault in Azure Stack Hub mithilfe von PowerShell
In diesem Artikel wird beschrieben, wie Sie einen Schlüsseltresor in Azure Stack Hub mithilfe von PowerShell erstellen und verwalten. Sie erfahren, wie Sie Key Vault-PowerShell-Cmdlets für Folgendes verwenden:
- Erstellen Sie einen Schlüsseltresor.
- Speichern und Verwalten von kryptografischen Schlüsseln und Geheimnissen.
- Autorisieren von Benutzern bzw. Apps zum Aufrufen von Vorgängen im Tresor.
Hinweis
Die in diesem Artikel beschriebenen Key Vault-PowerShell-Cmdlets stehen im Azure PowerShell SDK zur Verfügung.
Voraussetzungen
- Sie müssen ein Angebot abonnieren, das den Azure Key Vault-Dienst umfasst.
- Installieren von PowerShell für Azure Stack Hub
- Konfigurieren der Azure Stack Hub-PowerShell-Umgebung
Aktivieren Ihres Mandantenabonnements für Key Vault-Vorgänge
Damit Sie Vorgänge für einen Schlüsseltresor ausgeben können, muss Ihr Mandantenabonnement für Tresorvorgänge aktiviert sein. Um sicherzustellen, dass Schlüsseltresorvorgänge aktiviert sind, führen Sie den folgenden Befehl aus:
Get-AzResourceProvider -ProviderNamespace Microsoft.KeyVault | ft -Autosize
Wenn Ihr Abonnement für Tresorvorgänge aktiviert ist, hat RegistrationState in der Ausgabe für alle Ressourcentypen eines Schlüsseltresors den Wert Registered.
Wenn keine Tresorvorgänge aktiviert sind, geben Sie den folgenden Befehl aus, um den Key Vault-Dienst in Ihrem Abonnement zu registrieren:
Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault
Wenn die Registrierung erfolgreich war, wird die folgende Ausgabe zurückgegeben:
Wenn Sie die Schlüsseltresorbefehle aufrufen, wird möglicherweise eine Fehlermeldung angezeigt, z. B. "Das Abonnement ist nicht registriert, um den Namespace "Microsoft.KeyVault" zu verwenden." Wenn sie einen Fehler erhalten, bestätigen Sie, dass Sie den Key Vault-Ressourcenanbieter aktiviert haben, indem Sie den vorherigen Anweisungen folgen.
Erstellen eines Schlüsseltresors
Erstellen Sie vor dem Erstellen eines Schlüsseltresors zunächst eine Ressourcengruppe, damit alle schlüsseltresorbezogenen Ressourcen in einer Ressourcengruppe enthalten sind. Verwenden Sie den folgenden Befehl, um eine neue Ressourcengruppe zu erstellen:
New-AzResourceGroup -Name "VaultRG" -Location local -verbose -Force
Erstellen Sie nun mithilfe des folgenden Cmdlets einen Schlüsseltresor in der zuvor erstellten Ressourcengruppe. Dieser Befehl liest drei erforderliche Parameter: Ressourcengruppenname, Schlüsseltresorname und geografischer Standort.
Führen Sie den folgenden Befehl aus, um einen Schlüsseltresor zu erstellen:
New-AzKeyVault -VaultName "Vault01" -ResourceGroupName "VaultRG" -Location local -verbose
Die Ausgabe dieses Befehls zeigt die Eigenschaften des von Ihnen erstellten Schlüsseltresors. Wenn eine App auf diesen Tresor zugreift, muss sie dazu die Eigenschaft Vault URI verwenden, in diesem Beispiel https://vault01.vault.local.azurestack.external
.
Bereitstellung von Active Directory-Verbunddienste (AD FS)
Bei einer AD FS-Bereitstellung erhalten Sie möglicherweise die Warnung, dass keine Benutzer oder Anwendungen über Zugriffsberechtigungen für die Verwendung dieses Tresors verfügen. Legen Sie zur Behebung dieses Problems mithilfe des Befehls Set-AzKeyVaultAccessPolicy eine Zugriffsrichtlinie für den Tresor fest:
# Obtain the security identifier(SID) of the active directory user
$adUser = Get-ADUser -Filter "Name -eq '{Active directory user name}'"
$objectSID = $adUser.SID.Value
# Set the key vault access policy
Set-AzKeyVaultAccessPolicy -VaultName "{key vault name}" -ResourceGroupName "{resource group name}" -ObjectId "{object SID}" -PermissionsToKeys {permissionsToKeys} -PermissionsToSecrets {permissionsToSecrets} -BypassObjectIdValidation
Verwalten von Schlüsseln und Geheimnissen
Führen Sie nach dem Erstellen eines Tresors diese Schritte aus, um Schlüssel und Geheimnisse im Tresor zu erstellen und zu verwalten.
Erstellen eines Schlüssels
Verwenden Sie das Cmdlet Add-AzureKeyVaultKey, um einen softwaregeschützten Schlüssel in einem Schlüsseltresor zu erstellen oder in einen Schlüsseltresor zu importieren:
Add-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01" -verbose -Destination Software
Mit dem -Destination
-Parameter wird angegeben, dass es sich um einen softwaregeschützten Schlüssel handelt. Nach erfolgreicher Erstellung des Schlüssels gibt der Befehl die Details des erstellten Schlüssels aus.
Sie können nun mithilfe des dazugehörigen URIs auf den erstellten Schlüssel verweisen. Wenn Sie einen Schlüssel mit einem Namen erstellen oder importieren, der dem Namen eines bereits vorhandenen Schlüssels entspricht, wird der ursprüngliche Schlüssel mit den Werten des neuen Schlüssels aktualisiert. Über den versionsspezifischen URI des Schlüssels können Sie auf die vorherige Version des Schlüssels zugreifen. Zum Beispiel:
- Mit
https://vault10.vault.local.azurestack.external:443/keys/key01
können Sie immer die aktuelle Version abrufen. - Mit
https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a
rufen Sie diese spezifische Version ab.
Abrufen eines Schlüssels
Verwenden Sie das Cmdlet Get-AzureKeyVaultKey, um einen Schlüssel und die zugehörigen Details zu lesen:
Get-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01"
Erstellen eines geheimen Schlüssels
Verwenden Sie das Cmdlet Set-AzureKeyVaultSecret, um ein Geheimnis in einem Tresor zu erstellen oder zu aktualisieren. Ein Geheimnis wird erstellt, wenn bisher keines vorhanden ist. Wenn es bereits vorhanden ist, wird eine neue Version des Geheimnisses erstellt:
$secretvalue = ConvertTo-SecureString "User@123" -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01" -SecretValue $secretvalue
Abrufen eines Geheimnisses
Verwenden Sie das Cmdlet Get-AzureKeyVaultSecret, um ein Geheimnis in einem Schlüsseltresor zu lesen. Dieser Befehl kann alle oder bestimmte Versionen eines Geheimnisses zurückgeben:
Get-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01"
Nach dem Erstellen von Schlüsseln und Geheimnissen können Sie deren Verwendung durch externe Apps autorisieren.
Autorisieren einer App zum Verwenden eines Schlüssels oder Geheimnisses
Verwenden Sie das folgende Cmdlet, um den Zugriff einer App auf einen Schlüssel oder auf ein Geheimnis im Schlüsseltresor zu autorisieren.
Im folgenden Beispiel lautet der Tresorname "ContosoKeyVault", und die App, die Sie autorisieren möchten, verfügt über eine Client-ID von 00001111-aaaa-2222-bbbb-3333cc4444. Führen Sie den folgenden Befehl aus, um die App zu autorisieren. Mithilfe des Parameters PermissionsToKeys können Sie auch Berechtigungen für einen Benutzer, eine App oder eine Sicherheitsgruppe festlegen.
Wenn Sie das Cmdlet für eine Azure Stack Hub-Umgebung verwenden, für die AD FS konfiguriert ist, sollte der Parameter „BypassObjectIdValidation“ angegeben werden.
Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 00001111-aaaa-2222-bbbb-3333cccc4444 -PermissionsToKeys decrypt,sign -BypassObjectIdValidation
Wenn Sie dieselbe App zum Lesen von Geheimnissen in Ihrem Tresor autorisieren möchten, führen Sie das folgende Cmdlet aus:
Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300 -PermissionsToKeys Get -BypassObjectIdValidation