تكوين مصادقة Azure AD وإدارتها باستخدام Azure SQL
ينطبق على: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
توضح هذه المقالة كيفية إنشاء مثيل Azure Active Directory (Microsoft Azure Active Directory) وملئه، ثم استخدم Microsoft Azure Active Directory مع قاعدة بيانات Azure SQLو Azure SQL المثيل المداروتحليلات Azure Synapse. للحصول على نظرة عامة، راجع مصادقة Microsoft Azure Active Directory .
طُرق مصادقة Microsoft Azure Active Directory
تدعم مصادقة Microsoft Azure Active Directory أساليب المصادقة التالية:
- هويات Microsoft Azure Active Directory السحابية فقط
- هويات Microsoft Azure Active Directory المختلطة التي تدعم:
- مصادقة سحابية بخيارين مقترنين بتسجيل الدخول الأحادي السلس (SSO)
- مصادقة تجزئة كلمة مرور Microsoft Azure Active Directory
- مصادقة مرور Microsoft Azure Active Directory
- المصادقة الموحدة
- مصادقة سحابية بخيارين مقترنين بتسجيل الدخول الأحادي السلس (SSO)
لمزيد من المعلومات حول أساليب مصادقة Microsoft Azure Active Directory، وأيًا منها تختار، راجع اختيار طريقة المصادقة الصحيحة لحل الهوية المختلط Microsoft Azure Active Directory .
لمزيد من المعلومات حول الهويات المختلطة ل Microsoft Azure Active Directory والإعداد والتزامن، راجع:
- مصادقة تجزئة كلمة المرور - تنفيذ مزامنة تجزئة كلمة المرور باستخدام مزامنة Microsoft Azure Active Directory Connect
- المصادقة المرورية - مصادقة Microsoft Azure Active Directory المرورية
- المصادقة الموحدة - توزيع خدمات الأمان المشترك لـ Active Directory و Microsoft Azure Active Directory Connectand Federation
قم بإنشاء وملء مثيل Microsoft Azure Active Directory
أنشئ مثيل Microsoft Azure Active Directory واملأه بالمستخدمين والمجموعات. يمكن أن يكون Microsoft Azure Active Directory المجال المدار الأول ل Microsoft Azure Active Directory. يمكن أن تكون Microsoft Azure Active Directory أيضًا خدمات مجال Active Directory محلية متحدة مع Microsoft Azure Active Directory.
لمزيد من المعلومات، انظر:
- تكامل الهويات المحلية مع Microsoft Azure Active Directory
- إضافة اسم المجال إلى Azure AD
- يدعم Microsoft Azure الآن الاتحاد مع Active Directory محلي
- ما هو Azure Active Directory?
- إدارة Microsoft Azure Active Directory باستخدام Windows PowerShell
- منافذ وبروتوكولات الهوية المختلطة المطلوبة .
إقران أو إضافة اشتراك Azure إلى Microsoft Azure Active Directory
قم بربط اشتراكك في Azure بـ Microsoft Azure Active Directory عن طريق جعل الدليل دليلاً موثوقًا به لاشتراك Azure الذي يستضيف قاعدة البيانات. للحصول على تفاصيل، راجع إقران أو إضافة اشتراك Azure إلى مستأجر Microsoft Azure Active Directory الخاص بك .
استخدم مبدل الدليل في مدخل Microsoft Azure للتبديل إلى الاشتراك المرتبط بالمجال.
هام
يحتوي كل اشتراك Azure على علاقة ثقة مع مثيل Microsoft Azure Active Directory. هذا يعني أنه يثق في هذا الدليل لمصادقة المستخدمين والخدمات والأجهزة. يمكن أن تثق الاشتراكات المتعددة في نفس الدليل، ولكن يثق الاشتراك في دليل واحد فقط. علاقة الثقة هذه التي يمتلكها اشتراك مع دليل تختلف عن العلاقة التي يمتلكها الاشتراك مع جميع الموارد الأخرى في Azure (مواقع الويب وقواعد البيانات وما إلى ذلك)، والتي تشبه إلى حد كبير الموارد الفرعية للاشتراك. في حالة انتهاء صلاحية الاشتراك، يتوقف الوصول إلى تلك الموارد الأخرى المرتبطة بالاشتراك أيضًا. لكن يظل الدليل في Azure، ويمكنك إقران اشتراك آخر بهذا الدليل، والاستمرار في إدارة مستخدمي الدليل. لمزيد من المعلومات حول الموارد، راجع فهم الوصول إلى الموارد في Azure . لمعرفة المزيد حول هذه العلاقة الموثوقة، راجع كيفية إقران أو إضافة اشتراك Azure إلى Microsoft Azure Active Directory .
مسؤول Microsoft Azure Active Directory مع خادم في قاعدة بيانات SQL
يبدأ كل خادم في Azure (الذي يستضيف قاعدة بيانات SQL أو Azure Synapse) بحساب مسؤول خادم واحد يكون مسؤولاً عن الخادم بأكمله. قم بإنشاء حساب مسؤول ثانٍ كحساب Microsoft Azure Active Directory. يتم إنشاء هذا المبدأ كمستخدم قاعدة بيانات مضمنة في قاعدة البيانات الرئيسية للخادم. حسابات المسؤولين هي أعضاء في دور db_owner في كل قاعدة بيانات مستخدم، ويتم إدخال كل قاعدة بيانات مستخدم باسم المستخدم dbo . لمزيد من المعلومات حول حسابات المسؤول، راجع إدارة قواعد البيانات وتسجيلات الدخول .
عند استخدام Microsoft Azure Active Directory مع النسخ المتماثل الجغرافي، يجب تكوين مسؤول Microsoft Azure Active Directory لكل من الخوادم الأساسية والثانوية. إذا لم يكن لدى الخادم مسؤول Microsoft Azure Active Directory، فإن تسجيل دخول Microsoft Azure Active Directory وسيتلقى المستخدمون خطأ Cannot connect
في الخادم.
ملاحظة
لا يمكن للمستخدمين الذين لا يعتمدون على حساب Microsoft Azure Active Directory (بما في ذلك حساب مسؤول الخادم) إنشاء مستخدمين يستندون إلى Microsoft Azure Active Directory؛ لأنهم ليس لديهم إذن للتحقق من صحة مستخدمي قاعدة البيانات المقترحين باستخدام Microsoft Azure Active Directory.
توفير مسؤول Microsoft Azure Active Directory (SQL المثيل المدار)
هام
اتبع هذه الخطوات فقط إذا كنت تقوم بتوفير مثيل Azure SQL المُدار. لا يمكن تنفيذ هذه العملية إلا بواسطة المسؤول العام أو مسؤول الدور المميز في Microsoft Azure Active Directory.
في المعاينة العامة ، يمكنك تعيين دور قراء الدليل لمجموعة في Microsoft Azure Active Directory. يمكن لمالكي المجموعة بعد ذلك إضافة هوية المثيل المُدار كعضو في هذه المجموعة؛ مما يسمح لك بتوفير مسؤول Microsoft Azure Active Directory لمثيل SQL المُدار. لمزيد من المعلومات حول هذه الميزة، راجع دور "Directory Readers" في Azure Active Directory لـ Azure SQL.
يحتاج مثيل SQL المُدار إلى أذونات لقراءة Microsoft Azure Active Directory لإنجاز المهام بنجاح، مثل: مصادقة المستخدمين من خلال عضوية مجموعة الأمان، أو إنشاء مستخدمين جدد. لكي يعمل هذا، تحتاج إلى منح إذن SQL Managed Instance لقراءة Microsoft Azure Active Directory. يمكنك القيام بذلك باستخدام مدخل Microsoft Azure أو PowerShell.
مدخل Azure
لمنح مثيل SQL المُدار من Microsoft Azure Active Directory إذن قراءة باستخدام مدخل Microsoft Azure، سجِّل الدخول كمسؤول عام في Microsoft Azure Active Directory، واتبع الخطوات التالية:
في مدخل Microsoft Azure، في الزاوية العلوية اليمنى، حدد حسابك، ثم اختر Switch directories لتأكيد الدليل النشط الذي يمثل دليلك النشط حالياً. قم بتبديل الدلائل، إذا لزم الأمر.
اختر خدمات مجال Active Directory الصحيح باعتباره Microsoft Azure Active Directory الافتراضي.
تربط هذه الخطوة الاشتراك المرتبط بخدمات مجال Active Directory بمثيل SQL المُدار، مع التأكد من استخدام نفس الاشتراك لكل من مثيل Microsoft Azure Active Directory ومثيل SQL المُدار.
انتقل إلى SQL المثيل المدار الذي تريد استخدامه لتكامل Microsoft Azure Active Directory.
حدد الشعار الموجود أعلى صفحة مسؤول خدمات مجال Active Directory ومنح الإذن للمستخدم الحالي.
بعد نجاح العملية، سيظهر الإشعار التالي في الزاوية العلوية اليمنى:
يمكنك الآن اختيار مسؤول Microsoft Azure Active Directory لمثيلك المدار SQL. لذلك، في صفحة مسؤول خدمات مجال Active Directory، حدد الأمر تعيين المسؤول .
في صفحة مسؤول Microsoft Azure Active Directory، ابحث عن مستخدم، وحدد المستخدم أو المجموعة ليكون مسؤولاً، ثم حدد تحديد .
تعرض صفحة مسؤول خدمات مجال Active Directory جميع أعضاء ومجموعات خدمات مجال Active Directory الخاص بك. لا يمكن تحديد المستخدمين أو المجموعات الرمادية؛ بسبب عدم اعتمادهم كمسؤولي Microsoft Azure Active Directory. راجع قائمة المسؤولين المدعومين في ميزات وقيود Microsoft Azure Active Directory . ينطبق عنصر التحكم في الوصول استنادًا إلى الدور في Azure (Azure RBAC) فقط على مدخل Microsoft Azure، ولا يتم نشره إلى قاعدة بيانات SQL أو مثيل SQL المُدار أو Azure Synapse.
في أعلى صفحة "Active Directory admin"، حدد "Save" .
قد تستغرق عملية تغيير المسؤول عِدة دقائق. ثم يظهر المسؤول الجديد في مربع مسؤول خدمات مجال Active Directory.
بالنسبة لمستخدمي ومجموعات Microsoft Azure Active Directory، يتم عرض Object ID بجوار اسم المسؤول. بالنسبة للتطبيقات (كيانات الخدمة)، يتم عرض .
بعد توفير مسؤول Microsoft Azure Active Directory لمثيل SQL المُدار، يمكنك البدء في إنشاء أساسيات خادم Microsoft Azure Active Directory (تسجيلات الدخول) باستخدام بناء جملة إنشاء تسجيل الدخول . لمزيد من المعلومات، راجع نظرة عامة حول المثيل المُدار لـ SQL .
تلميح
لإزالة مسؤول لاحقًا، في الجزء العلوي من صفحة مسؤول خدمات مجال Active Directory، حدد إزالة المسؤول ، ثم حدد حفظ .
PowerShell
لمنح مثيل SQL المُدار Microsoft Azure Active Directory إذن قراءة باستخدام PowerShell، قم بتشغيل هذا البرنامج النصي:
# Gives Azure Active Directory read permission to a Service Principal representing the SQL Managed Instance.
# Can be executed only by a "Global Administrator" or "Privileged Role Administrator" type of user.
$aadTenant = "<YourTenantId>" # Enter your tenant ID
$managedInstanceName = "MyManagedInstance"
# Get Azure AD role "Directory Users" and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
if ($role -eq $null) {
# Instantiate an instance of the role template
$roleTemplate = Get-AzureADDirectoryRoleTemplate | Where-Object {$_.displayName -eq $roleName}
Enable-AzureADDirectoryRole -RoleTemplateId $roleTemplate.ObjectId
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
}
# Get service principal for your SQL Managed Instance
$roleMember = Get-AzureADServicePrincipal -SearchString $managedInstanceName
$roleMember.Count
if ($roleMember -eq $null) {
Write-Output "Error: No Service Principals with name '$ ($managedInstanceName)', make sure that managedInstanceName parameter was entered correctly."
exit
}
if (-not ($roleMember.Count -eq 1)) {
Write-Output "Error: More than one service principal with name pattern '$ ($managedInstanceName)'"
Write-Output "Dumping selected service principals...."
$roleMember
exit
}
# Check if service principal is already member of readers role
$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
$selDirReader = $allDirReaders | where{$_.ObjectId -match $roleMember.ObjectId}
if ($selDirReader -eq $null) {
# Add principal to readers role
Write-Output "Adding service principal '$($managedInstanceName)' to 'Directory Readers' role'..."
Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -RefObjectId $roleMember.ObjectId
Write-Output "'$($managedInstanceName)' service principal added to 'Directory Readers' role'..."
#Write-Output "Dumping service principal '$($managedInstanceName)':"
#$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
#$allDirReaders | where{$_.ObjectId -match $roleMember.ObjectId}
}
else {
Write-Output "Service principal '$($managedInstanceName)' is already member of 'Directory Readers' role'."
}
PowerShell لمثيل SQL المُدار
لتشغيل أوامر PowerShell cmdlets، يجب أن يكون لديك Azure PowerShell مثبتًا وقيد التشغيل. للحصول على معلومات تفصيلية، راجع كيفية تثبيت Azure PowerShell وتكوينه .
هام
لا تزال الوحدة النمطية PowerShell Azure Resource Manager (RM) مدعومة بواسطة مثيل Azure SQL المُدار، ولكن كل التطوير المستقبلي مخصص للوحدة النمطية Az.Sql. ستستمر الوحدة النمطية AzureRM في تلقي إصلاحات الأخطاء حتى ديسمبر 2020 على الأقل. تتطابق وسائط الأوامر في الوحدة النمطية Az وفي الوحدات النمطية AzureRm بشكل كبير. لمعرفة المزيد حول تطابقها، اطّلع على تقديم الوحدة النمطية Azure PowerShell Az الجديدة.
لتوفير مسؤول Microsoft Azure Active Directory تنفيذ الأوامر Azure PowerShell التالية:
- Connect-AzAccount
- Select-AzSubscription
يتم سرد أوامر cmdlets المستخدمة لتوفير وإدارة مسؤول Microsoft Azure Active Directory لمثيل SQL المُدار في الجدول التالي:
اسم Cmdlet | الوصف |
---|---|
Set-AzSqlInstanceActiveDirectoryAdministrator | توفير مسؤول Microsoft Azure Active Directory للمثيل SQL المدار في الاشتراك الحالي. (يَجب أن يكون من الاشتراك الحالي) |
Remove-AzSqlInstanceActive DirectoryAdministrator | إزالة مسؤول Microsoft Azure Active Directory لمثيل SQL المُدار في الاشتراك الحالي. |
Get-AzSqlInstanceActiveDirectoryAdministrator | تُرجع معلومات حول مسؤول Microsoft Azure Active Directory لمثيل SQL المُدار في الاشتراك الحالي. |
يحصل الأمر التالي على معلومات حول مسؤول Microsoft Azure Active Directory لمثيل SQL المُدار المسمى ManagedInstance01 المرتبط بمجموعة موارد تسمى ResourceGroup01.
Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01"
يوفر الأمر التالي مجموعة مسؤولي Microsoft Azure Active Directory المسماة DBAs لمثيل SQL المُدار المسمى ManagedInstance01. يرتبط هذا الخادم بمجموعة الموارد Resource Group 01.
Set-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"
يقوم الأمر التالي بإزالة مسؤول Microsoft Azure Active Directory لمثيل SQL المُدار المسمى ManagedInstanceName01 المرتبط بمجموعة الموارد ResourceGroup01.
Remove-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstanceName01" -Confirm -PassThru
توفير مسؤول Microsoft Azure Active Directory (قاعدة بيانات SQL)
هام
اتبع هذه الخطوات فقط إذا كنت تقوم بتوفير خادم لقاعدة بيانات SQL أو Azure Synapse.
يوضح لك الإجراءان التاليان كيفية توفير مسؤول Microsoft Azure Active Directory للخادم الخاص بك في مدخل Microsoft Azure، وباستخدام PowerShell.
مدخل Azure
في مدخل Microsoft Azure، في الزاوية العلوية اليُمنى، حدد اتصالك من القائمة المنسدلة للأدلة النشطة المحتملة. اختر خدمات مجال Active Directory الصحيح باعتباره Microsoft Azure Active Directory الافتراضي. تربط هذه الخطوة خدمات مجال Active Directory المرتبط بالاشتراك بالخادم مع التأكد من استخدام نفس الاشتراك لكل من Microsoft Azure Active Directory والخادم.
ابحث عن خادم SQL وحَددها.
ملاحظة
في هذه الصفحة، قبل تحديد خوادم SQL ، يمكنك تحديد النجمة بجوار الاسم إلى الفئة المفضلة وإضافة خوادم SQL إلى شريط التنقل الأيسر.
في صفحة Microsoft SQL Server ، حدد مسؤول خدمات مجال Active Directory .
في صفحة مسؤول خدمات مجال Active Directory، حدد تعيين المسؤول .
في صفحة إضافة مسؤول ، ابحث عن مستخدم، وحدد المستخدم أو المجموعة ليكون مسؤولاً، ثم حدد تحديد . تُظهر صفحة مسؤول خدمات مجال Active Directory جميع أعضاء ومجموعات خدمات مجال Active Directory الخاص بك. لا يمكن تحديد المستخدمين أو المجموعات التي تم تعتيمها؛ لأنهم غير مدعومين كمسؤولين في Microsoft Azure Active Directory. (راجع قائمة المسؤولين المعتمدين في قسم ميزات وقيود Microsoft Azure Active Directory من استخدام مصادقة Microsoft Azure Active Directory للمصادقة باستخدام قاعدة بيانات SQL أو Azure Synapse .) عنصر تحكم في الوصول المستند إلى الأدوار في Azure ( Azure RBAC) ينطبق فقط على المدخل، ولا يتم نشره إلى Microsoft SQL Server.
في أعلى صفحة "Active Directory admin"، حدد "Save" .
بالنسبة لمستخدمي ومجموعات Microsoft Azure Active Directory، يتم عرض Object ID بجوار اسم المسؤول. بالنسبة للتطبيقات (كيانات الخدمة)، يتم عرض .
قد تستغرق عملية تغيير المسؤول عِدة دقائق. ثم يظهر المسؤول الجديد في المربع مسؤول خدمات مجال Active Directory .
ملاحظة
عند إعداد مسؤول Microsoft Azure Active Directory، لا يمكن أن يكون اسم المسؤول الجديد (مستخدم أو مجموعة) موجودًا بالفعل في قاعدة البيانات الرئيسية الظاهرية كمستخدم مصادقة الخادم. إذا كان موجودًا، فسيفشل إعداد مسؤول Microsoft Azure Active Directory؛ التراجع عن إنشائها والإشارة إلى وجود هذا المسؤول (الاسم) بالفعل. نظرًا لأن مستخدم مصادقة الخادم هذا ليس جزءًا من Microsoft Azure Active Directory، فإن أي جهد للاتصال بالخادم باستخدام مصادقة Microsoft Azure Active Directory تفشل.
لإزالة مسؤول لاحقًا، في الجزء العلوي من صفحة مسؤول خدمات مجال Active Directory، حدد إزالة المسؤول ، ثم حدد "حفظ".
PowerShell لقاعدة بيانات SQL وAzure Synapse
لتشغيل أوامر PowerShell cmdlets، يجب أن يكون لديك Azure PowerShell مثبتًا وقيد التشغيل. للحصول على معلومات تفصيلية، راجع كيفية تثبيت Azure PowerShell وتكوينه . لتوفير مسؤول Microsoft Azure Active Directory تنفيذ الأوامر Azure PowerShell التالية:
- Connect-AzAccount
- Select-AzSubscription
Cmdlets المستخدمة لتوفير وإدارة مسؤول Microsoft Azure Active Directory لقاعدة بيانات SQL وAzure Synapse:
اسم Cmdlet | الوصف |
---|---|
Set-AzSqlServerActiveDirectoryAdministrator | يوفر مسؤول Microsoft Azure Active Directory للخادم الذي يستضيف قاعدة بيانات SQL أو Azure Synapse. (يَجب أن يكون من الاشتراك الحالي) |
Remove-AzSqlServerActiveDirectoryAdministrator | يزيل مسؤول Microsoft Azure Active Directory للخادم الذي يستضيف قاعدة بيانات SQL أو Azure Synapse. |
Get-AzSqlServerActiveDirectoryAdministrator | تُرجع معلومات حول مسؤول Microsoft Azure Active Directory الذي تم تكوينه حاليًا للخادم الذي يستضيف قاعدة بيانات SQL أو Azure Synapse. |
استخدم أمر PowerShell get-help لرؤية المزيد من المعلومات لكل من هذه الأوامر. على سبيل المثال، get-help Set-AzSqlServerActiveDirectoryAdministrator
.
يوفر البرنامج النصي التالي مجموعة مسؤولي Microsoft Azure Active Directory المسماة DBA_Group (معرف العنصر 40b79501-b343-44ed-9ce7-da4c8cc7353f
) لخادم demo_server في مجموعة موارد تسمى Group-23 :
Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" -DisplayName "DBA_Group"
تقبل المعلمة إدخال DisplayName إما اسم عرض Microsoft Azure Active Directory أو اسم المستخدم الأساسي. على سبيل المثال:DisplayName="John Smith"
وDisplayName="johns@contoso.com"
. لمجموعات Microsoft Azure Active Directory، يتم دعم اسم عرض Microsoft Azure Active Directory فقط.
ملاحظة
لا يمنعك أمر Azure PowerShell Set-AzSqlServerActiveDirectoryAdministrator
من توفير مسؤولي Microsoft Azure Active Directory للمستخدمين غير المدعومين. يمكن توفير مستخدم غير مدعوم، لكن لا يمكن الاتصال بقاعدة بيانات.
يستخدم المثال التالي معرف العنصر الاختياري:
Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" `
-DisplayName "DBA_Group" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353f"
ملاحظة
يكون Microsoft Azure Active Directory ObjectID مطلوبًا عندما لا يكون DisplayName فريدًا. لاسترداد قيمتي معرف الكائن و اسم العرض ، استخدم قسم خدمات مجال Active Directory في Azure Classic Portal، واعرض خصائص مستخدم أو مجموعة.
يُرجع المثال التالي معلومات حول مسؤول Microsoft Azure Active Directory الحالي للخادم:
Get-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" | Format-List
يزيل المثال التالي مسؤول Microsoft Azure Active Directory:
Remove-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server"
ملاحظة
يمكنك أيضًا توفير مسؤول Microsoft Azure Active Directory باستخدام واجهات برمجة تطبيقات REST. لمزيد من المعلومات، راجع مرجع وعمليات REST API لإدارة الخدمة لعمليات قاعدة بيانات Azure SQL لقاعدة بيانات Azure SQL
تكوين أجهزة الكمبيوتر العميلة الخاصة بك
ملاحظة
يستخدم System.Data.SqlClient مكتبة مصادقة Microsoft Azure Active Directory (ADAL)، والتي سيتم إهمالها. إذا كنت تستخدم مساحة الاسم System.Data.SqlClient لمصادقة Microsoft Azure Active Directory، فقم بترحيل التطبيقات إلى Microsoft.Data.SqlClient وMicrosoft Authentication Library (MSAL). لمزيد من المعلومات عن استخدام مصادقة Microsoft Azure Active Directory مع SqlClient، راجع استخدام مصادقة Microsoft Azure Active Directory مع SqlClient.
لا يزال SSMS وSSDT يستخدمان مكتبة مصادقة Microsoft Azure Active Directory Authentication (ADAL). إذا كنت ترغب في متابعة استخدام ADAL.DLL في تطبيقاتك، يمكنك استخدام الروابط الموجودة في هذا القسم لتثبيت أحدث برنامج تشغيل Management Studio (SSMS) وODBC وOLE DB الذي يحتوي على أحدث مكتبة ADAL.DLL.
على جميع أجهزة العملاء، التي تتصل من خلالها تطبيقاتك أو المستخدمين بقاعدة بيانات SQL أو Azure Synapse باستخدام هويات Microsoft Azure Active Directory، يجب عليك تثبيت البرنامج التالي:
- NET Framework 4.6 أو إصدار أحدث من https://msdn.microsoft.com/library/5a4x27ek.aspx .
- Microsoft Authentication Library (MSAL) أو مكتبة مصادقة Microsoft Azure Active Directory Authentication لـSQL Server (ADAL.DLL). فيما يلي روابط التنزيل لتثبيت أحدث برامج تشغيل Management Studio و ODBC وOLE DB التي تحتوي على مكتبة ADAL.DLL .
يمكنك تلبية هذه المتطلبات عن طريق:
- يفي تثبيت أحدث إصدار من SQL Server Management Studio أو SQL Server Data Tools بمتطلبات .NET Framework 4.6.
- يقوم Management Studio بتثبيت الإصدار x86 من ADAL.DLL .
- يقوم SSDT بتثبيت إصدار amd64 من ADAL.DLL .
- يفي أحدث Visual Studio من تنزيلات Visual Studio بمتطلبات .NET Framework 4.6، لكنه لا يقوم بتثبيت إصدار amd64 المطلوب من ADAL.DLL .
قم بإنشاء مستخدمين مضمنين تم تعيينهم لهويات Microsoft Azure Active Directory
نظرًا لأن SQL Managed Instance يدعم أساسيات خادم Microsoft Azure Active Directory (عمليات تسجيل الدخول)، فإن استخدام مستخدمي قاعدة البيانات المضمنة غير مطلوب. تمكّنك أساسيات خادم Microsoft Azure Active Directory (تسجيلات الدخول) من إنشاء عمليات تسجيل دخول من مستخدمي Microsoft Azure Active Directory أو المجموعات أو التطبيقات. هذا يعني أنه يمكنك المصادقة باستخدام مثيل SQL المُدار باستخدام تسجيل الدخول إلى خادم Microsoft Azure Active Directory بدلاً من مستخدم قاعدة بيانات مضمن. لمزيد من المعلومات، راجع نظرة عامة حول المثيل المُدار لـ SQL . للحصول على بناء جملة إنشاء أساسيات خادم Microsoft Azure Active Directory (عمليات تسجيل الدخول)، راجع إنشاء تسجيل الدخول .
ومع ذلك، فإن استخدام مصادقة Microsoft Azure Active Directory مع قاعدة بيانات SQL وAzure Synapse يتطلب استخدام مستخدمي قاعدة البيانات المضمنة بناءً على هوية Microsoft Azure Active Directory. لا يمتلك مستخدم قاعدة البيانات المضمنة معلومات تسجيل دخول في قاعدة البيانات الرئيسية، ويعين هوية في Microsoft Azure Active Directory مقترنة بقاعدة البيانات. يمكن أن تكون هوية Microsoft Azure Active Directory إما حساب مستخدم فردي أو مجموعة. لمزيد من المعلومات حول مستخدمي قاعدة البيانات المضمنة، راجع مستخدمي قاعدة البيانات المضمنة - جعل قاعدة البيانات قابلة للنقل .
ملاحظة
لا يمكن إنشاء مستخدمي قاعدة البيانات (باستثناء المسؤولين) باستخدام مدخل Microsoft Azure. لا يتم نشر أدوار Azure إلى قاعدة البيانات في قاعدة بيانات SQL أو مثيل SQL المُدار أو Azure Synapse. تُستخدم أدوار Azure لإدارة موارد Azure، ولا تنطبق على أذونات قاعدة البيانات. على سبيل المثال، لا يمنح الدور SQL Server Contributor حق الوصول للاتصال بقاعدة البيانات في قاعدة بيانات SQL أو مثيل SQL المُدار أو Azure Synapse. يجب منح إذن الوصول مباشرة في قاعدة البيانات باستخدام عبارات Transact-SQL.
تحذير
لا يتم دعم الأحرف الخاصة مثل النقطتين :
أو علامة العطف &
كأسماء مستخدمين في عبارات T-SQL CREATE LOGIN
وCREATE USER
.
هام
لا يتم دعم مستخدمي Microsoft Azure Active Directory ومبادئ الخدمة (تطبيقات Microsoft Azure Active Directory) الأعضاء في أكثر من 2048 مجموعة أمان Microsoft Azure Active Directory لتسجيل الدخول إلى قاعدة البيانات في قاعدة بيانات SQL أو المثيل المُدار أو Azure Synapse.
لإنشاء مستخدم قاعدة بيانات متضمن يستند إلى Microsoft Azure Active Directory (بخلاف مسؤول الخادم الذي يمتلك قاعدة البيانات)، اتصل بقاعدة البيانات بهوية Microsoft Azure Active Directory، كمستخدم لديه على الأقل إذن ALTER ANY USER . ثم استخدم بناء جملة Transact-SQL التالي:
CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;
يمكن أن يكون Azure_AD_principal_name اسم المستخدم الأساسي لمستخدم Microsoft Azure Active Directory أو اسم العرض لمجموعة Microsoft Azure Active Directory.
أمثلة: لإنشاء مستخدم قاعدة بيانات مضمن يمثل مستخدم مجال متحد أو مُدار Microsoft Azure Active Directory:
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
لإنشاء مستخدم قاعدة بيانات مضمن يمثل Microsoft Azure Active Directory أو مجموعة مجال متحد، قم بتوفير اسم العرض لمجموعة الأمان:
CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;
لإنشاء مستخدم قاعدة بيانات مضمن يمثل تطبيقًا يتصل باستخدام رمز Microsoft Azure Active Directory المميز:
CREATE USER [appName] FROM EXTERNAL PROVIDER;
ملاحظة
يتطلب هذا الأمر وصول SQL إلى Microsoft Azure Active Directory ("الموفر الخارجي") نيابة عن المستخدم الذي قام بتسجيل الدخول. في بعض الأحيان، ستظهر ظروف تتسبب في قيام Microsoft Azure Active Directory بإرجاع استثناء إلى SQL. في هذه الحالات، سيرى المستخدم خطأ SQL 33134، والذي يجب أن يحتوي على رسالة الخطأ الخاصة بـ Microsoft Azure Active Directory. في معظم الأحيان، سيقول الخطأ إن الوصول مرفوض، أو إنه يجب على المستخدم التسجيل في مصادقة متعددة العوامل (MFA) للوصول إلى المورد، أو إنه يجب التعامل مع الوصول بين تطبيقات الطرف الأول عبر التفويض المسبق. في الحالتين الأوليين، المشكلة عادة ما تكون بسبب نهج الوصول المشروط التي تم تعيينها في المستأجر Microsoft Azure Active Directory المستخدم: فإنها تمنع المستخدم من الوصول إلى الموفر الخارجي. يجب أن يؤدي تحديث نُهج الوصول المشروط للسماح بالوصول إلى التطبيق '00000003-0000-0000-c000-000000000000' (معرف التطبيق لواجهة برمجة تطبيقات Microsoft Graph) إلى حل المشكلة. في حالة ما إذا كان الخطأ ينص على وجوب التعامل مع الوصول بين تطبيقات الطرف الأول عبر المصادقة المسبقة، فإن المشكلة تكمن في تسجيل المستخدم للدخول كمسؤول خدمة. يجب أن ينجح الأمر إذا تم تنفيذه بواسطة مستخدم بدلاً من ذلك.
تلميح
لا يمكنك إنشاء مستخدم مباشرةً من Microsoft Azure Active Directory بخلاف Microsoft Azure Active Directory المرتبط باشتراك Azure الخاص بك. ومع ذلك، يمكن إضافة أعضاء من الدلائل النشطة الأخرى التي يتم استيرادها من المستخدمين في خدمات مجال Active Directory المرتبط (المعروف باسم المستخدمين الخارجيين) إلى مجموعة خدمات مجال Active Directory في خدمات مجال Active Directory للمستأجر. من خلال إنشاء مستخدم قاعدة بيانات مضمن لمجموعة AD، يمكن للمستخدمين من خدمات مجال Active Directory الخارجي الوصول إلى قاعدة بيانات SQL.
لمزيد من المعلومات حول إنشاء مستخدمي قاعدة البيانات المضمنة استنادًا إلى هويات Microsoft Azure Active Directory راجع CREATE USER (Transact-SQL).
ملاحظة
تؤدي إزالة مسؤول Microsoft Azure Active Directory للخادم إلى منع أي مستخدم مصادقة Microsoft Azure Active Directory من الاتصال بالخادم. إذا لزم الأمر، يمكن إسقاط مستخدمي Microsoft Azure Active Directory غير القابل للاستخدام يدويًا بواسطة مسؤول قاعدة بيانات SQL.
ملاحظة
إذا تلقيت انتهت مهلة الاتصال ، فقد تحتاج إلى تعيين معلمة TransparentNetworkIPResolution
لسلسلة الاتصال على "خطأ". لمزيد من المعلومات، راجع مشكلة مهلة الاتصال مع .NET Framework 4.6.1 - TransparentNetworkIPResolution .
عند إنشاء مستخدم قاعدة بيانات، يتلقى هذا المستخدم إذن CONNECT ، ويمكنه الاتصال بقاعدة البيانات هذه كعضو في الدور PUBLIC . مبدئيًا، تكون الأذونات الوحيدة المتاحة للمستخدم هي أي أذونات ممنوحة لدور PUBLIC ، أو أي أذونات ممنوحة لأي مجموعات Microsoft Azure Active Directory التي يكونون أعضاء فيها. بمجرد توفير مستخدم قاعدة البيانات المضمنة المستندة إلى Microsoft Azure Active Directory، يمكنك منح المستخدم أذونات إضافية، بنفس الطريقة التي تمنح بها الإذن لأي نوع آخر من المستخدمين. عادةً ما تمنح الأذونات لأدوار قاعدة البيانات، وإضافة المستخدمين إلى الأدوار. لمزيد من المعلومات، راجع أساسيات إذن مشغل قاعدة البيانات . لمزيد من المعلومات حول أدوار قاعدة بيانات SQL الخاصة، راجع إدارة قواعد البيانات وتسجيلات الدخول في قاعدة بيانات Azure SQL . يجب أن يستخدم حساب مستخدم المجال المتحد الذي يتم استيراده إلى مجال مُدار كمستخدم خارجي معرف المَجال المُدار.
ملاحظة
يتم تمييز مستخدمي Microsoft Azure Active Directory في بيانات تعريف قاعدة البيانات من النوع E (EXTERNAL_USER) وللمجموعات من النوع X (EXTERNAL_GROUPS). لمزيد من المعلومات، راجع "sys.database_principals".
اتصل بقاعدة البيانات باستخدام Management Studio أو SSDT
لتأكيد إعداد مسؤول Microsoft Azure Active Directory بشكل صحيح، اتصل بقاعدة البيانات الرئيسية باستخدام حساب مسؤول Microsoft Azure Active Directory. لتوفير مستخدم قاعدة البيانات المضمنة المستند إلى Microsoft Azure Active Directory (بخلاف مسؤول الخادم الذي يمتلك قاعدة البيانات)، اتصل بقاعدة البيانات بهوية Microsoft Azure Active Directory التي لديها حق الوصول إلى قاعدة البيانات.
هام
يتوفر دعم مصادقة Microsoft Azure Active Directory مع SQL Server Management Studio (SSMS) بدءًا من عام 2016 و SQL Server Data Tools بدءًا من 2015. يتضمن إصدار أغسطس 2016 من Management Studio أيضًا دعمًا لمصادقة الدليل النشط العالمي، والتي تسمح للمسؤولين بطلب المصادقة متعددة العوامل باستخدام مكالمة هاتفية أو رسالة نصية أو بطاقات ذكية مزودة برقم تعريف شخصي أو إشعار تطبيق جوال.
استخدام هوية Microsoft Azure Active Directory للاتصال باستخدام Management Studio أو SSDT
توضح لك الإجراءات التالية كيفية الاتصال بقاعدة بيانات SQL بهوية Microsoft Azure Active Directory باستخدام SQL Server Management Studio أو SQL Server Database Tools.
المصادقة المتكاملة لخدمات مجال Active Directory
استخدم هذه الطريقة إذا قمت بتسجيل الدخول إلى Windows باستخدام بيانات اعتماد Microsoft Azure Active Directory الخاصة بك من مجال متحد، أو مجال مُدار تم تكوينه لتسجيل الدخول الفردي السلس لمصادقة تمرير وتجزئة كلمة المرور. لمزيد من المعلومات، راجع تسجيل الدخول الموحد السلس في Microsoft Azure Active Directory.
ابدأ Management Studio أو أدوات البيانات وفي مربع الحوار الاتصال بالخادم (أو الاتصال بمحرك قاعدة البيانات )، في مربع المصادقة ، حدد Microsoft Azure Active Directory - متكامل . ليست هناك حاجة إلى كلمة مرور أو يمكن إدخالها؛ لأنه سيتم تقديم بيانات الاعتماد الحالية الخاصة بك للاتصال.
حدد الزر خيارات ، وفي صفحة خصائص الاتصال ، في مربع الاتصال بقاعدة البيانات ، اكتب اسم قاعدة بيانات المستخدم التي تريد الاتصال بها. لمزيد من المعلومات، راجع المقالة مصادقة Microsoft Azure Active Directory متعددة العوامل حول الاختلافات بين خصائص الاتصال لـ Management Studio 17.x و 18.x.
مصادقة كلمة مرور خدمات مجال Active Directory
استخدم هذه الطريقة عند الاتصال باسم Microsoft Azure Active Directory الأساسي باستخدام مجال Microsoft Azure Active Directory المُدار. يمكنك أيضًا استخدامه للحسابات الموحدة دون الوصول إلى المجال، على سبيل المثال، عند العمل عن بُعد.
استخدم هذه الطريقة للمصادقة على قاعدة البيانات في قاعدة بيانات SQL أو مثيل SQL المُدار مع مستخدمي هوية Microsoft Azure Active Directory على السحابة فقط، أو أولئك الذين يستخدمون هويات Microsoft Azure Active Directory المختلطة. تدعم هذه الطريقة المستخدمين الذين يرغبون في استخدام بيانات اعتماد Windows الخاصة بهم، لكن أجهزتهم المحلية غير مرتبطة بالمجال (على سبيل المثال، استخدام الوصول عن بُعد). في هذه الحالة، يمكن لمستخدم Windows الإشارة إلى حساب المجال وكلمة المرور، ويمكنه المصادقة على قاعدة البيانات في قاعدة بيانات SQL أو مثيل SQL المُدار أو Azure Synapse.
ابدأ Management Studio أو أدوات البيانات وفي مربع الحوار الاتصال بالخادم (أو الاتصال بمحرك قاعدة البيانات )، في مربع المصادقة ، حدد Microsoft Azure Active Directory - كلمة المرور .
في المربع "User name" اكتب اسم مستخدم Microsoft Azure Active Directory بالتنسيق username@domain.com. يجب أن تكون أسماء المستخدمين حسابًا من Microsoft Azure Active Directory أو حسابًا من مجال مُدار أو متحد باستخدام Microsoft Azure Active Directory.
في المربع كلمة المرور ، اكتب كلمة مرور المستخدم لحساب Microsoft Azure Active Directory أو حساب المجال المُدار / المتحد.
حدد الزر خيارات ، وفي صفحة خصائص الاتصال ، في مربع الاتصال بقاعدة البيانات ، اكتب اسم قاعدة بيانات المستخدم التي تريد الاتصال بها. (انظر الرسم في الخيار السابق.)
المصادقة التفاعلية لخدمات مجال Active Directory
استخدم هذه الطريقة للمصادقة التفاعلية مع أو بدون المصادقة متعددة العوامل (MFA)، مع طلب كلمة المرور بشكل تفاعلي. يمكن استخدام هذه الطريقة للمصادقة على قاعدة البيانات في قاعدة بيانات SQL، ومثيل SQL المُدار، وAzure Synapse لمستخدمي الهوية السحابية Microsoft Azure Active Directory فقط، أو أولئك الذين يستخدمون هويات Microsoft Azure Active Directory المختلطة.
لمزيد من المعلومات، راجع استخدام مصادقة Microsoft Azure Active Directory متعددة العوامل مع قاعدة بيانات SQL وAzure Synapse (دعم Management Studio لـمصادقة متعددة العوامل (MFA)) .
استخدام هوية Microsoft Azure Active Directory للاتصال من تطبيق عميل
توضح لك الإجراءات التالية كيفية الاتصال بقاعدة بيانات SQL بهوية Microsoft Azure Active Directory من تطبيق عميل.
المصادقة المتكاملة لخدمات مجال Active Directory
لاستخدام مصادقة Windows المتكاملة، يجب توحيد خدمات مجال Active Directory لمجالك مع Microsoft Azure Active Directory، أو يجب أن يكون مجالاً مُدارًا تم تكوينه لتسجيل الدخول الفردي السلس لمصادقة تمرير أو تجزئة كلمة المرور. لمزيد من المعلومات، راجع تسجيل الدخول الموحد السلس في Microsoft Azure Active Directory.
يجب تشغيل تطبيق العميل (أو الخدمة) المتصل بقاعدة البيانات على جهاز متصل بالمجال بموجب بيانات اعتماد مجال المستخدم.
للاتصال بقاعدة بيانات باستخدام مصادقة متكاملة وهوية Microsoft Azure Active Directory، يجب تعيين الكلمة الأساسية للمصادقة في سلسلة اتصال قاعدة البيانات على Active Directory Integrated
. يستخدم نموذج التعليمات البرمجية C# التالي ADO .NET.
string ConnectionString = @"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
الكلمة الأساسية لسلسلة الاتصال Integrated Security=True
غير مدعومة للاتصال بقاعدة بيانات Azure SQL. عند إجراء اتصال ODBC، ستحتاج إلى إزالة المسافات، وتعيين المصادقة على "ActiveDirectoryIntegrated".
مصادقة كلمة مرور خدمات مجال Active Directory
للاتصال بقاعدة بيانات باستخدام حسابات مستخدمي Microsoft Azure Active Directory على السحابة فقط، أو أولئك الذين يستخدمون الهويات المختلطة لـ Microsoft Azure Active Directory، يجب تعيين الكلمة الأساسية للمصادقة على Active Directory Password
. يجب أن تحتوي سلسلة الاتصال على معرّف المستخدم / UID وكلمة المرور / الكلمات الأساسية لـ PWD والقيم. يستخدم نموذج التعليمات البرمجية C# التالي ADO .NET.
string ConnectionString =
@"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb; UID=bob@contoso.onmicrosoft.com; PWD=MyPassWord!";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
تعرف على المزيد حول طرق مصادقة Microsoft Azure Active Directory باستخدام نماذج التعليمات البرمجية التوضيحية المتوفرة في Azure AD Authentication GitHub Demo .
رمز Azure AD المميز
تسمح طريقة المصادقة هذه لخدمات الطبقة الوسطى بالحصول على رموز ويب JSON (JWT) للاتصال بقاعدة البيانات في قاعدة بيانات SQL أو مثيل SQL المُدار أو Azure Synapse من خلال الحصول على رمز مميز من Microsoft Azure Active Directory. تتيح هذه الطريقة سيناريوهات تطبيق متنوعة بما في ذلك هويات الخدمة ومبادئ الخدمة والتطبيقات التي تستخدم المصادقة القائمة على الشهادة. يجب عليك إكمال أربع خطوات أساسية لاستخدام مصادقة الرمز المميز لـ Microsoft Azure Active Directory:
- سجِّل تطبيقك في Microsoft Azure Active Directory واحصل على معرّف العميل للرمز الخاص بك.
- قم بإنشاء مستخدم قاعدة بيانات يمثل التطبيق. (اكتمل في وقت سابق في الخطوة 6.)
- قم بإنشاء شهادة على جهاز الكمبيوتر العميل بتشغيل التطبيق.
- أضف الشهادة كمفتاح لتطبيقك.
نموذج لسلسلة الاتصال:
string ConnectionString = @"Data Source=n9lxnyuzhv.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();
لمزيد من المعلومات، راجع مدونة أمان Microsoft SQL Server. للحصول على معلومات حول إضافة شهادة، راجع بدء استخدام المصادقة المستندة إلى الشهادة في Microsoft Azure Active Directory .
sqlcmd
العبارات التالية، قم بالاتصال باستخدام الإصدار 13.1 من sqlcmd المتوفر من مركز التنزيل .
ملاحظة
sqlcmd
باستخدام الأمر -G
لا يعمل مع هويات النظام، ويتطلب تسجيل الدخول الأساسي للمستخدم.
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30
استكشاف أخطاء مصادقة Microsoft Azure Active Directory وإصلاحها
يمكن العثور على إرشادات حول استكشاف مشكلات مصادقة Microsoft Azure Active Directory وإصلاحها في المدونة التالية: https://techcommunity.microsoft.com/t5/azure-sql-database/troubleshooting-problems-related-to-azure-ad-authentication-with/ba-p/1062991
الخطوات التالية
- للحصول على نظرة عامة حول عمليات تسجيل الدخول والمستخدمين وأدوار قواعد البيانات والأذونات في قاعدة بيانات SQL، راجع عمليات تسجيل الدخول والمستخدمين وأدوار قاعدة البيانات وحسابات المستخدمين .
- لمزيد من المعلومات حول أساسيات قاعدة البيانات، راجع الأساسيات.
- لمزيد من المعلومات حول أدوار قاعدة البيانات، راجع أدوار قاعدة البيانات.
- لمزيد من المعلومات حول قواعد جدار الحماية في قاعدة بيانات SQL، راجع قواعد جدار حماية قاعدة بيانات SQL .
- للحصول على معلومات حول كيفية تعيين مستخدم ضيف Microsoft Azure Active Directory كمسؤول Microsoft Azure Active Directory، راجع إنشاء مستخدمي ضيف Microsoft Azure Active Directory وتعيينهم كمسؤول Microsoft Azure Active Directory.
- للحصول على معلومات حول كيفية خدمة مبادئ أساسية باستخدام Azure SQL، راجع إنشاء مستخدمي Microsoft Azure Active Directory باستخدام تطبيقات Microsoft Azure Active Directory