Verwalten von Speicherkontoschlüsseln mit Key Vault und der Azure-Befehlszeilenschnittstelle (Legacy)

Wichtig

Mit Key Vault verwaltete Speicherkontoschlüssel (Legacy) werden in der aktuellen Version unterstützt. Es sind keine weiteren Updates geplant. Es werden nur noch Konto-SAS (Shared Access Signature) unterstützt, die einen mit SAS-Definitionen signierten Speicherdienst verwenden, dessen Version nicht höher als 2018-03-28 sein darf.

Wichtig

Die Unterstützung für Managed Storage Account Keys in Azure CLI wurde in Version 2.54 entfernt. Sie müssen Azure CLI Version 2.53.1 oder früher für die Befehle in diesem Tutorial verwenden.

Wichtig

Wir empfehlen die Verwendung der Azure Storage-Integration in Microsoft Entra ID, dem cloudbasierten Identitäts- und Zugriffsverwaltungsdienst von Microsoft. Die Microsoft Entra-Integration ist für Azure-Blobs, -Warteschlangen und -Tabellen verfügbar und bietet tokenbasierten OAuth2-Zugriff auf Azure Storage (genau wie Azure Key Vault). Microsoft Entra ID ermöglicht es Ihnen, Ihre Clientanwendung zu authentifizieren, indem Sie eine Anwendungs- oder Benutzeridentität anstelle von Speicherkontoanmeldeinformationen verwenden. Sie können eine von Microsoft Entra verwaltete Identität verwenden, wenn Sie Azure ausführen. Verwaltete Identitäten machen die Clientauthentifizierung und das Speichern von Anmeldeinformationen in oder mit Ihrer Anwendung überflüssig. Verwenden Sie die folgende Lösung nur, wenn keine Microsoft Entra-Authentifizierung möglich ist.

Ein Azure-Speicherkonto verwendet Anmeldeinformationen, die sich aus einem Kontonamen und einem Schlüssel zusammensetzen. Der Schlüssel wird automatisch generiert und fungiert eher als ein Kennwort denn als ein kryptografischer Schlüssel. Key Vault verwaltet Speicherkontoschlüssel, indem sie im Speicherkonto regelmäßig neu generiert werden, und stellt SAS-Token für den delegierten Zugriff auf Ressourcen in Ihrem Speicherkonto zur Verfügung.

Sie können das Key Vault-Feature für verwaltete Speicherkontoschlüssel verwenden, um Schlüssel für ein Azure Storage-Konto aufzulisten (synchronisieren) und die Schlüssel in regelmäßigen Abständen erneut zu generieren (rotieren). Sie können Schlüssel sowohl für Speicherkonten als auch für klassische Speicherkonten verwalten.

Wenn Sie das Feature für verwaltete Speicherkontoschlüssel verwenden, sollten Sie folgende Punkte beachten:

  • Schlüsselwerte werden nie als Antwort an einen Aufrufer zurückgegeben.
  • Ihre Speicherkontoschlüssel sollten nur durch Key Vault verwaltet werden. Verwalten Sie die Schlüssel nicht selbst, und vermeiden Sie es, die Key Vault-Prozesse zu beeinträchtigen.
  • Speicherkontoschlüssel sollten nur von einem einzigen Key Vault-Objekt verwaltet werden. Lassen Sie es nicht zu, dass die Schlüssel aus mehreren Objekten verwaltet werden.
  • Generieren Sie Schlüssel nur mit Key Vault neu. Generieren Sie Ihre Speicherkontoschlüssel nicht manuell neu.

Wichtig

Wird der Schlüssel direkt im Speicherkonto neu generiert, wird die Einrichtung des verwalteten Speicherkontos unterbrochen, und die verwendeten SAS-Tokens können ungültig werden und einen Ausfall verursachen.

Dienstprinzipal-Anwendungs-ID

Ein Microsoft Entra-Mandant stellt jede registrierte Anwendung mit einem Dienstprinzipal bereit. Der Dienstprinzipal dient als die Anwendungs-ID, die während der Autorisierungseinrichtung verwendet wird, um über Azure RBAC (role-based access control) auf andere Azure-Ressourcen zuzugreifen.

