Erstellen einer Konto-SAS mit Python

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 den Speicherkontoschlüssel zum Erstellen einer Konto-SAS mit der Azure Storage-Clientbibliothek für Python verwenden.

Informationen zur Konto-SAS

Eine Konto-SAS wird auf der Ebene des Speicherkontos erstellt. Wenn Sie eine Konto-SAS erstellen, können Sie Folgendes ausführen:

Gespeicherte Zugriffsrichtlinien werden für Konto-SAS nicht unterstützt.

Erstellen einer Konto-SAS

Eine Konto-SAS wird mit dem Kontozugriffsschlüssel signiert. Das folgende Codebeispiel zeigt, wie Sie die Methode generate_account_sas aufrufen, um den Konto-SAS-Token-String zu erhalten.

def create_account_sas(self, account_name: str, account_key: str):
    # Create an account SAS that's valid for one day
    start_time = datetime.datetime.now(datetime.timezone.utc)
    expiry_time = start_time + datetime.timedelta(days=1)

    # Define the SAS token permissions
    sas_permissions=AccountSasPermissions(read=True)

    # Define the SAS token resource types
    # For this example, we grant access to service-level APIs
    sas_resource_types=ResourceTypes(service=True)

    sas_token = generate_account_sas(
        account_name=account_name,
        account_key=account_key,
        resource_types=sas_resource_types,
        permission=sas_permissions,
        expiry=expiry_time,
        start=start_time
    )

    return sas_token

Gültige Parameter für den ResourceTypes-Konstruktor sind:

  • Service: Der Standardwert ist False; wird auf True festgelegt, um Zugriff auf APIs auf Dienstebene zu gewähren.
  • Container: Der Standardwert ist False; wird auf True festgelegt, um Zugriff auf APIs auf Containerebene zu gewähren.
  • Object: Der Standardwert ist False; wird auf True festgelegt, um Zugriff auf APIs auf Objektebene für Blobs, Warteschlangennachrichten und Dateien zu gewähren.

Informationen zu den verfügbaren Berechtigungen finden Sie unter AccountSasPermissions.

Verwenden einer Konto-SAS von einem Client

Um die Konto-SAS zum Zugreifen auf APIs auf Dienstebene für den Blob-Dienst zu verwenden, erstellen Sie ein BlobServiceClient-Objekt, indem Sie die Konto-SAS und den Blob-Speicherendpunkt für Ihr Speicherkonto verwenden.

# The SAS token string can be appended to the account URL with a ? delimiter
# or passed as the credential argument to the client constructor
account_sas_url = f"{blob_service_client.url}?{sas_token}"

# Create a BlobServiceClient object
blob_service_client_sas = BlobServiceClient(account_url=account_sas_url)

Sie können auch eine Konto-SAS verwenden, um ein ContainerClient-Objekt oder BlobClient-Objekt zu autorisieren und damit zu arbeiten, wenn diesen Ressourcentypen als Teil der Signaturwerte Zugriff gewährt wird.

Ressourcen

Weitere Informationen zum Erstellen einer Konto-SAS mithilfe der Azure Blob Storage-Clientbibliothek für Python finden Sie in den folgenden Ressourcen.

Codebeispiele

Ressourcen zur Clientbibliothek

Weitere Informationen