Udostępnij za pomocą


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 blobów na koncie pamięci masowej. 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żdy SAS jest podpisany kluczem. Możesz podpisać SAS 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ń Microsoft Entra to sygnatura dostępu współdzielonego z delegowaniem użytkownika. Klient, który tworzy token delegowania użytkownika SAS, musi mieć przypisaną rolę RBAC platformy Azure, która obejmuje akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Aby dowiedzieć się więcej, przeczytaj Tworzenie delegowanej SAS użytkownika.
  • Przy użyciu klucza konta przechowywania. Sygnatura SAS usługi i sygnatura SAS konta są podpisane przy użyciu klucza konta magazynowego. Klient, który tworzy usługową sygnaturę dostępu SAS, musi mieć bezpośredni dostęp do klucza konta lub mieć przypisane do uprawnienie Microsoft.Storage/storageAccounts/listkeys/action. Aby dowiedzieć się więcej, zobacz Utwórz SAS usługi lub Utwórz SAS konta.

Uwaga

Delegacja dostępu użytkownika w SAS oferuje lepsze zabezpieczenia niż SAS podpisany kluczem konta magazynu. Microsoft zaleca, jeśli to możliwe, używanie delegowanej sygnatury dostępu SAS. 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 koncie SAS

Sygnatura dostępu współdzielonego konta (SAS) jest tworzona na poziomie konta magazynu. Tworząc konto SAS, możesz:

  • Delegowanie dostępu do operacji na poziomie usługi, które nie są obecnie dostępne w ramach specyficznej dla usługi sygnatury dostępu współdzielonego, takich jak Pobieranie właściwości usługi Blob, Ustawianie właściwości usługi Blob i Pobieranie statystyk usługi Blob.
  • Delegowanie dostępu do więcej niż jednej usługi w ramach konta magazynowego 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.

Zasady dostępu przechowywane nie są obsługiwane dla sygnatury dostępu współdzielonego (SAS) konta.

Utwórz konto SAS

Klucz SAS dla konta jest podpisywany kluczem 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; ustaw na True, aby uzyskać dostęp do interfejsów API na poziomie usługi.
  • kontener: domyślnie False; ustaw na True w celu uzyskania dostępu do interfejsów API na poziomie kontenera.
  • object: wartość domyślna to False; ustaw na True, aby udzielić dostępu do obiektowych interfejsów API 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 Twojego 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ż