Key Vault ist eine Microsoft-Anwendung, die in allen Microsoft Entra-Mandanten vorinstalliert ist. Key Vault wird unter derselben Anwendungs-ID in jeder Azure-Cloud registriert.

Mandanten Cloud Anwendungs-ID
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Azure, öffentlich cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Andere Any cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Voraussetzungen

Zum Abschließen dieser Anleitung müssen Sie zunächst folgende Schritte ausführen:

Verwalten von Speicherkontoschlüsseln

Herstellen einer Verbindung mit Ihrem Azure-Konto

Authentifizieren Sie Ihre Sitzung der Azure-Befehlszeilenschnittstelle mit den az login-Befehlen.

az login

Gewähren von Zugriff auf Ihr Speicherkonto für Key Vault

Verwenden Sie den Befehl az role assignment create der Azure-Befehlszeilenschnittstelle, um Key Vault Zugriff auf Ihr Speicherkonto zu gewähren. Stellen Sie dem Befehl die folgenden Parameterwerte zur Verfügung:

  • --role: Übergeben Sie die Azure-Rolle „Dienstrolle 'Speicherkonto-Schlüsseloperator'“. Diese Rolle beschränkt den Zugriffsbereich auf Ihr Speicherkonto. Für ein klassisches Speicherkonto übergeben Sie stattdessen die Rolle „Klassische Dienstrolle 'Speicherkonto-Schlüsseloperator'“.
  • --assignee: Übergeben Sie den Wert „https://vault.azure.net"“, bei dem es sich um die URL für die Key Vault-Instanz in der öffentlichen Azure-Cloud handelt. (Für die Azure Government-Cloud verwenden Sie stattdessen „--assignee-object-id“. Weitere Informationen finden Sie unter Dienstprinzipal-Anwendungs-ID.)
  • --scope: Übergeben Sie Ihre Ressourcen-ID des Speicherkonto, die in der Form /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName> vorliegt. Finden Sie Ihre Abonnement-ID, indem Sie den Azure CLI-Befehl az account list verwenden. Suchen Sie Ihren Speicherkontonamen und die Ressourcengruppe des Speicherkontos mithilfe des Azure CLI-Befehls az storage account list.
az role assignment create --role "Storage Account Key Operator Service Role" --assignee "https://vault.azure.net" --scope "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Gewähren von Benutzerkontoberechtigungen für verwaltete Speicherkonten

Verwenden Sie das Azure CLI-Cmdlet az keyvault-set-policy, um die Key Vault-Zugriffsrichtlinie zu aktualisieren und Ihrem Benutzerkonto Speicherkontoberechtigungen zu gewähren.

# Give your user principal access to all storage account permissions, on your Key Vault instance

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --storage-permissions get list delete set update regeneratekey getsas listsas deletesas setsas recover backup restore purge

Berechtigungen für Speicherkonten sind auf der Seite „Zugriffsrichtlinien“ für Speicherkonten im Azure-Portal nicht verfügbar.

Erstellen eines per Key Vault verwalteten Speicherkontos

Erstellen Sie ein von Key Vault verwaltetes Speicherkonto mit dem Befehl az keyvault storage der Azure-Befehlszeilenschnittstelle. Legen Sie einen Regenerationszeitraum von 30 Tagen fest. Wenn es Zeit für die Rotation ist, generiert Key Vault den inaktiven Schlüssel erneut und aktiviert den neu erstellten Schlüssel. Nur einer der Schlüssel wird verwendet, um SAS-Token zu einem beliebigen Zeitpunkt auszustellen. Dies ist der aktive Schlüssel. Stellen Sie dem Befehl die folgenden Parameterwerte zur Verfügung:

  • --vault-name: Übergeben Sie den Namen Ihres Schlüsseltresors. Um den Namen Ihres Schlüsselspeichers zu finden, verwenden Sie den Befehl az keyvault list der Azure-Befehlszeilenschnittstelle.
  • -n: Übergeben Sie den Namen Ihres Speicherkontos. Verwenden Sie den Befehl az storage account list der Azure-Befehlszeilenschnittstelle, um den Namen Ihres Speicherkonto zu finden.
  • --resource-id: Übergeben Sie Ihre Ressourcen-ID des Speicherkonto, die in der Form /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName> vorliegt. Finden Sie Ihre Abonnement-ID, indem Sie den Azure CLI-Befehl az account list verwenden. Suchen Sie Ihren Speicherkontonamen und die Ressourcengruppe des Speicherkontos mithilfe des Azure CLI-Befehls az storage account list.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P30D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

