Określanie klucza dostarczonego przez klienta na żądanie do usługi Blob Storage przy użyciu platformy .NET

Klienci wysyłający żądania do usługi Azure Blob Storage mają możliwość podania klucza szyfrowania AES-256 dla pojedynczego żądania. Dołączenie klucza szyfrowania do żądania zapewnia szczegółową kontrolę nad ustawieniami szyfrowania dla operacji usługi Blob Storage. Klucze dostarczone przez klienta mogą być przechowywane w usłudze Azure Key Vault lub w innym magazynie kluczy.

W tym artykule pokazano, jak określić klucz dostarczony przez klienta na żądanie przy użyciu platformy .NET.

Instalowanie pakietów bibliotek klienta

Uwaga

Przedstawione tutaj przykłady korzystają z biblioteki klienta usługi Azure Storage w wersji 12. Biblioteka klienta w wersji 12 jest częścią zestawu Azure SDK. Aby uzyskać więcej informacji na temat zestawu Azure SDK, zobacz repozytorium zestawu Azure SDK w witrynie GitHub.

Aby zainstalować pakiet usługi Blob Storage, uruchom następujące polecenie w konsoli menedżera pakietów NuGet:

Install-Package Azure.Storage.Blobs

Przedstawione tutaj przykłady używają również najnowszej wersji biblioteki klienta tożsamości platformy Azure dla platformy .NET do uwierzytelniania przy użyciu poświadczeń firmy Microsoft Entra. Aby zainstalować pakiet, uruchom następujące polecenie w konsoli menedżera pakietów NuGet:

Install-Package Azure.Identity

Aby dowiedzieć się więcej o sposobie uwierzytelniania za pomocą biblioteki klienta tożsamości platformy Azure, zobacz Biblioteka klienta tożsamości platformy Azure dla platformy .NET.

Zapisywanie w obiekcie blob przy użyciu klucza dostarczonego przez klienta

W poniższym przykładzie przedstawiono klucz AES-256 podczas przekazywania obiektu blob za pomocą biblioteki klienta v12 dla usługi Blob Storage. W przykładzie użyto obiektu DefaultAzureCredential , aby autoryzować żądanie zapisu za pomocą identyfikatora Entra firmy Microsoft, ale możesz również autoryzować żądanie przy użyciu poświadczeń klucza współdzielonego. Aby uzyskać więcej informacji na temat używania klasy DefaultAzureCredential do autoryzowania tożsamości zarządzanej w celu uzyskania dostępu do usługi Azure Storage, zobacz Biblioteka klienta tożsamości platformy Azure dla platformy .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;
    }
}

Następne kroki