تحديد مفتاح مقدم من العميل على طلب لمخزن البيانات الثنائية الكبيرة باستخدام .NET

يتوفر للعملاء الذين يقدمون طلبات مقابل تخزين Azure Blob خيار توفير مفتاح تشفير AES-256 بناء على طلب فردي. يوفر تضمين مفتاح التشفير في الطلب تحكما دقيقا في إعدادات التشفير لعمليات تخزين Blob. يمكن تخزين المفاتيح التي يوفرها العميل في Azure Key Vault أو في مخزن مفاتيح آخر.

توضح هذه المقالة كيفية تحديد مفتاح مقدم من العميل على طلب باستخدام .NET.

تثبيت حزم مكتبة العميل

إشعار

تستخدم الأمثلة الموضحة هنا الإصدار 12 من مكتبة عميل Azure Storage. مكتبة عميل الإصدار 12 هي جزء من Azure SDK. لمزيد من المعلومات حول Azure SDK، راجع مستودع Azure SDK على GitHub.

لتثبيت حزمة تخزين Blob، قم بتشغيل الأمر التالي من وحدة تحكم إدارة حزم NuGet:

Install-Package Azure.Storage.Blobs

تستخدم الأمثلة الموضحة هنا أيضا أحدث إصدار من مكتبة عميل Azure Identity ل .NET للمصادقة باستخدام بيانات اعتماد Microsoft Entra. لتثبيت الحزمة، قم بتشغيل الأمر التالي من وحدة التحكم إدارة حزم NuGet:

Install-Package Azure.Identity

لمعرفة المزيد حول كيفية المصادقة مع مكتبة عميل Azure Identity، راجع مكتبة عميل Azure Identity لـ.NET.

استخدام مفتاح مقدم من العميل للكتابة إلى نقطة

يوفر المثال التالي مفتاح AES-256 عند تحميل نقطة مع مكتبة عميل v12 لتخزين Blob. يستخدم المثال الكائن DefaultAzureCredential لتخويل طلب الكتابة باستخدام معرف Microsoft Entra، ولكن يمكنك أيضا تخويل الطلب باستخدام بيانات اعتماد المفتاح المشترك. لمزيد من المعلومات حول استخدام الفئة DefaultAzureCredential لتفويض هوية مدارة للوصول إلى موقع تخزين Azure، راجع مكتبة هوية العميل Azure ل .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;
    }
}

الخطوات التالية