Aracılığıyla paylaş


.NET ile Blob depolama isteğinde müşteri tarafından sağlanan bir anahtar belirtme

Azure Blob depolamada istekte bulunan istemciler, tek bir istekte AES-256 şifreleme anahtarı sağlama seçeneğine sahiptir. İstekte şifreleme anahtarı dahil olmak, Blob depolama işlemleri için şifreleme ayarları üzerinde ayrıntılı denetim sağlar. Müşteri tarafından sağlanan anahtarlar Azure Key Vault'ta veya başka bir anahtar deposunda depolanabilir.

Bu makalede, .NET ile bir istekte müşteri tarafından sağlanan bir anahtarın nasıl belirtilmesi gösterilmektedir.

İstemci kitaplığı paketlerini yükleme

Dekont

Burada gösterilen örneklerde Azure Depolama istemci kitaplığı sürüm 12 kullanılır. Sürüm 12 istemci kitaplığı, Azure SDK'nın bir parçasıdır. Azure SDK hakkında daha fazla bilgi için GitHub'daki Azure SDK deposuna bakın.

Blob depolama paketini yüklemek için NuGet paket yöneticisi konsolundan aşağıdaki komutu çalıştırın:

Install-Package Azure.Storage.Blobs

Burada gösterilen örnekler, Microsoft Entra kimlik bilgileriyle kimlik doğrulaması yapmak için .NET için Azure Identity istemci kitaplığının en son sürümünü de kullanır. Paketi yüklemek için NuGet paket yöneticisi konsolundan aşağıdaki komutu çalıştırın:

Install-Package Azure.Identity

Azure Identity istemci kitaplığıyla kimlik doğrulaması yapma hakkında daha fazla bilgi edinmek için bkz . .NET için Azure Identity istemci kitaplığı.

Bloba yazmak için müşteri tarafından sağlanan bir anahtar kullanma

Aşağıdaki örnek, Blob depolama için v12 istemci kitaplığına sahip bir blob karşıya yüklenirken bir AES-256 anahtarı sağlar. Örnek, Microsoft Entra Kimliği ile yazma isteğini yetkilendirmek için DefaultAzureCredential nesnesini kullanır, ancak isteği Paylaşılan Anahtar kimlik bilgileriyle de yetkileyebilirsiniz. Yönetilen kimliği Azure Depolama erişim yetkisi vermek üzere DefaultAzureCredential sınıfını kullanma hakkında daha fazla bilgi için bkz. .NET için Azure Identity istemci kitaplığı.

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

Sonraki adımlar