SAS-Token (Shared Access Signature)

Sie können Key Vault auch anweisen, SAS-Tokens (Shared Access Signature) zu erstellen. Shared Access Signatures bieten delegierten Zugriff auf Ressourcen in Ihrem Speicherkonto. Sie können Clients Zugriff auf Ressourcen unter Ihrem Speicherkonto gewähren, ohne dafür Ihre Kontoschlüssel freigeben zu müssen. Eine SAS (Shared Access Signature) bietet Ihnen eine sichere Methode zur Freigabe Ihrer Speicherressourcen, ohne Ihre Kontoschlüssel zu gefährden.

Die Befehle in diesem Abschnitt führen Sie die folgenden Aktionen:

  • Festlegen der SAS-Definition <YourSASDefinitionName> für ein Konto. Die Definition wird für das von Key Vault verwaltete Speicherkonto <YourStorageAccountName> in Ihrem Schlüsseltresor <YourKeyVaultName> festgelegt.
  • Festlegen einer SAS-Definition für von Key Vault verwalteten Speicher im Tresor. Die Definition hat den Vorlagen-URI des SAS-Tokens, das erstellt wurde. Die Definition hat den SAS-Typ account und ist für N Tage gültig.
  • Vergewissern Sie sich, dass die SAS (Shared Access Signature) in Ihrem Schlüsseltresor als Geheimnis gespeichert wurde.

Definieren einer Vorlage für die Definition einer SAS

Key Vault verwendet eine SAS-Definitionsvorlage, um Token für Clientanwendungen zu generieren.

Beispiel für SAS-Definitionsvorlagen:

"sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

Die SAS-Definitionsvorlage wird im nächsten Schritt an den Parameter --template-uri übergeben.

In der SAS-Definitionsvorlage für Key Vault erforderliche Konto-SAS-Parameter

SAS-Abfrageparameter BESCHREIBUNG
SignedVersion (sv) Erforderlich. Gibt die signierte Speicherdienstversion an, mit der Anforderungen autorisiert werden sollen, die mit dieser Konto-SAS gesendet werden. Muss auf Version 2015-04-05 oder höher festgelegt werden. Key Vault unterstützt keine Versionen, die höher als 2018-03-28 sind.
SignedServices (ss) Erforderlich. Gibt die signierten Dienste an, auf die mit der Konto-SAS zugegriffen werden kann. Mögliche Werte sind:

– Blob (b)
– Warteschlange: (q)
– Tabelle (t)
– Datei (f)

Sie können Werte kombinieren, um Zugriff auf mehr als einen Dienst bereitzustellen. ss=bf gibt beispielsweise den Zugriff auf die Blob- und Dateiendpunkte an.
SignedResourceTypes (srt) Erforderlich. Gibt die signierten Ressourcentypen an, auf die mit der Konto-SAS zugegriffen werden kann.

- Dienst (s): Zugriff auf APIs auf Dienstebene (z. B. Diensteigenschaften abrufen/einstellen, Dienststatistiken abrufen, Container/Warteschlangen/Tabellen/Freigaben auflisten)
- Container (c): Zugriff auf APIs auf Containerebene (z. B. Container erstellen/löschen, Warteschlange erstellen/löschen, Tabelle erstellen/löschen, Freigabe erstellen/löschen, Blobs/Dateien und Verzeichnisse auflisten)
- Objekt (o): Zugriff auf APIs auf Objektebene für Blobs, Warteschlangennachrichten, Tabellenentitäten und Dateien (z. B. Blob ablegen, Entität abfragen, Nachrichten abrufen, Datei erstellen usw.)

