Erstellen einer SAS für die Benutzerdelegierung für einen Container oder ein Blob mit der Azure CLI

Eine Shared Access Signature (SAS) ermöglicht Ihnen, eingeschränkten Zugriff auf Container und Blobs in Ihrem Speicherkonto zu gewähren. Wenn Sie eine SAS erstellen, geben Sie ihre Einschränkungen an, einschließlich der Azure Storage-Ressourcen, auf die Clients zugreifen dürfen, welche Berechtigungen sie für diese Ressourcen haben und wie lange die SAS gültig ist.

Jede SAS wird mit einem Schlüssel signiert. Zum Signieren einer SAS stehen zwei Möglichkeiten zur Verfügung:

  • Mit einem Schlüssel, der mit Microsoft Entra-Anmeldeinformationen erstellt wurde. Eine SAS, die mit Microsoft Entra-Anmeldeinformationen signiert wurde, ist eine Benutzerdelegierungs-SAS. Einem Client, der eine SAS für die Benutzerdelegierung erstellt, muss eine Azure RBAC-Rolle zugewiesen werden, in der die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey enthalten ist. Weitere Informationen finden Sie unter Erstellen einer SAS für die Benutzerdelegierung.
  • Mit dem Speicherkontoschlüssel. Sowohl eine Dienst-SAS als auch eine Konto-SAS wird mit dem Speicherkontoschlüssel signiert. Der Client, der eine Dienst-SAS erstellt, muss entweder direkten Zugriff auf den Kontoschlüssel haben, oder ihm muss die Berechtigung Microsoft.Storage /storageAccounts/listkeys/action zugewiesen werden. Weitere Informationen finden Sie unter Erstellen einer Dienst-SAS oder Erstellen einer Konto-SAS.

Hinweis

Eine SAS für die Benutzerdelegierung bietet überragende Sicherheit für eine SAS, die mit dem Speicherkontoschlüssel signiert wird. Microsoft empfiehlt, nach Möglichkeit eine SAS für die Benutzerdelegierung zu verwenden. Weitere Informationen finden Sie unter Gewähren von eingeschränktem Zugriff auf Daten mithilfe von SAS (Shared Access Signature).

In diesem Artikel wird beschrieben, wie Sie Microsoft Entra-Anmeldeinformationen verwenden, um eine SAS für die Benutzerdelegierung für einen Container oder ein Blob mit Azure CLI zu erstellen.

Informationen zur SAS für die Benutzerdelegierung

Ein SAS-Token für den Zugriff auf einen Container oder ein Blob kann entweder mit Microsoft Entra-Anmeldeinformationen oder einem Kontoschlüssel geschützt werden. Eine mit Microsoft Entra-Anmeldeinformationen gesicherte SAS wird als SAS für die Benutzerdelegierung bezeichnet, da das OAuth 2.0-Token, das zum Signieren der SAS verwendet wird, im Namen des Benutzers angefordert wird.

Microsoft empfiehlt als bewährte Methode, nach Möglichkeit Microsoft Entra-Anmeldeinformationen anstelle des Kontoschlüssels zu verwenden, der leichter kompromittiert werden kann. Wenn Ihr Anwendungsentwurf Shared Access Signatures erfordert, verwenden Sie Microsoft Entra-Anmeldeinformationen, um eine SAS für die Benutzerdelegierung zu erstellen und damit die Sicherheit zu erhöhen. Weitere Informationen zur SAS für die Benutzerdelegierung finden Sie unter Erstellen einer SAS für die Benutzerdelegierung.

Achtung

Jeder Client, der über eine gültige SAS verfügt, kann auf Daten in Ihrem Speicherkonto zugreifen, sofern von dieser SAS zugelassen. Es ist wichtig, eine SAS vor böswilliger oder unbeabsichtigter Verwendung zu schützen. Verteilen Sie eine SAS mit Diskretion, und halten Sie einen Plan für den Widerruf einer kompromittierten SAS bereit.

