Tworzenie sygnatury dostępu współdzielonego konta przy użyciu języka Python

Sygnatura dostępu współdzielonego (SAS) umożliwia udzielanie ograniczonego dostępu do kontenerów i obiektów blob na koncie magazynu. Podczas tworzenia sygnatury dostępu współdzielonego określasz jego ograniczenia, w tym zasoby usługi Azure Storage, do których może uzyskiwać dostęp klient, jakie uprawnienia mają w tych zasobach i jak długo sygnatura dostępu współdzielonego jest prawidłowa.

Każda sygnatura dostępu współdzielonego jest podpisana przy użyciu klucza. Sygnaturę dostępu współdzielonego można podpisać na jeden z dwóch sposobów:

  • Za pomocą klucza utworzonego przy użyciu poświadczeń firmy Microsoft Entra. Sygnatura dostępu współdzielonego podpisana przy użyciu poświadczeń usługi Microsoft Entra to sygnatura dostępu współdzielonego delegowania użytkownika. Klient, który tworzy sygnaturę dostępu współdzielonego delegowania użytkownika, musi mieć przypisaną rolę RBAC platformy Azure obejmującą akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.
  • Przy użyciu klucza konta magazynu. Sygnatura dostępu współdzielonego usługi i sygnatura dostępu współdzielonego konta są podpisane przy użyciu klucza konta magazynu. Klient tworzący sygnaturę dostępu współdzielonego usługi musi mieć bezpośredni dostęp do klucza konta lub mieć przypisane uprawnienie Microsoft.Storage/storageAccounts/listkeys/action . Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego usługi lub Tworzenie sygnatury dostępu współdzielonego konta.

Uwaga

Sygnatura dostępu współdzielonego delegowania użytkownika zapewnia doskonałe zabezpieczenia sygnatury dostępu współdzielonego podpisanej przy użyciu klucza konta magazynu. Firma Microsoft zaleca używanie sygnatury dostępu współdzielonego delegowania użytkowników, jeśli jest to możliwe. Aby uzyskać więcej informacji, zobacz Udzielanie ograniczonego dostępu do danych za pomocą sygnatur dostępu współdzielonego (SAS).

W tym artykule pokazano, jak za pomocą klucza konta magazynu utworzyć sygnaturę dostępu współdzielonego konta z biblioteką klienta usługi Azure Storage dla języka Python.

Informacje o sygnaturze dostępu współdzielonego konta

Sygnatura dostępu współdzielonego konta jest tworzona na poziomie konta magazynu. Tworząc sygnaturę dostępu współdzielonego konta, możesz wykonywać następujące czynności:

  • Delegowanie dostępu do operacji na poziomie usługi, które nie są obecnie dostępne w ramach sygnatury dostępu współdzielonego specyficznej dla usługi, takich jak Pobieranie właściwości usługi Blob Service, Ustawianie właściwości usługi Blob Service i Pobieranie statystyk usługi Blob Service.
  • Delegowanie dostępu do więcej niż jednej usługi na koncie magazynu jednocześnie. Na przykład można delegować dostęp do zasobów zarówno w usłudze Azure Blob Storage, jak i w usłudze Azure Files przy użyciu sygnatury dostępu współdzielonego konta.

Przechowywane zasady dostępu nie są obsługiwane dla sygnatury dostępu współdzielonego konta.

Tworzenie sygnatury dostępu współdzielonego konta

Sygnatura dostępu współdzielonego konta jest podpisana przy użyciu klucza dostępu do konta. Poniższy przykład kodu pokazuje, jak wywołać metodę generate_account_sas w celu pobrania ciągu tokenu SAS konta.

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

Prawidłowe parametry konstruktora ResourceTypes to:

  • usługa: wartość domyślna to False; ustawiona na wartość w celu True udzielenia dostępu do interfejsów API na poziomie usługi.
  • kontener: wartość domyślna to False; ustawiona na wartość w celu True udzielenia dostępu do interfejsów API na poziomie kontenera.
  • object: wartość domyślna to False; ustawiona na wartość w celu True udzielenia dostępu do interfejsów API na poziomie obiektu dla obiektów blob, komunikatów kolejek i plików.

Aby uzyskać dostępne uprawnienia, zobacz AccountSasPermissions.

Używanie sygnatury dostępu współdzielonego konta z klienta

Aby uzyskać dostęp do interfejsów API na poziomie usługi Blob przy użyciu sygnatury dostępu współdzielonego konta, utwórz obiekt BlobServiceClient przy użyciu sygnatury dostępu współdzielonego konta i punktu końcowego usługi Blob Storage dla konta magazynu.

# 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)

Sygnaturę dostępu współdzielonego konta można również użyć do autoryzowania obiektu ContainerClient lub obiektu BlobClient, jeśli te typy zasobów mają dostęp w ramach wartości podpisu.

Zasoby

Aby dowiedzieć się więcej na temat tworzenia sygnatury dostępu współdzielonego konta przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka Python, zobacz następujące zasoby.

Przykłady kodu

Zasoby biblioteki klienta

Zobacz też