Een door de klant verstrekte sleutel opgeven voor een aanvraag voor Blob Storage met .NET

Clients die aanvragen indienen voor Azure Blob Storage, hebben de mogelijkheid om een AES-256-versleutelingssleutel op te geven voor een afzonderlijke aanvraag. Het opnemen van de versleutelingssleutel in de aanvraag biedt gedetailleerde controle over versleutelingsinstellingen voor blobopslagbewerkingen. Door de klant geleverde sleutels kunnen worden opgeslagen in Azure Key Vault of in een ander sleutelarchief.

In dit artikel wordt beschreven hoe u een door de klant verstrekte sleutel opgeeft voor een aanvraag met .NET.

Clientbibliotheekpakketten installeren

Notitie

In de voorbeelden die hier worden weergegeven, wordt versie 12 van de Azure Storage-clientbibliotheek gebruikt. De clientbibliotheek van versie 12 maakt deel uit van de Azure SDK. Zie de Azure SDK-opslagplaats op GitHub voor meer informatie over de Azure SDK.

Als u het Blob Storage-pakket wilt installeren, voert u de volgende opdracht uit vanuit de NuGet Package Manager-console:

Install-Package Azure.Storage.Blobs

De voorbeelden die hier worden weergegeven, gebruiken ook de nieuwste versie van de Azure Identity-clientbibliotheek voor .NET om te verifiëren met Microsoft Entra-referenties. Voer de volgende opdracht uit vanuit de NuGet Package Manager-console om het pakket te installeren:

Install-Package Azure.Identity

Zie de Azure Identity-clientbibliotheek voor .NET voor meer informatie over verificatie met de Azure Identity-clientbibliotheek.

Een door de klant geleverde sleutel gebruiken om naar een blob te schrijven

Het volgende voorbeeld bevat een AES-256-sleutel bij het uploaden van een blob met de v12-clientbibliotheek voor Blob Storage. In het voorbeeld wordt het defaultAzureCredential-object gebruikt om de schrijfaanvraag te autoriseren met Microsoft Entra-id, maar u kunt de aanvraag ook autoriseren met referenties voor gedeelde sleutels. Zie de Azure Identity-clientbibliotheek voor .NET voor meer informatie over het gebruik van de klasse DefaultAzureCredential om een beheerde identiteit te autoriseren voor toegang tot Azure Storage.

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;
    }
}

Volgende stappen