Sie können Werte kombinieren, um Zugriff auf mehrere Ressourcentypen bereitzustellen. srt=sc gibt beispielsweise den Zugriff auf Dienst- und Containerressourcen an.
SignedPermission (sp) Erforderlich. Gibt die signierten Berechtigungen für die Konto-SAS an. Berechtigungen sind nur gültig, wenn sie dem angegebenen signierten Ressourcentyp entsprechen; andernfalls werden sie ignoriert.

- Lesen (r): Gültig für alle signierten Ressourcentypen (Dienst, Container und Objekt). Erteilt Leseberechtigungen für den angegebenen Ressourcentyp.
– Schreiben (w): Gültig für alle signierten Ressourcentypen (Dienst, Container und Objekt). Erteilt Schreibberechtigungen für den angegebenen Ressourcentyp.
– Löschen (d): Gültig für Ressourcentypen „Container“ und „Objekt“, außer für Warteschlangennachrichten
– Dauerhaft löschen (y): Gilt nur für den Objektressourcentyp des Blobs
– Auflisten (l): Gilt nur für Ressourcentypen „Dienst“ und „Container“
– Hinzufügen (a): Gültig nur für die folgenden Objektressourcentypen: Warteschlangennachrichten, Tabellenentitäten und Anfügen von Blobs
– Erstellen (c): Gilt nur für die folgenden Objektressourcentypen: Blobs und Dateien. Benutzer*innen können neue Blobs oder Dateien erstellen, aber vorhandene Blobs oder Dateien möglicherweise nicht überschreiben.
– Aktualisieren (u): Gilt nur für die folgenden Objektressourcentypen: Warteschlangenmeldungen und Tabellenentitäten
– Verarbeiten (p): Gilt nur für den folgenden Objektressourcentyp: Warteschlangennachrichten
– Taggen(t): Gilt nur für den folgenden Objektressourcentyp: Blob. Lässt Blob-Tagging-Vorgänge zu.
– Filtern (f): Gilt nur für den folgenden Objektressourcentyp: Blob. Lässt das Filtern nach Blob-Tag zu.
– Festlegen der Unveränderlichkeitsrichtlinie (i): Gültig nur für den folgenden Objektressourcentyp: Blob. Lässt das Festlegen/Löschen von Unveränderlichkeitsrichtlinien und der gesetzlichen Sperre eines Blobs zu.
SignedProtocol (spr) Dies ist optional. Gibt das zugelassene Protokoll für eine Anforderung mit der Konto-SAS an. Mögliche Werte sind HTTPS und HTTP (https,http) oder nur HTTPS (https). Standardwert: https,http.

HTTP allein ist kein zulässiger Wert.

Weitere Informationen über die Konto-AS finden Sie unter Erstellen einer Konto-SAS.

Hinweis

Key Vault ignoriert Lebensdauerparameter wie „Signed Expiry“ (Signiertes Ablaufdatum), „Signed Start“ (Signiertes Startdatum) sowie Parameter, die nach Version 2018-03-28 eingeführt wurden.

Festlegen der SAS-Definition in Key Vault

Verwenden Sie den Azure CLI-Befehl az keyvault storage sas-definition createe und übergeben Sie die SAS-Definitionsvorlage aus dem vorherigen Schritt an den Parameter --template-uri, um eine SAS-Definition zu erstellen. Sie können einen Namen Ihrer Wahl für den Parameter -n angeben.

az keyvault storage sas-definition create --vault-name <YourKeyVaultName> --account-name <YourStorageAccountName> -n <YourSASDefinitionName> --validity-period P2D --sas-type account --template-uri <sasDefinitionTemplate>

Überprüfen der SAS-Definition

Mithilfe des Befehls az keyvault storage sas-definition show der Azure CLI können Sie überprüfen, ob die SAS-Definition in Ihrem Schlüsseltresor gespeichert wurde.

Sie können jetzt den Befehl az keyvault storage sas-definition show und die Eigenschaft id verwenden, um den Inhalt dieses Geheimnisses anzuzeigen.

az keyvault storage sas-definition show --id https://<YourKeyVaultName>.vault.azure.net/storage/<YourStorageAccountName>/sas/<YourSASDefinitionName>

Nächste Schritte