Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 SAS für die Benutzerdelegierung. 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 Benutzerdelegierungs-SAS bietet mehr Sicherheit als eine SAS, die mit dem Schlüssel des Speicherkontos 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).
Dieser Artikel zeigt, wie man Microsoft Entra-Zugangsdaten verwendet, um ein Benutzerdelegations-SAS für einen Container oder Blob mit der Azure CLI zu erstellen.
Informationen zur Benutzerdelegierungs-SAS
Ein SAS-Token für den Zugriff auf einen Container oder ein Blob kann entweder mit Azure AD-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 Azure AD-Anmeldeinformationen anstelle des Kontoschlüssels zu verwenden, der leichter kompromittiert werden kann. Wenn Ihr Anwendungsdesign Shared Access Signatures erfordert, verwenden Sie Microsoft Entra-Anmeldeinformationen, um eine Benutzerdelegierungs-SAS für erhöhte Sicherheit zu erstellen. Weitere Informationen zur SAS für die Benutzerdelegierung finden Sie unter Erstellen einer SAS für die Benutzerdelegierung.
Caution
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. Verwenden Sie Ermessensspielraum bei der Verteilung eines SAS und haben Sie einen Plan zur Widerrufung eines kompromittierten SAS. Um unbeabsichtigte Nutzung zu vermeiden, verwenden Sie benutzergebundenes benutzerdefiniertes SAS, das das SAS-Token an den vorgesehenen Endnutzer bindet und von niemandem sonst genutzt werden kann.
Weitere Informationen zu freigegebenen Zugriffssignaturen finden Sie unter Beschränkten Zugriff auf Azure Storage-Ressourcen mithilfe von freigegebenen Zugriffssignaturen (SAS) gewähren.
Installiere die neueste Version der Azure CLI
Um die Azure CLI zu verwenden, um ein SAS mit Microsoft Entra-Zugangsdaten abzusichern, stellen Sie zunächst sicher, dass Sie die neueste Version der Azure CLI installiert haben. Weitere Informationen zur Installation der Azure CLI finden Sie unter Install the Azure CLI.
Um ein Benutzerdelegations-SAS mit der Azure CLI zu erstellen, stellen Sie sicher, dass Sie Version 2.0.78 oder später installiert haben. Um deine installierte Version zu überprüfen, benutze den az --version Befehl.
Mit Microsoft Entra Anmeldedaten anmelden
Melden Sie sich mit Ihren Microsoft Entra-Zugangsdaten in der Azure CLI an. Weitere Informationen finden Sie unter Anmelden mit der Azure CLI.
Zuweisen von Berechtigungen mit Azure RBAC
Um eine Benutzerdelegierungs-SAS mit Azure PowerShell zu erstellen, muss dem Microsoft Entra-Konto, das für die Anmeldung bei Azure CLI verwendet wird, eine Rolle zugewiesen sein, die die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey enthält. Diese Berechtigung ermöglicht es diesem Microsoft Entra-Konto, den Benutzerdelegierungsschlüssel anzufordern. Der Benutzerdelegierungsschlüssel wird verwendet, um das Benutzerdelegations-SAS zu signieren. Die Rolle, die die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey umfasst, muss auf der Ebene des Speicherkontos, der Ressourcengruppe oder des Abonnements zugewiesen werden.
Wenn Sie nicht über ausreichende Berechtigungen verfügen, um Azure-Rollen einem Microsoft Entra-Sicherheitsprinzipal zuzuweisen, müssen Sie möglicherweise den Kontoinhaber oder -administrator bitten, die erforderlichen Berechtigungen zuzuweisen.
Das folgende Beispiel weist die Rolle Storage Blob Data Contributor zu, die die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey umfasst. Die Rolle ist auf die Ebene des Speicherkontos beschränkt.
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 In Azure integrierte Rollen.
Verwenden Sie Microsoft Entra-Zugangsdaten, um ein SAS abzusichern
Wenn Sie mit der Azure CLI eine Benutzerdelegierungs-SAS erstellen, wird der Benutzerdelegierungsschlüssel, mit dem das SAS signiert wird, implizit für Sie erstellt. Die von dir angegebene Start- und Verfallszeit für das SAS werden ebenfalls als Start- und Verfallszeit für den Benutzer-Delegationsschlüssel verwendet.
Da der maximale Zeitraum, über den der Benutzerdelegierungsschlüssel gültig ist, 7 Tage ab dem Startdatum beträgt, sollten Sie eine Ablaufzeit für das SAS festlegen, die innerhalb von 7 Tagen nach dem Startdatum liegt. Das SAS ist nach Ablauf des Benutzerdelegierungsschlüssels ungültig, sodass ein SAS mit einer Verfallszeit von mehr als 7 Tagen immer noch nur 7 Tage gültig ist.
Beim Erstellen eines Benutzerdelegierungs-SAS sind die --auth-mode login und --as-user parameters erforderlich. Geben Sie den Login für den Parameter --auth-mode an, sodass Anfragen an Azure Storage mit Ihren Microsoft Entra-Anmeldedaten autorisiert werden. Gib den --as-user Parameter an, der anzeigt, dass das zurückgegebene SAS ein Benutzerdelegations-SAS sein sollte.
Erstellen Sie ein Benutzerdelegations-SAS für einen Container
Um eine Benutzerdelegierung SAS für einen Container mit der Azure CLI zu erstellen, ruft man den Befehl az Storage Container generate-sas auf.
Unterstützte Berechtigungen für eine Benutzerdelegations-SAS für einen Container schließen Hinzufügen, Erstellen, Löschen, Auflisten, Lesen und Schreiben ein. Berechtigungen können einzeln oder kombiniert angegeben werden. Weitere Informationen zu diesen Berechtigungen finden Sie unter Erstellen einer SAS mit Benutzerdelegierung.
Das folgende Beispiel liefert ein Benutzerdelegations-SAS-Token für einen Container zurück. 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 der Benutzerdelegation wird ähnlich sein:
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 von 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 anhängen, denken Sie daran, auch das Trennzeichen anzuhängen.
Erstellen Sie ein Benutzerdelegierungs-SAS für einen Blob
Um eine Benutzerdelegierung SAS für einen Blob mit der Azure CLI zu erstellen, ruft man den Befehl az storage blob generate-sas auf.
Zu den unterstützten Berechtigungen für eine Benutzerdelegations-SAS für ein Blob gehören Hinzufügen, Erstellen, Löschen, Lesen und 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 liefert eine Benutzerdelegierungs-SAS für einen Blob. Das Beispiel spezifiziert den --full-uri Parameter, der die Blob-URI mit angehängtem 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
Die zurückgegebene SAS-URI für die Benutzerdelegierung sieht in etwa wie folgt aus:
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 nicht das Trennzeichen ('?') für die URL-Abfragezeichenkette. Wenn Sie das SAS-Token an eine Ressourcen-URL anfügen, denken Sie daran, das Trennzeichen vor dem Anfügen des SAS-Tokens an die Ressourcen-URL anzufügen.
Ein Benutzerdelegierungs-SAS unterstützt keine Definition von Berechtigungen mit einer gespeicherten Zugriffsrichtlinie.
Widerrufen einer Benutzerdelegierungs-SAS
Um eine Benutzerdelegation SAS aus der Azure CLI zu widerrufen, ruft man den Befehl az storage account revoke-delegation-keys auf. Dieser Befehl widerruft alle Benutzerdelegierungsschlüssel, die mit dem angegebenen Speicherkonto verknüpft sind. Alle mit diesen Schlüsseln verknüpften Shared-Access-Signaturen werden 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, sodass es eine Verzögerung zwischen dem Beginn des Widerrufsprozesses und der Ungültigkeit einer bestehenden Benutzerdelegierung (SAS) geben kann.