Vytvoření sdíleného přístupového podpisu účtu pomocí Pythonu

Sdílený přístupový podpis (SAS) umožňuje udělit omezený přístup ke kontejnerům a objektům blob ve vašem účtu úložiště. Při vytváření sdíleného přístupového podpisu zadáte jeho omezení, včetně toho, ke kterým prostředkům Azure Storage má klient povolený přístup, jaká oprávnění k těmto prostředkům má a jak dlouho je SAS platný.

Každý SAS je podepsaný klíčem. Sas můžete podepsat jedním ze dvou způsobů:

  • S klíčem vytvořeným pomocí přihlašovacích údajů Microsoft Entra. SAS podepsaný pomocí přihlašovacích údajů Microsoft Entra je SAS delegování uživatele. Klientovi, který vytvoří SAS delegování uživatele, musí být přiřazena role Azure RBAC, která zahrnuje akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Další informace najdete v tématu Vytvoření SAS delegování uživatele.
  • S klíčem účtu úložiště. Sas služby i SAS účtu jsou podepsané klíčem účtu úložiště. Klient, který vytvoří SAS služby, musí mít buď přímý přístup k klíči účtu, nebo musí mít přiřazené oprávnění Microsoft.Storage/storageAccounts/listkeys/action . Další informace najdete v tématu Vytvoření sdíleného přístupového podpisu služby nebo vytvoření sdíleného přístupového podpisu účtu.

Poznámka:

Sas delegování uživatele nabízí vynikající zabezpečení SAS podepsanému klíčem účtu úložiště. Microsoft doporučuje používat SAS delegování uživatele, pokud je to možné. Další informace najdete v tématu Udělení omezeného přístupu k datům pomocí sdílených přístupových podpisů (SAS).

Tento článek ukazuje, jak pomocí klíče účtu úložiště vytvořit SAS účtu s klientskou knihovnou Azure Storage pro Python.

O SAS účtu

Sas účtu se vytvoří na úrovni účtu úložiště. Vytvořením sdíleného přístupového podpisu účtu můžete:

  • Delegujte přístup k operacím na úrovni služby, které nejsou aktuálně dostupné u sdíleného přístupového podpisu specifického pro službu, jako je získání vlastností služby Blob Service, nastavení vlastností služby Blob Service a získání statistik služby Blob Service.
  • Delegujte přístup k více službám v účtu úložiště najednou. Přístup k prostředkům ve službě Azure Blob Storage a Azure Files můžete například delegovat pomocí sdíleného přístupového podpisu účtu.

Zásady uloženého přístupu nejsou u sdíleného přístupového podpisu účtu podporované.

Vytvoření SAS účtu

Sdílený přístupový podpis účtu je podepsaný pomocí přístupového klíče účtu. Následující příklad kódu ukazuje, jak volat generate_account_sas metodu získání řetězce tokenu SAS účtu.

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

Platné parametry pro konstruktor ResourceTypes jsou:

  • služba: výchozí hodnota je False; nastavená na True udělení přístupu k rozhraním API na úrovni služby.
  • container: default is False; set to True grant access to container-level API.
  • object: default is False; set to True grant access to object-level API for blobs, queue messages, and files.

Dostupná oprávnění najdete v tématu AccountSasPermissions.

Použití sdíleného přístupového podpisu účtu z klienta

Pokud chcete použít SAS účtu pro přístup k rozhraním API na úrovni služeb pro službu Blob, vytvořte objekt BlobServiceClient pomocí sdíleného přístupového podpisu účtu a koncového bodu služby Blob Storage pro váš účet úložiště.

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

Sas účtu můžete také použít k autorizaci a práci s objektem ContainerClient nebo objektem BlobClient , pokud jsou tyto typy prostředků udělen přístup jako součást hodnot podpisu.

Zdroje informací

Další informace o vytvoření SAS účtu pomocí klientské knihovny Azure Blob Storage pro Python najdete v následujících zdrojích informací.

Ukázky kódu

Prostředky klientské knihovny

Viz také