Creare una firma di accesso condiviso dell'account con .NET

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, tra cui quali Archiviazione di Azure risorse a cui un client è autorizzato ad accedere, quali autorizzazioni hanno per tali risorse e per quanto tempo la firma di accesso condiviso è valida.

Ogni firma di accesso condiviso viene firmata con una chiave. È possibile firmare una firma di accesso condiviso in uno dei due modi seguenti:

  • 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 della delega utente. A un client che crea una firma di accesso condiviso della delega utente deve essere assegnato un ruolo controllo degli accessi in base al ruolo di Azure che include Microsoft.ArchiviazioneAzione /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 di archiviazione sono 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 essere assegnato a Microsoft.ArchiviazioneAutorizzazione /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 della delega utente offre una sicurezza superiore 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 per la delega utente. Per altre informazioni, vedere Concedere l'accesso limitato ai dati con 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 Archiviazione di Azure per .NET.

Informazioni sulla firma di accesso condiviso dell'account

Viene creata una firma di accesso condiviso dell'account al livello dell'account di archiviazione. Creando una firma di accesso condiviso dell'account, è possibile:

  • Delegare l'accesso alle operazioni a livello di servizio attualmente non disponibili con una firma di accesso condiviso specifica del servizio, ad esempio Recupera proprietà del servizio BLOB, Impostare le proprietà del servizio BLOB e Ottenere statistiche del servizio BLOB.
  • Delegare l'accesso a più servizi in un account di archiviazione alla volta. Ad esempio, è possibile delegare l'accesso alle risorse sia in Archiviazione BLOB di Azure che in File di Azure usando una firma di accesso condiviso dell'account.

I criteri di accesso archiviati non sono supportati per una 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. È possibile usare la classe Archiviazione SharedKeyCredential per creare le credenziali usate per firmare la firma di accesso condiviso.

L'esempio di codice seguente illustra come creare un nuovo oggetto AccountSasBuilder e chiamare il metodo ToSasQueryParameters per ottenere la stringa del token di firma di accesso condiviso dell'account.

public static async Task<string> CreateAccountSAS(StorageSharedKeyCredential sharedKey)
{
    // Create a SAS token that's valid for one day
    AccountSasBuilder sasBuilder = new AccountSasBuilder()
    {
        Services = AccountSasServices.Blobs | AccountSasServices.Queues,
        ResourceTypes = AccountSasResourceTypes.Service,
        ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
        Protocol = SasProtocol.Https
    };

    sasBuilder.SetPermissions(AccountSasPermissions.Read |
        AccountSasPermissions.Write);

    // Use the key to get the SAS token
    string sasToken = sasBuilder.ToSasQueryParameters(sharedKey).ToString();

    return sasToken;
}

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 blob Archiviazione per l'account di archiviazione.

string accountName = "<storage-account-name>";
string accountKey = "<storage-account-key>";
StorageSharedKeyCredential storageSharedKeyCredential =
    new(accountName, accountKey);

// Create a BlobServiceClient object with the account SAS appended
string blobServiceURI = $"https://{accountName}.blob.core.windows.net";
string sasToken = await CreateAccountSAS(storageSharedKeyCredential);
BlobServiceClient blobServiceClientAccountSAS = new BlobServiceClient(
    new Uri($"{blobServiceURI}?{sasToken}"));

Risorse

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

Risorse della libreria client

Vedi anche