استخدام الهويات المُدارة للوصول إلى تكوين التطبيق

تعمل هويات Azure Active Directory المدارة على تبسيط إدارة الأسرار لتطبيقك السحابي. باستخدام هوية مدارة، يمكن للرمز استخدام مبدأ الخدمة الذي تم إنشاؤه لخدمة Azure التي يعمل عليها. يمكنك استخدام هوية مدارة بدلا من بيانات اعتماد منفصلة مخزنة في Azure Key Vault أو سلسلة اتصال محلية.

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

توضح هذه المقالة كيفية الاستفادة من الهوية المدارة للوصول إلى تكوين التطبيق. وهو يبني على تطبيق الويب الذي تم تقديمه في البدايات سريعة. قبل المتابعة، أنشئ تطبيقا ASP.NET Core باستخدام "تكوين التطبيق" أولا.

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

هام

لا يمكن استخدام الهوية المدارة لمصادقة التطبيقات قيد التشغيل محليا. يجب نشر التطبيق الخاص بك إلى خدمة Azure التي تدعم الهوية المدارة. تستخدم هذه المقالة Azure App Service كمثال، ولكن ينطبق نفس المفهوم على أي خدمة Azure أخرى تدعم الهوية المدارة، على سبيل المثال، Azure Kubernetes ServiceوAzure Virtual Machineومثيلات Azure Container. إذا كان عبء العمل الخاص بك مستضافا في إحدى هذه الخدمات، فيمكنك الاستفادة من دعم الهوية المدارة للخدمة أيضا.

يمكنك استخدام أي محرر تعليمات برمجية لتنفيذ الخطوات في هذا البرنامج التعليمي. يعد Visual Studio Code خيارًا ممتازًا متاحًا على أنظمة تشغيل Windows، وmacOS، وLinux.

ستتعلم في هذا المقال طريقة إجراء ما يلي:

  • منح هوية مدارة حق الوصول إلى تكوين التطبيق.
  • قم بتكوين تطبيقك لاستخدام هوية مدارة عند الاتصال بتكوين التطبيق.

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

لإكمال هذا البرنامج التعليمي، تحتاج إلى:

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

إضافة هوية مدارة

لإعداد هوية مدارة في البوابة الإلكترونية، يمكنك أولا إنشاء تطبيق ثم تمكين الميزة.

  1. قم بالوصول إلى مورد خدمات التطبيقات في مدخل Azure. إذا لم يكن لديك مورد "خدمات التطبيقات" الحالي للعمل معه، فقم بإنشاء مورد.

  2. مرر لأسفل إلى المجموعة الإعدادات في الجزء الأيمن، وحدد الهوية.

  3. في علامة التبويب النظام المعين ، قم بتبديل الحالة إلى تشغيل وحدد حفظ.

  4. الإجابة بنعم عند مطالبتك بتمكين الهوية المدارة المعينة من قبل النظام.

    Set managed identity in App Service

منح حق الوصول إلى تكوين التطبيق

توضح الخطوات التالية كيفية تعيين دور "قارئ بيانات تكوين التطبيق" إلى "خدمة التطبيقات". للحصول على خطوات تفصيلية، راجع ⁧⁩تعيين أدوار Azure باستخدام مدخل Microsoft Azure⁧⁩.

  1. في مدخل Azure، حدد كافة الموارد وحدد مخزن تكوين التطبيقات الذي قمت بإنشائه في البداية السريعة.

  2. حدد Access control (IAM).

  3. حدد إضافة>تعيين دور.

    Screenshot showing Access control (IAM) page with Add role assignment menu open.

  4. في علامة التبويب الدور ، حدد دور قارئ بيانات تكوين التطبيق .

    Screenshot showing Add role assignment page with Role tab selected.

  5. ضمن علامة التبويب الأعضاء، حدد الهوية المدارة، ثم حدد تحديد الأعضاء.

  6. حدد اشتراكك في Azure، وللهوية المدارة، حدد خدمة التطبيق، ثم حدد اسم خدمة التطبيق.

  7. في علامة التبويب ⁦⁩مراجعة + تعيين، حدد مراجعة + تعيين⁩ لتعيين الدور.

