برنامج تعليمي: الوصول إلى خدمات Azure من تطبيق ويب .NET

تعرف على كيفية الوصول إلى خدمات Azure، مثل Azure Storage، من تطبيق ويب (ليس مستخدماً سجّل الدخول) يعمل على Azure App Service باستخدام الهويات المُدارة. يوضح هذا البرنامج التعليمي الاتصال بـ Azure Storage كمثال.

يمكن الوصول بأمان إلى أي خدمة تدعم الهوية المُدارة (ب في الصورة التالية) باستخدام هذا البرنامج التعليمي:

  • تخزين Azure
  • قاعدة بيانات Azure SQL
  • Azure Key Vault

Diagram that shows how to access storage.

تريد إضافة وصول آمن إلى خدمات Azure (Azure Storage أو Azure SQL Database، أو Azure Key Vault، أو خدمات أخرى) من تطبيق الويب الخاص بك. يمكنكم استخدام مفتاح مشترك، ولكن عندها عليكم أن تقلقوا حيال أمن العمليات لمن يمكنه إنشاء كلمة السر ونشرها وإدارتها. من الممكن أيضًا أن يتم فحص المفتاح في GitHub، والتي يعرف المتسللون كيفية البحث عنها. من الطرق الأكثر أمانًا لمنح تطبيق الويب الخاص بكم الوصول إلى البيانات وهي استخدام هوية مُدارة.

تسمح الهوية المدارة من معرف Microsoft Entra ل App Service بالوصول إلى الموارد من خلال التحكم في الوصول استنادا إلى الدور (RBAC)، دون الحاجة إلى بيانات اعتماد التطبيق. بعد تعيين هوية مدارة إلى تطبيق الويب الخاص بكم، تتولى Azure مهمة إنشاء شهادة وتوزيعها. لا داعي للقلق بشأن إدارة الأسرار أو بيانات اعتماد التطبيق.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء هوية مُدارة من قبل النظام على تطبيق ويب.
  • إنشاء حساب تخزين وحاوية تخزين Azure Blob.
  • الوصول إلى التخزين من تطبيق ويب باستخدام الهويات المدارة.

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

المتطلبات الأساسية

تمكين الهوية المدارة في التطبيق

إذا قمت بإنشاء ونشر تطبيق الويب الخاص بك من خلال Visual Studio، فسيتم تمكين الهوية المدارة في التطبيق الخاص بك. في خدمة التطبيق، يرجى تحديد"تمييز" في الجزء الأيمن ثم تحديد"تم تعيين النظام". تحقق من أن"الحالة" مفعلةOn. إذا لم يكن كذلك، فحدّد On ثم Save. حدّد Yes في مربع حوار التأكيد لتمكين الهوية المُدارة التي يعينها النظام. عندما يتم تمكين الهوية المدارة، يتم تعيين الحالة على On ويكون معرف الكائن متاحاً.

Screenshot that shows the System assigned identity option.

تقوم هذه الخطوة بتشكيل معرّف عنصر جديد، مختلف عن معرّف التطبيق الذي تم تشكيله فيلوحةالمصادقة/عدم المصادقة. يرجى نسخ معرف الكائن من هوية مدارة معينة من قبل النظام. سوف تحتاجها لاحقًا.

إنشاء حساب تخزين وحاوية تخزين Blob

الآن أنتم على استعداد لإنشاء حساب تخزين وحاوية تخزين Blob.

يجب أن ينتمي كل حساب تخزين إلى مجموعة موارد Azure. إن مجموعة الموارد هي عبارة عن حاوية منطقية لجمع خدمات Azure الخاصة بكم. عند إنشاء حساب تخزين، يكون لديكم الخيار إما لإنشاء مجموعة موارد جديدة أو استخدام مجموعة موارد موجودة مسبقًا. توضح هذه المقالة كيفية إنشاء مجموعة موارد جديدة.

يوفر حساب تخزين V2 للأغراض العامة الوصول إلى كافة خدمات التخزين Azure: النقط والملفات وقوائم الانتظار والجداول والأقراص. تقوم الخطوات الموضحة هنا بإنشاء حساب تخزين v2 للأغراض العامة ولكن الخطوات لإنشاء أي نوع من حساب التخزين متشابهة.

