Udostępnij za pośrednictwem


Tworzenie sygnatury dostępu współdzielonego usługi dla kontenera 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 usługi dla kontenera z biblioteką klienta usługi Blob Storage dla języka Python.

Informacje o sygnaturze dostępu współdzielonego usługi

Sygnatura dostępu współdzielonego usługi jest podpisana przy użyciu klucza dostępu do konta magazynu. Sygnatura dostępu współdzielonego usługi deleguje dostęp do zasobu w jednej usłudze Azure Storage, takiej jak Blob Storage.

Możesz również użyć zapisanych zasad dostępu, aby zdefiniować uprawnienia i czas trwania sygnatury dostępu współdzielonego. Jeśli podano nazwę istniejących przechowywanych zasad dostępu, te zasady są skojarzone z sygnaturą dostępu współdzielonego. Aby dowiedzieć się więcej na temat przechowywanych zasad dostępu, zobacz Definiowanie przechowywanych zasad dostępu. Jeśli nie podano żadnych przechowywanych zasad dostępu, przykłady kodu w tym artykule pokazują, jak zdefiniować uprawnienia i czas trwania sygnatury dostępu współdzielonego.

Tworzenie sygnatury dostępu współdzielonego usługi dla kontenera

Sygnaturę dostępu współdzielonego usługi można utworzyć, aby delegować ograniczony dostęp do zasobu kontenera przy użyciu następującej metody:

Klucz dostępu konta magazynu używany do podpisywania sygnatury dostępu współdzielonego jest przekazywany do metody jako argumentu account_key . Dozwolone uprawnienia są przekazywane do metody jako argumentu permission i są zdefiniowane w klasie ContainerSasPermissions .

Poniższy przykład kodu przedstawia sposób tworzenia sygnatury dostępu współdzielonego usługi z uprawnieniami do odczytu dla zasobu kontenera:

def create_service_sas_container(self, container_client: ContainerClient, account_key: str):
    # Create a SAS token that's valid for one day, as an example
    start_time = datetime.datetime.now(datetime.timezone.utc)
    expiry_time = start_time + datetime.timedelta(days=1)

    sas_token = generate_container_sas(
        account_name=container_client.account_name,
        container_name=container_client.container_name,
        account_key=account_key,
        permission=ContainerSasPermissions(read=True),
        expiry=expiry_time,
        start=start_time
    )

    return sas_token

Używanie sygnatury dostępu współdzielonego usługi do autoryzowania obiektu klienta

Poniższy przykład kodu pokazuje, jak użyć sygnatury dostępu współdzielonego usługi utworzonej we wcześniejszym przykładzie w celu autoryzowania obiektu ContainerClient . Ten obiekt klienta może służyć do wykonywania operacji na zasobie kontenera na podstawie uprawnień przyznanych przez sygnaturę dostępu współdzielonego.

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

# Create a ContainerClient object with SAS authorization
container_client_sas = ContainerClient.from_container_url(container_url=sas_url)

Zasoby

Aby dowiedzieć się więcej na temat korzystania z biblioteki klienta usługi Azure Blob Storage dla języka Python, zobacz następujące zasoby.

Przykłady kodu

Zasoby biblioteki klienta

Zobacz też