استخدام هوية مُدارة

  1. إضافة مرجع إلى حزمة Azure.Identity :

    dotnet add package Azure.Identity
    
  2. ابحث عن نقطة النهاية لمتجر "تكوين التطبيقات". يتم سرد عنوان URL هذا في علامة التبويب مفاتيح الوصول للمخزن في مدخل Azure.

  3. افتح appsettings.json، وأضف البرنامج النصي التالي. استبدل <service_endpoint>، بما في ذلك الأقواس، بعنوان URL لمتجر "تكوين التطبيقات".

    "AppConfig": {
        "Endpoint": "<service_endpoint>"
    }
    
  4. افتح البرنامج.cs، وأضف مرجعا إلى Azure.Identity مساحات الأسماء ومساحات Microsoft.Azure.Services.AppAuthentication الأسماء:

    using Azure.Identity;
    
  5. إذا كنت ترغب في الوصول إلى القيم المخزنة مباشرة في تكوين التطبيق فقط، فقم بتحديث CreateWebHostBuilder الطريقة عن طريق استبدال config.AddAzureAppConfiguration() الطريقة (يوجد هذا في Microsoft.Azure.AppConfiguration.AspNetCore الحزمة).

    هام

    CreateHostBuilder يحل محله CreateWebHostBuilder في .NET Core 3.0. حدد الصيغة الصحيحة بناءً على بيئتك.

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
                webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
                {
                    var settings = config.Build();
                    config.AddAzureAppConfiguration(options =>
                        options.Connect(new Uri(settings["AppConfig:Endpoint"]), new ManagedIdentityCredential()));
                })
                .UseStartup<Startup>());
    

    ملاحظة

    إذا كنت تريد استخدام هوية مدارة معينة من قبل المستخدم، فتأكد من تحديد clientId عند إنشاء بيانات اعتماد ManagedIdentity.

    config.AddAzureAppConfiguration(options =>
          {
              options.Connect(new Uri(settings["AppConfig:Endpoint"]), new ManagedIdentityCredential("<your_clientId>"))
           });
    

    كما هو موضح في الأسئلة المتداولة حول الهويات المدارة لموارد Azure، هناك طريقة افتراضية لحل الهوية المدارة المستخدمة. في هذه الحالة، تفرض عليك مكتبة Azure Identity تحديد الهوية المطلوبة لتجنب مشكلات وقت التشغيل المحتملة في المستقبل (على سبيل المثال، إذا تمت إضافة هوية مدارة جديدة معينة من قبل المستخدم أو إذا تم تمكين الهوية المدارة المعينة من قبل النظام). لذلك ، ستحتاج إلى تحديد clientId حتى إذا تم تعريف هوية مدارة واحدة فقط تم تعيينها من قبل المستخدم ، ولا توجد هوية مدارة معينة من قبل النظام.

  1. ابحث عن نقطة النهاية لمتجر "تكوين التطبيقات". يتم سرد عنوان URL هذا في علامة التبويب نظرة عامة للمتجر في مدخل Azure.

  2. افتح bootstrap.properties، وقم بإزالة خاصية سلسلة الاتصال واستبدلها بنقطة نهاية:

spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>

ملاحظة

إذا كنت ترغب في استخدام الهوية المدارة المعينة من قبل المستخدم الخاصية spring.cloud.azure.appconfiguration.stores[0].managed-identity.client-id، فتأكد من تحديد clientId عند إنشاء بيانات اعتماد ManagedIdentity.

نشر تطبيقك

يتطلب منك استخدام الهويات المدارة نشر تطبيقك على خدمة Azure. لا يمكن استخدام الهويات المدارة لمصادقة التطبيقات قيد التشغيل محليا. لنشر تطبيق .NET Core الذي قمت بإنشائه في تطبيق إنشاء ASP.NET Core باستخدام التشغيل السريع لتكوين التطبيق وتعديله لاستخدام الهويات المدارة، اتبع الإرشادات الواردة في نشر تطبيق الويب.

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

بالإضافة إلى App Service، تدعم العديد من خدمات Azure الأخرى الهويات المدارة. لمزيد من المعلومات، راجع ما هي الهويات المدارة لموارد Azure؟.

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

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

هام

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

  1. سجل الدخول إلى⁧⁩مدخل Azure⁧⁩، وحدد⁧⁩مجموعات الموارد⁧⁩.
  2. في المربع ⁧⁩تصفية حسب الاسم⁩، اكتب اسم مجموعة الموارد.
  3. في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
  4. حدد Delete resource group.
  5. يُطلب منك تأكيد حذف مجموعة الموارد. أدرج اسم مجموعة الموارد لتأكيده، واختر ⁧⁩حذف⁧⁩.

بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.

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

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