Weitere Informationen zu SAS (Shared Access Signatures) finden Sie unter Gewähren von eingeschränktem Zugriff auf Azure Storage-Ressourcen mithilfe von SAS (Shared Access Signature).

Installieren der aktuellsten Version der Azure CLI

Stellen Sie zunächst sicher, dass Sie die neueste Version der Azure CLI installiert haben, um die Azure CLI zum Sichern einer SAS mit Microsoft Entra-Anmeldeinformationen verwenden zu können. Weitere Informationen zum Installieren der Azure CLI finden Sie unter Installieren der Azure CLI.

Um eine SAS für die Benutzerdelegierung mit der Azure CLI zu erstellen, vergewissern Sie sich, dass Version 2.0.78 oder höher installiert ist. Verwenden Sie den Befehl az --version, um Ihre installierte Version zu überprüfen.

Anmelden mit Microsoft Entra-Anmeldeinformationen

Melden Sie sich mit Ihren Microsoft Entra-Anmeldeinformationen bei der Azure CLI an. Weitere Informationen finden Sie unter Anmelden mit der Azure CLI.

Zuweisen von Berechtigungen mit Azure RBAC

Um eine SAS für die Benutzerdelegierung aus Azure PowerShell zu erstellen, muss dem Microsoft Entra-Konto, mit dem die Anmeldung bei der Azure CLI erfolgt, eine Rolle zugewiesen werden, die die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey beinhaltet. Diese Berechtigung ermöglicht diesem Microsoft Entra-Konto, den Benutzerdelegierungsschlüssel anzufordern. Der Benutzerdelegierungsschlüssel wird zum Signieren der SAS für die Benutzerdelegierung verwendet. Die Rolle, die die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey bereitstellt, muss auf der Ebene des Speicherkontos, der Ressourcengruppe oder des Abonnements zugewiesen werden.

Wenn Sie nicht über ausreichende Berechtigungen zum Zuweisen von Azure-Rollen zu einem Microsoft Entra-Sicherheitsprinzipal verfügen, müssen Sie möglicherweise den Kontobesitzer oder den Administrator bitten, die erforderlichen Berechtigungen zuzuweisen.

Im folgenden Beispiel wird die Rolle Storage Blob Data Contributor (Speicherblob-Datenmitwirkender) zugewiesen, die die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey beinhaltet. Die Rolle wird auf der Ebene des Speicherkontos festgelegt.

Denken Sie daran, die Platzhalterwerte in eckigen Klammern durch Ihre eigenen Werte zu ersetzen:

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Weitere Informationen zu den integrierten Rollen, die die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey enthalten, finden Sie unter Integrierte Azure-Rollen.

Verwenden von Microsoft Entra-Anmeldeinformationen zum Sichern einer SAS

Wenn Sie eine SAS für die Benutzerdelegierung mit der Azure CLI erstellen, wird der Benutzerdelegierungsschlüssel, der zum Signieren der SAS verwendet wird, implizit für Sie erstellt. Die Startzeit und die Ablaufzeit, die Sie für die SAS angeben, werden auch als Startzeit und Ablaufzeit für den Benutzerdelegierungsschlüssel verwendet.

Da das maximale Intervall, in dem der Benutzerdelegierungsschlüssel gültig ist, 7 Tage ab dem Startdatum beträgt, sollten Sie eine Ablaufzeit für die SAS angeben, die innerhalb von 7 Tagen der Startzeit liegt. Die SAS ist ungültig, nachdem der Benutzerdelegierungsschlüssel abgelaufen ist, sodass eine SAS mit einer Ablaufzeit von mehr als 7 Tagen trotzdem nur 7 Tage gültig ist.

Beim Erstellen einer SAS für die Benutzerdelegierung sind --auth-mode login und --as-user parameters erforderlich. Geben Sie login für den Parameter --auth-mode an, damit Anforderungen an Azure Storage mit Ihren Microsoft Entra-Anmeldeinformationen autorisiert werden. Geben Sie den --as-user-Parameter an, um festzulegen, dass die zurückgegebene SAS eine SAS für die Benutzerdelegierung sein sollte.

