Share via


Ange en kundtilldelad nyckel för en begäran till Blob Storage med .NET

Klienter som gör begäranden mot Azure Blob Storage har möjlighet att tillhandahålla en AES-256-krypteringsnyckel för en enskild begäran. Om du inkluderar krypteringsnyckeln på begäran får du detaljerad kontroll över krypteringsinställningarna för Blob Storage-åtgärder. Kundspecifika nycklar kan lagras i Azure Key Vault eller i ett annat nyckelarkiv.

Den här artikeln visar hur du anger en kundbaserad nyckel för en begäran med .NET.

Installera klientbibliotekspaket

Kommentar

Exemplen som visas här använder Azure Storage-klientbiblioteket version 12. Version 12-klientbiblioteket är en del av Azure SDK. Mer information om Azure SDK finns i Azure SDK-lagringsplatsen på GitHub.

Om du vill installera Blob Storage-paketet kör du följande kommando från NuGet-pakethanterarens konsol:

Install-Package Azure.Storage.Blobs

Exemplen som visas här använder också den senaste versionen av Azure Identity-klientbiblioteket för .NET för att autentisera med Microsoft Entra-autentiseringsuppgifter. Installera paketet genom att köra följande kommando från NuGet-pakethanterarens konsol:

Install-Package Azure.Identity

Mer information om hur du autentiserar med Azure Identity-klientbiblioteket finns i Azure Identity-klientbiblioteket för .NET.

Använda en kundtilldelad nyckel för att skriva till en blob

I följande exempel finns en AES-256-nyckel när du laddar upp en blob med v12-klientbiblioteket för Blob Storage. I exemplet används objektet DefaultAzureCredential för att auktorisera skrivbegäran med Microsoft Entra-ID, men du kan också auktorisera begäran med autentiseringsuppgifter för delad nyckel. Mer information om hur du använder klassen DefaultAzureCredential för att auktorisera en hanterad identitet för åtkomst till Azure Storage finns i Azure Identity-klientbiblioteket för .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;
    }
}

Nästa steg