Creare una firma di accesso condiviso dell'account con Python

Una firma di accesso condiviso consente di concedere l'accesso limitato a contenitori e BLOB nell'account di archiviazione. Quando si crea una firma di accesso condiviso, si specificano i vincoli, incluse le risorse di Archiviazione di Azure a cui un client è autorizzato ad accedere, quali autorizzazioni ha per tali risorse e per quanto tempo è valida la firma di accesso condiviso.

Ogni firma di accesso condiviso viene firmata con una chiave. Questa operazione può essere eseguita in due modi:

  • Con una chiave creata usando le credenziali di Microsoft Entra. Una firma di accesso condiviso firmata con le credenziali di Microsoft Entra è una firma di accesso condiviso di delega utente. A un client che crea una firma di accesso condiviso di delega utente deve essere assegnato un ruolo controllo degli accessi in base al ruolo di Azure che include l'azione Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Per altre informazioni, vedere Creare una firma di accesso condiviso di delega utente.
  • Con la chiave dell'account di archiviazione. Sia una firma di accesso condiviso del servizio che una firma di accesso condiviso dell'account vengono firmate con la chiave dell'account di archiviazione. Il client che crea una firma di accesso condiviso del servizio deve avere accesso diretto alla chiave dell'account o deve avere l'autorizzazione Microsoft.Storage/storageAccounts/listkeys/action. Per altre informazioni, vedere Creare una firma di accesso condiviso del servizio o Creare una firma di accesso condiviso dell'account.

Nota

Una firma di accesso condiviso di delega utente offre una sicurezza superiore rispetto a una firma di accesso condiviso firmata con la chiave dell'account di archiviazione. Quando possibile, Microsoft consiglia di usare una firma di accesso condiviso di delega utente. Per altre informazioni, vedere Concedere accesso limitato ai dati con le firme di accesso condiviso.

Questo articolo illustra come usare la chiave dell'account di archiviazione per creare una firma di accesso condiviso dell'account con la libreria client di Archiviazione di Azure per Python.

Informazioni sulla firma di accesso condiviso dell'account

Una firma di accesso condiviso dell'account viene creata a livello dell'account di archiviazione. Creando una firma di accesso condiviso dell'account, è possibile:

I criteri di accesso archiviati non sono supportati per la firma di accesso condiviso dell'account.

Creare un SAS dell'account

Una firma di accesso condiviso dell'account viene firmata con la chiave di accesso dell'account. L'esempio di codice seguente illustra come chiamare il metodo generate_account_sas per ottenere la stringa del token di firma di accesso condiviso dell'account.

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

I parametri validi per il costruttore ResourceTypes sono:

  • service: l'impostazione predefinita è False; impostare su True per concedere l'accesso alle API a livello di servizio.
  • container: l'impostazione predefinita è False; impostare su True per concedere l'accesso alle API a livello di contenitore.
  • object: l'impostazione predefinita è False; impostare su True per concedere l'accesso alle API a livello di oggetto per BLOB, messaggi in coda e file.

Per le autorizzazioni disponibili, vedere AccountSasPermissions.

Usare una firma di accesso condiviso dell'account da un client

Per usare la firma di accesso condiviso dell'account per accedere alle API a livello di servizio per il servizio BLOB, creare un oggetto BlobServiceClient usando la firma di accesso condiviso dell'account e l'endpoint di archiviazione BLOB per l'account di archiviazione corrente.

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

È anche possibile usare una firma di accesso condiviso dell'account per autorizzare e usare un oggetto ContainerClient o un oggetto BlobClient, se a tali tipi di risorse viene concesso l'accesso come parte dei valori della firma.

Risorse

Per altre informazioni sulla creazione di una firma di accesso condiviso dell'account usando la libreria client di Archiviazione BLOB di Azure per Python, vedere le risorse seguenti.

Esempi di codice

Risorse per la libreria client

Vedi anche