يتم تنظيم الكائنات الثنائية في تخزين Azure ضمن حاويات. قبل أن تتمكنوا من تحميل كائن ثنائي في وقت لاحق في هذا البرنامج التعليمي، يجب عليكم أولاً إنشاء حاوية.

لإنشاء حساب تخزين v2 للأغراض العامة في مدخل Azure، يرجى اتباع الخطوات التالية.

  1. في قائمة مدخل Azure، حدد All services. في قائمة الموارد، ادخلواحسابات التخزين. عندما تبدأ في الكتابة، تتم تصفية القائمة بناءً على إدخالك. تحديد حسابات تخزين.

  2. في نافذة Storage Accounts التي تظهر، حدّد Create.

  3. تحديد الاشتراك الذي تريدون إنشاء حساب تخزين فيه.

  4. تحت حقل"مجموعة الموارد"، يرجى تحديد مجموعة الموارد، والتي تحتوي على تطبيق الويب الخاص بكم من القائمة المنسدلة.

  5. بعد ذلك، أدخل اسماً لحساب التخزين الخاص بك. يجب أن يكون الذي تختارونه مميزًا في Azure. إذا قمتم بإنشاء حساب جديد، يجب أن يكون الاسم بين 3 و24 حرفًا في الطول، ويمكن أن يتضمن أرقًا وأحرفًا صغيرة فقط

  6. حدّد موقعاً (منطقة) لحساب التخزين الخاص بك، أو استخدم القيمة الافتراضية.

  7. رجاء اتركوا هذه الحقول معينة إلى القيم الافتراضية الخاصة بها:

    الحقل القيمة
    نموذج النشر Resource Manager
    الأداء قياسي
    نوع الحساب StorageV2 (غرض-عام v2)
    النسخ المتماثل تخزين احتياطي من البيانات الجغرافية (RA-GRS) للوصول إلى القراءة
    مستوى الدخول ساخن
  8. تحديد "مراجعة + إنشاء" لمراجعة إعدادات حسابات التخزين وإنشاء حساب.

  9. حدد إنشاء.

لإنشاء حاوية تخزين للكائنات الثنائية في تخزين Azure يرجى اتباع الخطوات التالية.

  1. يرجى الانتقال إلى حساب التخزين الجديد في مدخل Azure.

  2. في القائمة اليسرى لحساب التخزين، مرر إلى قسم Data storage، ثم حدّد Containers.

  3. حدد الزر + حاوية.

  4. يرجى كتابة اسم للحاوية الجديدة. يجب أن يكون اسم الحاوية بأحرف صغيرة، ويجب أن يبدأ بحرف أو رقم، ويمكن أن يتضمن فقط الحروف والأرقام والحرف (-) المتقطع.

  5. يرجى تعيين مستوى الوصول العام للحاوية. الوضع الافتراضي هوخاص (لا وصول مجهول).

  6. حدد موافق لإنشاء الحاوية.

منح حق الوصول إلى حساب التخزين

أنتم بحاجة إلى منح تطبيق الويب الخاص بكم حق الوصول إلى حساب التخزين قبل أن تتمكنوا من إنشاء النقط أو قراءتها أو حذفها. في خطوة سابقة، قمتم بتهيئة تطبيق الويب الذي يعمل على خدمة التطبيقات بهوية مدارة. باستخدام Azure RBAC، يمكنكم منح الوصول إلى الهوية المدارة إلى مورد آخر، تمامًا مثل أي حساب أمان أساسي. يعطي دور "المساهم في بيانات فقاعة التخزين" تطبيق الويب (الذي تمثله الهوية المدارة المعينة من قبل النظام) إمكانية القراءة والكتابة وحذف الوصول إلى حاوية blob والبيانات.

إشعار

لا يدعم Azure RBAC بعض العمليات على حاويات الكائنات الثنائية كبيرة الحجم الخاصة، مثل عرض الكائنات الثنائية كبيرة الحجم أو نسخ الكائنات الثنائية كبيرة الحجم بين الحسابات. تتطلب حاوية كائن ثنائي كبير الحجم ذات مستوى وصول خاص رمز SAS المميز لأي عملية غير مصرح بها من قبل Azure RBAC. لمزيد من المعلومات، راجع متى تستخدم توقيع وصول مشترك.