Erstellen einer SAS für die Benutzerdelegierung für einen Container

Um eine SAS für die Benutzerdelegierung für einen Container mit der Azure CLI zu erstellen, verwenden Sie den Befehl az storage container generate-sas.

Zu den unterstützten Berechtigungen für eine SAS für die Benutzerdelegierung für einen Container zählen „Add“ (Hinzufügen), „Create“ (Erstellen), „Delete“ (Löschen), „List (Auflisten), „Read“ (Lesen) und „Write“ (Schreiben). Berechtigungen können einzeln oder kombiniert angegeben werden. Weitere Informationen zu diesen Berechtigungen finden Sie unter Erstellen einer SAS für die Benutzerdelegierung.

Im folgenden Beispiel wird eine SAS für die Benutzerdelegierung für einen Container zurückgegeben. Denken Sie daran, die Platzhalterwerte in Klammern durch Ihre eigenen Werte zu ersetzen:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

Das zurückgegebene SAS-Token für die Benutzerdelegierung ähnelt dem folgenden Token:

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Hinweis

Das vom Blob Storage zurückgegebene SAS-Token enthält nicht das Trennzeichen („?“) für die URL-Abfragezeichenfolge. Wenn Sie das SAS-Token an eine Ressourcen-URL anfügen, denken Sie daran, auch das Trennzeichen anzufügen.

Erstellen einer SAS für die Benutzerdelegierung für ein Blob

Um eine SAS für die Benutzerdelegierung für ein Blob mit der Azure CLI zu erstellen, verwenden Sie den Befehl az storage blob generate-sas.

Zu den unterstützten Berechtigungen für eine SAS für die Benutzerdelegierung für ein Blob zählen „Add“ (Hinzufügen), „Create“ (Erstellen), „Delete“ (Löschen), „Read“ (Lesen) und „Write“ (Schreiben). Berechtigungen können einzeln oder kombiniert angegeben werden. Weitere Informationen zu diesen Berechtigungen finden Sie unter Erstellen einer SAS für die Benutzerdelegierung.

Die folgende Syntax gibt eine SAS für die Benutzerdelegierung für ein Blob zurück. Im Beispiel wird der --full-uri-Parameter angegeben, der den Blob-URI mit angefügtem SAS-Token zurückgibt. Denken Sie daran, die Platzhalterwerte in Klammern durch Ihre eigenen Werte zu ersetzen:

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

Der zurückgegebene SAS-URI für die Benutzerdelegierung ähnelt dem folgenden URI:

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Hinweis

Das von der Azure CLI zurückgegebene SAS-Token enthält das Trennzeichen („?“) für die URL-Abfragezeichenfolge nicht. Wenn Sie das SAS-Token an eine Ressourcen-URL anfügen, denken Sie daran, das Trennzeichen an die Ressourcen-URL anzufügen, bevor Sie das SAS-Token anfügen.

Eine SAS für die Benutzerdelegierung unterstützt nicht das Definieren von Berechtigungen mit einer gespeicherten Zugriffsrichtlinie.

Widerrufen einer SAS für die Benutzerdelegierung

Um eine SAS für die Benutzerdelegierung über die Azure CLI zu widerrufen, verwenden Sie den Befehl az storage account revoke-delegation-keys. Mit diesem Befehl werden alle Benutzerdelegierungsschlüssel widerrufen, die dem angegebenen Speicherkonto zugeordnet sind. Alle mit diesen Schlüsseln verknüpften Shared Access Signatures werden für ungültig erklärt.

Denken Sie daran, die Platzhalterwerte in eckigen Klammern durch Ihre eigenen Werte zu ersetzen:

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

Wichtig

Sowohl der Benutzerdelegierungsschlüssel als auch die Azure-Rollenzuweisungen werden von Azure Storage zwischengespeichert. Daher kann es zu einer Verzögerung zwischen der Initiierung des Sperrprozesses und dem Zeitpunkt kommen, zu dem eine SAS für die Benutzerdelegierung ungültig wird.

Nächste Schritte