Freigeben über


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 eines Schlüsseltresors
  • 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

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.

Registrierungsstatus für Schlüsseltresore in PowerShell

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:

Registrierungsstatus für Schlüsseltresore in PowerShell erfolgreich

Wenn Sie die Schlüsseltresorbefehle aufrufen, wird möglicherweise eine Fehlermeldung wie diese ausgegeben: „Das Abonnement ist nicht für die Verwendung des Namespace ‚Microsoft.KeyVault‘ registriert.“ Wenn ein Fehler ausgegeben wird, bestätigen Sie, dass Sie den Key Vault-Ressourcenanbieter gemäß den Anweisungen aktiviert haben.

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

Neue, in PowerShell generierte Ressourcengruppe

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

Neuer, in PowerShell generierter Schlüsseltresor

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 wird möglicherweise die Warnung ausgegeben, dass die Zugriffsrichtlinie nicht festgelegt wurde und 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.

Neuer, in PowerShell generierter Schlüsseltresorschlüssel

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

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

Erstellen eines geheimen Schlüssels in PowerShell

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, hat die Client-ID 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed. 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 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed -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

Nächste Schritte