فيمدخل Azure، اذهبوا إلى حساب التخزين الخاص بكم لإتاحة إمكانية الوصل لتطبيق الويب الخاص بكم. يرجى تحديد "التحكم في الوصول (IAM)" في اللوحة اليسرى، ثم تحديد "تعيينات الدور". سترون قائمة بمن لديه حق الوصول إلى حساب التخزين. الآن أنتم تريدون إضافة تعيين دور إلى الروبوت، خدمة التطبيق التي تحتاج إلى الوصول إلى حساب التخزين. يرجى النقر فوق "إضافة" >"إضافة تعيين دور" لفتح صفحة إضافة تعيين الدور.

يرجى تعيين دور"مساهم تخزين البيانات الثنائية"إلى "خدمة التطبيق"في نطاق الاشتراك. للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Azure.

أصبح تطبيق الويب الخاص بكم الآن قادرًا على الوصول إلى حساب التخزين الخاص بكم.

الوصول إلى Blob Storage

تُستخدم فئة DefaultAzureCredential للحصول على بيانات اعتماد رمز مميز لرمزكم لتفويض الطلبات إلى مساحة تخزين Azure. قوموا بإنشاء مثيل للفئة DefaultAzureCredential، والتي تستخدم الهوية المُدارة لجلب الرموز المميزة وإرفاقها بعميل الخدمة. المثال التعليمات البرمجية التالية يحصل على بيانات اعتماد الرمز المميز المصادق عليه ويستخدم لإنشاء كائن عميل خدمة الذي يقوم بتحميل blob جديد.

لمشاهدة هذه الشفرة كجزء من نموذج تطبيق، يرجى مراجعة النموذج على GitHub .

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

قم بتثبيت حزمة Blob Storage NuGet للعمل مع Blob Storage ومكتبة عميل Azure Identity لحزمة .NET NuGet للمصادقة مع بيانات اعتماد Microsoft Entra. تثبيت مكتبات العميل باستخدام واجهة سطر الأوامر .NET Core أو وحدة التحكم مدير الحِزَم في Visual Studio.

سطر الأوامر .NET Core

  1. افتح سطر أوامر، وقم بالتبديل إلى الدليل الذي يحتوي على ملف المشروع الخاص بك.

  2. قوموا بتشغيل أوامر التثبيت.

    dotnet add package Azure.Storage.Blobs
    
    dotnet add package Azure.Identity
    

وحدة تحكم مدير الحزم

  1. افتحوا المشروع / الحل في Visual Studio، وافتح وحدة التحكم باستخدام الأمر Tools > NuGet Package Manager > Package Manager Console .

  2. قوموا بتشغيل أوامر التثبيت.

    Install-Package Azure.Storage.Blobs
    
    Install-Package Azure.Identity
    

مثال .NET

using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;

// Some code omitted for brevity.

static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
    // Construct the blob container endpoint from the arguments.
    string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
                                                accountName,
                                                containerName);

    // Get a credential and create a client object for the blob container.
    BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
                                                                    new DefaultAzureCredential());

    try
    {
        // Create the container if it does not exist.
        await containerClient.CreateIfNotExistsAsync();

        // Upload text to a new block blob.
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

تنظيف الموارد

إذا انتهيت من هذا البرنامج التعليمي ولم تعد بحاجة إلى تطبيق الويب أو الموارد المرتبطة، فقم بتنظيف الموارد التي قمت بإنشائها.

لا تحذف مجموعة الموارد

في مدخل Microsoft Azure، حدد Resource groups من قائمة المدخل وحدد مجموعة الموارد التي تحتوي على خدمة التطبيق وخطة خدمة التطبيق.

حدد حذف مجموعة الموارد لحذف مجموعة الموارد وجميع الموارد.

Screenshot that shows deleting the resource group.

قد يستغرق تشغيل هذا الأمر عدة دقائق.

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

في هذا البرنامج التعليمي، نتعلم طريقة القيام بما يأتي:

  • إنشاء هوية مدارة معينة من قبل النظام.
  • إنشاء حساب تخزين و حاوية تخزين Blob.
  • الوصول إلى التخزين من تطبيق ويب باستخدام الهويات المدارة.