البرنامج التعليمي: قم بتوصيل تطبيق وظيفي بـ Azure SQL باستخدام الهوية المُدارة وارتباطات SQL
توفر Azure Functions الهوية المُدارة، وهو حل جاهز لتأمين الوصول إلى Azure SQL Database وخدمات Azure الأخرى. تجعل الهويات المُدارة تطبيقك أكثر أماناً من خلال التخلص من البيانات السرية من تطبيقك، مثل معلومات تسجيل الدخول في سلاسل الاتصال. في هذا البرنامج التعليمي، ستضيف الهوية المُدارة إلى وظيفة Azure التي تستخدم ارتباطات Azure SQL. يتوفر نموذج لمشروع Azure Function مع روابط SQL في مثال ToDo backend.
عند الانتهاء من هذا البرنامج التعليمي، ستتصل وظيفة Azure بـ Azure SQL Database دون الحاجة إلى اسم المستخدم وكلمة المرور.
نظرة عامة على الخطوات التي ستتخذها:
منح حق الوصول إلى قاعدة البيانات لمستخدم Microsoft Entra
قم أولا بتمكين مصادقة Microsoft Entra إلى قاعدة بيانات SQL عن طريق تعيين مستخدم Microsoft Entra كمسؤول Active Directory للخادم. يختلف هذا المستخدم عن حساب Microsoft الذي استخدمته لاشتراك Azure. يجب أن يكون مستخدما قمت بإنشائه أو استيراده أو مزامنته أو دعوته إلى معرف Microsoft Entra. لمزيد من المعلومات حول مستخدمي Microsoft Entra المسموح لهم، راجع ميزات وقيود Microsoft Entra في قاعدة بيانات SQL.
يمكن إكمال تمكين مصادقة Microsoft Entra عبر مدخل Microsoft Azure أو PowerShell أو Azure CLI. تتوفر توجيهات Azure CLI أدناه والمعلومات التي تكمل ذلك عبر مدخل Microsoft Azure وPowerShell متوفرة في وثائق Azure SQL حول مصادقة Microsoft Entra.
إذا لم يكن لدى مستأجر Microsoft Entra مستخدم حتى الآن، فبادر بإنشاء مستخدم باتباع الخطوات الواردة في إضافة مستخدمين أو حذفهم باستخدام معرف Microsoft Entra.
ابحث عن معرف الكائن لمستخدم Microsoft Entra باستخدام
az ad user list
واستبدل <user-principal-name>. يتم حفظ النتيجة لمتغير.بالنسبة إلى Azure CLI 2.37.0 والإصدارات الأحدث:
azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
للإصدارات الأقدم من Azure CLI:
azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)
تلميح
لمشاهدة قائمة بجميع أسماء المستخدمين الأساسية في معرف Microsoft Entra، قم بتشغيل
az ad user list --query [].userPrincipalName
.أضف مستخدم Microsoft Entra هذا كمسؤول Active Directory باستخدام
az sql server ad-admin create
الأمر في Cloud Shell. في الأمر التالي، استبدل <server-name> باسم الخادم (دون اللاحقة.database.windows.net
).az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
لمزيد من المعلومات حول إضافة مسؤول Active Directory، راجع توفير مسؤول Microsoft Entra للخادم الخاص بك
تمكين الهوية المُدارة المعينة من قبل النظام في Azure Function
في هذه الخطوة سنضيف هوية مخصصة من قبل النظام إلى وظيفة Azure. في الخطوات اللاحقة، سيتم منح هذه الهوية حق الوصول إلى SQL Database.
لتمكين الهوية المُدارة المعينة من قبل النظام في مدخل Microsoft Azure:
- قم بإنشاء وظيفة Azure في المدخل كما تفعل عادةً. تنقل إليه في المدخل.
- قم بالتمرير لأسفل إلى مجموعة الإعدادات في شريط التنقل الأيسر.
- حدد "Identity".
- في علامة التبويب النظام المعين، بدِّل الحالة إلى تشغيل. انقر فوق حفظ.
للحصول على معلومات بشأن تمكين الهوية المُدارة المعينة من قبل النظام من خلال Azure CLI أو PowerShell، تحقق من مزيد من المعلومات بشأن استخدام الهويات المُدارة مع Azure Functions.
تلميح
بالنسبة إلى الهوية المدارة المعينة من قبل المستخدم، قم بالتبديل إلى علامة التبويب تعيين المستخدم. انقر فوق إضافة وحدد هوية مدارة. لمزيد من المعلومات حول إنشاء هوية مدارة معينة من قبل المستخدم، راجع إدارة الهويات المدارة المعينة من قبل المستخدم.
منح الوصول إلى SQL Database للهوية المدارة
في هذه الخطوة، سنتصل بقاعدة بيانات SQL باستخدام حساب مستخدم Microsoft Entra ونمنح الوصول إلى الهوية المدارة إلى قاعدة البيانات.
افتح أداة SQL المفضلة لديك وقم بتسجيل الدخول باستخدام حساب مستخدم Microsoft Entra (مثل مستخدم Microsoft Entra الذي قمنا بتعيينه كمسؤول). يمكن تحقيق ذلك في Cloud Shell باستخدام الأمر SQLCMD.
sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
في موجه SQL لقاعدة البيانات التي تريدها، قم بتشغيل الأوامر التالية لمنح أذونات لوظيفتك. على سبيل المثال،
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; GO
<اسم> الهوية هو اسم الهوية المدارة في معرف Microsoft Entra. إذا تم تخصيص الهوية من قبل النظام، فسيكون الاسم دائماً هو نفسه اسم Function App الخاص بك.
تكوين سلسلة اتصال Azure Function SQL
في الخطوة الأخيرة، سنقوم بتكوين سلسلة الاتصال Azure Function SQL لاستخدام مصادقة الهوية المدارة من Microsoft Entra.
يتم تحديد اسم إعداد سلسلة الاتصال في التعليمة البرمجية لـ Functions لدينا على أنه سمة الربط "ConnectionStringSetting"، كما هو موضح في سمات ربط إدخال SQL والتعليقات التوضيحية.
في إعدادات التطبيق لتطبيقنا الوظيفي، يجب تحديث إعداد سلسلة اتصال SQL لاتباع هذا التنسيق:
Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb
testdb هو اسم قاعدة البيانات التي نتصل بها وdemo.database.windows.net هو اسم الخادم الذي نتصل به.
تلميح
بالنسبة للهوية المدارة المعينة من قبل المستخدم، استخدم Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb
.