Zadání klíče poskytnutého zákazníkem v požadavku do úložiště objektů blob pomocí .NET

Klienti provádějící požadavky na azure Blob Storage mají možnost poskytnout šifrovací klíč AES-256 na jednotlivé žádosti. Zahrnutí šifrovacího klíče do požadavku poskytuje podrobnou kontrolu nad nastavením šifrování pro operace úložiště objektů blob. Klíče poskytnuté zákazníkem je možné ukládat ve službě Azure Key Vault nebo v jiném úložišti klíčů.

Tento článek ukazuje, jak zadat klíč poskytnutý zákazníkem v požadavku pomocí .NET.

Instalace balíčků klientské knihovny

Poznámka:

Zde uvedené příklady používají klientskou knihovnu azure Storage verze 12. Klientská knihovna verze 12 je součástí sady Azure SDK. Další informace o sadě Azure SDK najdete v úložišti Azure SDK na GitHubu.

Pokud chcete nainstalovat balíček úložiště objektů blob, spusťte z konzoly správce balíčků NuGet následující příkaz:

Install-Package Azure.Storage.Blobs

Zde uvedené příklady také používají nejnovější verzi klientské knihovny Azure Identity pro .NET k ověření pomocí přihlašovacích údajů Microsoft Entra. Balíček nainstalujete spuštěním následujícího příkazu z konzoly správce balíčků NuGet:

Install-Package Azure.Identity

Další informace o ověřování pomocí klientské knihovny Azure Identity najdete v klientské knihovně Azure Identity pro .NET.

Použití klíče poskytnutého zákazníkem k zápisu do objektu blob

Následující příklad poskytuje klíč AES-256 při nahrávání objektu blob s klientskou knihovnou v12 pro úložiště objektů blob. Příklad používá DefaultAzureCredential objekt k autorizaci žádosti o zápis pomocí Microsoft Entra ID, ale můžete také autorizovat požadavek pomocí přihlašovacích údajů sdíleného klíče. Další informace o použití defaultAzureCredential třídy k autorizaci spravované identity pro přístup ke službě Azure Storage naleznete v tématu Klientská knihovna identit Azure pro .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;
    }
}

Další kroky