Sdílet prostřednictvím


Vytvoření SAS služby pro kontejner nebo objekt blob 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 služby pro kontejner nebo objekt blob s klientskou knihovnou Blob Storage pro Python.

Informace o SAS služby

Sdílený přístupový podpis služby je podepsaný přístupovým klíčem účtu úložiště. SAS služby deleguje přístup k prostředku v jedné službě Azure Storage, jako je například Blob Storage.

K definování oprávnění a doby trvání sdíleného přístupového podpisu můžete použít také uložené zásady přístupu. Pokud je zadaný název existující uložené zásady přístupu, je tato zásada přidružená k SAS. Další informace o uložených zásadách přístupu najdete v tématu Definování uložených zásad přístupu. Pokud nejsou k dispozici žádné uložené zásady přístupu, příklady kódu v tomto článku ukazují, jak definovat oprávnění a dobu trvání sas.

Vytvoření SAS služby

Sas služby pro kontejner nebo objekt blob můžete vytvořit na základě potřeb vaší aplikace.

Sas služby můžete vytvořit pro delegování omezeného přístupu k prostředku kontejneru pomocí následující metody:

Přístupový klíč účtu úložiště použitý k podepsání sdíleného přístupového podpisu se předá metodě jako account_key argument. Povolená oprávnění jsou předána metodě jako permission argument a jsou definována ve třídě ContainerSasPermissions .

Následující příklad kódu ukazuje, jak vytvořit SAS služby s oprávněními ke čtení pro prostředek kontejneru:

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

Použití sdíleného přístupového podpisu služby k autorizaci objektu klienta

Sas služby můžete použít k autorizaci klientského objektu k provádění operací s kontejnerem nebo objektem blob na základě oprávnění udělených SAS.

Následující příklad kódu ukazuje, jak použít SAS služby vytvořené v předchozím příkladu k autorizaci objektu ContainerClient . Tento objekt klienta lze použít k provádění operací s prostředkem kontejneru na základě oprávnění udělených SAS.

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

Zdroje informací

Další informace o používání klientské knihovny služby Azure Blob Storage pro Python najdete v následujících zdrojích informací.

Ukázky kódu

Prostředky klientské knihovny

Viz také