إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توفر Azure App Service خدمة استضافة ويب قابلة للتطوير وذاتية التصحيح في Azure. توفر App Service أيضا هوية مدارة لتطبيقك، وهو حل تسليم المفتاح لتأمين الوصول إلى Azure SQL وخدمات Azure الأخرى. تجعل الهويات المدارة في App Service تطبيقك أكثر أمانا من خلال التخلص من الأسرار، مثل بيانات الاعتماد في سلاسل الاتصال.
يوضح لك هذا البرنامج التعليمي كيفية إضافة هوية مدارة إلى نموذج تطبيق .NET يحتوي على خلفية Azure SQL. بعد الانتهاء، يمكن لتطبيقك الاتصال بقاعدة بيانات Azure SQL بشكل آمن دون الحاجة إلى اسم مستخدم وكلمة مرور.
في هذا البرنامج التعليمي، سوف تتعلّم:
- تمكين الهويات المدارة
- امنح قاعدة بيانات Azure SQL حق الوصول إلى الهوية المدارة.
- تكوين Entity Framework لاستخدام مصادقة Microsoft Entra مع قاعدة بيانات SQL.
- الاتصال بقاعدة بيانات SQL من Visual Studio باستخدام مصادقة Microsoft Entra.
للحصول على إرشادات حول استخدام قاعدة بيانات Azure ل MySQL أو قاعدة بيانات Azure ل PostgreSQL في أطر عمل Node.jsوPython وJava، راجع البرنامج التعليمي: الاتصال بقواعد بيانات Azure من App Service بدون أسرار باستخدام هوية مدارة.
إشعار
معرف Microsoft Entra والهويات المدارة غير مدعومة ل SQL Server المحلي.
تختلف مصادقة Microsoft Entra عن مصادقة Windows المتكاملة في خدمات مجال Active Directory (AD) المحلية (DS). يستخدم AD DS ومعرف Microsoft Entra بروتوكولات مصادقة مختلفة تماما. لمزيد من المعلومات، راجع وثائق Microsoft Entra Domain Services.
المتطلبات الأساسية
-
إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
لديك تطبيق Azure App Service الأساسي ASP.NET MVC أو ASP.NET Core MVC create-read-update-delete (CRUD) الذي يستخدم قاعدة بيانات Azure SQL مع مصادقة SQL كواجهة خلفية. تدعم الخطوات الواردة في هذا البرنامج التعليمي إصدارات .NET التالية:
- NET Framework 4.8 وما فوق
- NET 6.0 وما فوق
السماح باتصال العميل من الكمبيوتر إلى Azure، حتى تتمكن من تصحيح أخطاء تطبيقك في بيئة التطوير الخاصة بك. يمكنك إضافة عنوان IP للعميل باتباع الخطوات في إدارة قواعد جدار حماية IP على مستوى الخادم باستخدام مدخل Microsoft Azure.
سجل الدخول إلى Azure Cloud Shell أو قم بإعداد بيئتك لاستخدام Azure CLI.
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع بدء استخدام Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات تسجيل الدخول الأخرى، راجع المصادقة على Azure باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات حول الملحقات، راجع استخدام الملحقات وإدارتها باستخدام Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
منح وصول مسؤول قاعدة البيانات إلى مستخدم Microsoft Entra
تمكين مصادقة Microsoft Entra إلى قاعدة بيانات Azure SQL عن طريق تعيين مستخدم Microsoft Entra كمسؤول لخادم Azure SQL. يجب أن يكون مسؤول Microsoft Entra مستخدما يتم إنشاؤه أو استيراده أو مزامنته أو دعوته إلى معرف Microsoft Entra. قد لا يكون هذا المستخدم هو نفسه مستخدم حساب Microsoft لاشتراك Azure الخاص بك.
- لمزيد من المعلومات حول إنشاء مستخدم Microsoft Entra، راجع إضافة مستخدمين أو حذفهم باستخدام معرف Microsoft Entra.
- لمزيد من المعلومات حول مستخدمي Microsoft Entra المسموح لهم لقاعدة بيانات SQL، راجع ميزات وقيود Microsoft Entra في قاعدة بيانات SQL.
- لمزيد من المعلومات حول إضافة مسؤول خادم Azure SQL، راجع توفير مسؤول Microsoft Entra لخادمك.
قم بتشغيل الأوامر التالية في بيئة Bash من Azure Cloud Shell، أو بعد تسجيل الدخول إلى Azure CLI محليا.
استخدم
az ad user listمع المعلمةdisplay-nameأوfilterأوupnللحصول على معرف الكائن لمستخدم معرف Microsoft Entra الذي تريد تعيينه كمسؤول. قم بتشغيلaz ad user listمستقل لعرض المعلومات لجميع المستخدمين في دليل Microsoft Entra.على سبيل المثال، يسرد الأمر التالي معلومات لمستخدم Microsoft Entra ID مع
display-nameFirstname Lastname.az ad user list --display-name "Firstname Lastname"فيما يلي مثال على الإخراج:
"businessPhones": [], "displayName": "Firstname Lastname", "givenName": null, "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "jobTitle": null, "mail": "firstname@contoso.com", "mobilePhone": null, "officeLocation": null, "preferredLanguage": null, "surname": null, "userPrincipalName": "firstname@contoso.com"أضف مستخدم معرف Microsoft Entra كمسؤول على خادم Azure SQL باستخدام
az sql server ad-admin createمع المعلمةobject-id. في الأمر التالي، استبدل<server-name>باسم الخادم مطروحا منه.database.windows.netاللاحقة، و<entra-id>بالقيمةidمن إخراج الأمر السابقaz ad user list.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
إعداد اتصال الهوية المدارة للتطبيق
تقوم الخطوات التالية بتكوين تطبيقك للاتصال بقاعدة بيانات Azure SQL باستخدام هوية مدارة معينة من قبل النظام. لاستخدام هوية معينة من قبل المستخدم، راجع البرنامج التعليمي: الاتصال بقواعد بيانات Azure من App Service بدون أسرار باستخدام هوية مدارة.
تمكين الهوية المدارة للتطبيق
لتمكين هوية مدارة لتطبيق Azure الخاص بك، استخدم الأمر az webapp identity assign ، مع <app-name> استبدال باسم التطبيق الخاص بك. دائما ما يكون اسم الهوية المعينة من قبل النظام هو نفس اسم التطبيق.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
فيما يلي مثال على الإخراج:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
لتمكين الهوية المدارة لفتحة نشر، أضف --slot <slot-name> إلى الأمر السابق واستخدم اسم الفتحة في <slot-name>. اسم الهوية المعينة من قبل النظام لفتحة التوزيع هو <app-name>/slots/<slot-name>.
يمكنك أيضا إضافة الهوية إلى مجموعة Microsoft Entra، ثم منح قاعدة بيانات SQL حق الوصول إلى مجموعة Microsoft Entra بدلا من الهوية. لمنح أذونات لمجموعة Microsoft Entra، استخدم اسم العرض الخاص بالمجموعة. تضيف الأوامر التالية مثال الهوية المدارة إلى مجموعة جديدة تسمى myAzureSQLDBAccessGroup.
$groupid=(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
$msiobjectid=(az webapp identity show --resource-group myResourceGroup --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid
منح أذونات للهوية المدارة
امنح الهوية الحد الأدنى من الأذونات التي يحتاجها تطبيقك.
افتح سطر أوامر PowerShell وسجل الدخول إلى قاعدة بيانات SQL باستخدام أمر SQLCMD التالي. استبدل
<server-name>باسم الخادم،<db-name>واسم قاعدة البيانات، و<admin-user>باسمuserPrincipalNameالمستخدم المسؤول من إخراج الأمر السابقaz ad user list.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30اتبع المطالبات لتسجيل الدخول.
في موجه SQL، قم بتشغيل الأوامر التالية لمنح التطبيق الحد الأدنى من الأذونات التي يحتاجها على قاعدة البيانات. استبدل
<identity-name>باسم الهوية المدارة في معرف Microsoft Entra، وهو نفس اسم التطبيق.CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>]; GO
إشعار
تحتفظ خدمات الهوية المدارة الخلفية بذاكرة تخزين مؤقت للرمز المميز تقوم بتحديث الرمز المميز لمورد هدف فقط عند انتهاء صلاحيته. إذا حاولت تعديل أذونات قاعدة بيانات SQL بعد الحصول أولا على رمز مميز مع تطبيقك، فلن تحصل على رمز مميز جديد مع أذونات محدثة حتى تنتهي صلاحية الرمز المميز المخزن مؤقتا.
إزالة سلسلة الاتصال الأصلية
أي تغييرات أجريتها في web.config أو appsettings.json تعمل مع الهوية المدارة. يمكنك إزالة سلسلة الاتصال الأصلية التي استخدمتها عند نشر تطبيقك في المرة الأولى. لحذف سلسلة الاتصال، قم بتشغيل أمر Azure CLI التالي، مع <app-name> استبدال باسم التطبيق الخاص بك واسم <connection-string-name> سلسلة الاتصال الخاصة بك.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
إعداد بيئة التطوير
إعداد بيئة التطوير التي اخترتها وتسجيل الدخول إلى Azure. لمزيد من المعلومات حول إعداد بيئة التطوير الخاصة بك لمصادقة Microsoft Entra، راجع مكتبة عميل Azure Identity ل .NET.
- Visual Studio ويندوز
- Visual Studio Code
-
Azure CLI - Azure PowerShell
تم دمج Visual Studio لنظام التشغيل Windows مع مصادقة Microsoft Entra.
- لتمكين التطوير وتصحيح الأخطاء في Visual Studio، أضف مستخدم Microsoft Entra في Visual Studio عن طريق تحديد File>Account Settings من القائمة العلوية، ثم حدد Sign in أو Add.
- لتعيين مستخدم Microsoft Entra لمصادقة خدمة Azure، حدد خيارات الأدوات> من القائمة العلوية، ثم حددتحديد حساب> خدمة Azure. حدد مستخدم Microsoft Entra الذي أضفته وحدد موافق.
تعديل مشروعك ونشر تطبيقك
يستخدم تطبيق الويب المدعوم بقاعدة بيانات Azure SQL سياق قاعدة بيانات للاتصال بقاعدة البيانات. لاستخدام مصادقة Microsoft Entra للعمل مع التطبيق، يجب تحديث سياق قاعدة البيانات للإشارة إلى موفر Entity Framework SQL Server، والذي يعتمد على موفر ADO.NET Microsoft.Data.SqlClient الحديث.
يحل موفر Entity Framework محل موفر SQL Server المضمن System.Data.SqlClient ، ويتضمن دعما لأساليب مصادقة معرف Microsoft Entra. لمزيد من المعلومات، راجع Microsoft.EntityFramework.SqlServer.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))] يعمل محليا للاستخدام Microsoft.Data.SqlClient في سياق قاعدة البيانات، ولكن لأنه System.Data.SqlClient تم ترميزه بشكل ثابت كموفر في Azure App Service، يجب توسيع MicrosoftSqlDbConfiguration لإعادة توجيه System.Data.SqlClient المراجع إلى Microsoft.Data.SqlClient بدلا من ذلك. تختلف الخطوات بناء على ما إذا كان لديك تطبيق ASP.NET أو ASP.NET Core.
- تطبيق ASP.NET Core
- تطبيق ASP.NET
يستخدم تطبيق ASP.NET Core Entity Framework Core بشكل افتراضي.
في وحدة تحكم Visual Studio Package Manager، أضف حزمة NuGet Microsoft.Data.SqlClient.
Install-Package Microsoft.Data.SqlClientفي appsettings.json، استبدل قيمة سلسلة الاتصال بالتعليمات البرمجية التالية، واستبدل
<server-name<database-name>و باسم الخادم واسم قاعدة البيانات."Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"إشعار
يمكنك استخدام المصادقة الافتراضية ل Active Directory على جهازك المحلي وفي Azure App Service. يمكن لبرنامج التشغيل الحصول على رمز مميز من معرف Microsoft Entra بعدة طرق مختلفة.
إذا تم نشر التطبيق، يحصل برنامج التشغيل على رمز مميز من الهوية المدارة المعينة من قبل النظام للتطبيق. يمكن لبرنامج التشغيل أيضا المصادقة بهوية مدارة معينة من قبل المستخدم إذا قمت بتضمينها
User Id=<client-id-of-user-assigned-managed-identity>;في سلسلة الاتصال.تخزن
DefaultAzureCredentialالفئة الرمز المميز مؤقتا في الذاكرة وتسترده من معرف Microsoft Entra قبل انتهاء الصلاحية. لا تحتاج إلى أي تعليمات برمجية مخصصة لتحديث الرمز المميز.لديك الآن كل ما تحتاجه للاتصال بقاعدة بيانات Azure SQL عند تصحيح الأخطاء في Visual Studio. تستخدم التعليمات البرمجية مستخدم Microsoft Entra الذي قمت بتكوينه عند إعداد بيئة التطوير الخاصة بك.
قم بتشغيل تَطبِيقك. يتصل تطبيق CRUD في المستعرض الخاص بك بقاعدة بيانات Azure SQL مباشرة، باستخدام مصادقة Microsoft Entra. يتيح لك هذا الإعداد تشغيل عمليات ترحيل قاعدة البيانات من Visual Studio.
نشر التغييرات باستخدام أوامر Git التالية:
git commit -am "configure managed identity" git push azure main
اختبار التطبيق
عندما تعرض صفحة الويب الجديدة قائمة المهام، يتصل تطبيقك بقاعدة البيانات باستخدام الهوية المدارة.
يمكنك الآن تحرير قائمة to-do.
تنظيف الموارد
في الخطوات السابقة، أنشأت موارد Azure في إحدى مجموعات الموارد. إذا لم تتوقع احتياجك لهذه الموارد في المستقبل، فاحذف مجموعة الموارد من خلال تشغيل الأمر التالي في Cloud Shell:
az group delete --name myResourceGroup
قد يستغرق تشغيل هذا الأمر دقيقة.
المحتوى ذو الصلة
- البرنامج التعليمي: استخدام مجال مخصص وشهادة مدارة لتأمين تطبيقك
- البرنامج التعليمي: توصيل تطبيق App Service بقاعدة بيانات SQL نيابة عن المستخدم الذي سجل الدخول
- البرنامج التعليمي: الاتصال بقواعد بيانات Azure من App Service دون بيانات سرية باستخدام الهوية المُدارة
- البرنامج التعليمي: الاتصال بخدمات Azure التي لا تدعم الهويات المدارة باستخدام Key Vault
- البرنامج التعليمي: عزل الاتصال الخلفي مع تكامل الشبكة الظاهرية