Specificare una chiave fornita dal cliente in una richiesta di archiviazione BLOB con .NET
I client che effettuano richieste nell'archiviazione BLOB di Azure hanno la possibilità di fornire una chiave di crittografia AES-256 su una singola richiesta. L'inclusione della chiave di crittografia nella richiesta fornisce un controllo granulare sulle impostazioni di crittografia per le operazioni di archiviazione BLOB. Le chiavi fornite dal cliente possono essere archiviate in Azure Key Vault o in un altro archivio chiavi.
Questo articolo illustra come specificare una chiave fornita dal cliente in una richiesta con .NET.
Installare i pacchetti della libreria client
Nota
Gli esempi illustrati di seguito usano la libreria client di Archiviazione di Azure versione 12. La libreria client versione 12 fa parte di Azure SDK. Per altre informazioni su Azure SDK, vedere il repository di Azure SDK in GitHub.
Per installare il pacchetto di archiviazione Blob, eseguire i comandi seguenti dalla console di gestione pacchetti NuGet:
Install-Package Azure.Storage.Blobs
Gli esempi illustrati di seguito usano anche la versione più recente della libreria client Azure Identity per .NET per eseguire l'autenticazione con le credenziali di Microsoft Entra. Per installare il pacchetto, eseguire il comando seguente dalla console di installazione pacchetti NuGet:
Install-Package Azure.Identity
Per altre informazioni su come eseguire l'autenticazione con la libreria client di Identità di Azure, vedere libreria client di Identità di Azure per .NET.
Usare una chiave fornita dal cliente per scrivere in un BLOB
L'esempio seguente fornisce una chiave AES-256 durante il caricamento di un BLOB con la libreria client v12 per l'archiviazione BLOB. Nell'esempio viene usato l'oggetto DefaultAzureCredential per autorizzare la richiesta di scrittura con l'ID Microsoft Entra, ma è anche possibile autorizzare la richiesta con le credenziali della chiave condivisa. Per altre informazioni sull'uso della classe DefaultAzureCredential per autorizzare un'identità gestita ad accedere ad Archiviazione di Azure, vedere Libreria client di Identità di Azure per .NET.
async static Task UploadBlobWithClientKey(Uri blobUri,
Stream data,
byte[] key,
string keySha256)
{
// Create a new customer-provided key.
// Key must be AES-256.
var cpk = new CustomerProvidedKey(key);
// Check the key's encryption hash.
if (cpk.EncryptionKeyHash != keySha256)
{
throw new InvalidOperationException("The encryption key is corrupted.");
}
// Specify the customer-provided key on the options for the client.
BlobClientOptions options = new BlobClientOptions()
{
CustomerProvidedKey = cpk
};
// Create the client object with options specified.
BlobClient blobClient = new BlobClient(
blobUri,
new DefaultAzureCredential(),
options);
// If the container may not exist yet,
// create a client object for the container.
// The container client retains the credential and client options.
BlobContainerClient containerClient =
blobClient.GetParentBlobContainerClient();
try
{
// Create the container if it does not exist.
await containerClient.CreateIfNotExistsAsync();
// Upload the data using the customer-provided key.
await blobClient.UploadAsync(data);
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}