قاعدة بيانات Azure SQL وقواعد جدار حماية وAzure Synapse

ينطبق على: قاعدة بيانات Azure SQL Azure Synapse Analytics

عند إنشاء خادم جديد في قاعدة بيانات azure SQL أو Azure Synapse Analytics المعروف باسم mysqlserver، على سبيل المثال، يقوم جدار الحماية على مستوى الخادم بحظر جميع الوصول إلى نقطة النهاية العامة لملقم الشبكة (الذي يمكن الوصول إليه عند mysqlserver.database.windows.net). للتبسيط، يشير المصطلح SQL Database إلى كل من قواعد البيانات في قاعدة بيانات SQL وتحليلات Azure Synapse.

هام

لا تنطبق هذه المقالة على مثيل Azure SQL المدار. لمزيد من المعلومات حول تكوين الشبكة، راجع توصيل تطبيقك بمثيل SQL المُدار.

يدعم Azure Synapse فقط قواعد جدار الحماية على مستوى ملقم الشبكة. لا يدعم قواعد جدار الحماية على مستوى قاعدة البيانات.

كيف يعمل جدار الحماية

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

Firewall configuration diagram

قواعد جدار حماية عنوان على مستوى الخادم

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

يمكنك تكوين قواعد جدار الحماية على مستوى ملقم الشبكة باستخدام مدخل Azure أو PowerShell أو عبارات Transact-SQL.

  • لاستخدام المدخل أو PowerShell، يجب أن تكون مالكاً للاشتراك أو أحد المساهمين في الاشتراك.
  • لاستخدام transact-SQL، يجب الاتصال بقاعدة البيانات الرئيسية مثل تسجيل الدخول الأساسي على مستوى الخادم أو كمسؤولMicrosoft Azure Active Directory. (يجب أولاً إنشاء قاعدة جدار حماية على مستوى الخادم من خلال مستخدم لديه أذونات وصول على مستوى Azure.)

ملاحظة

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

قواعد جدار الحماية على مستوى قاعدة البيانات

تمكن قواعد جدار الحماية على مستوى قاعدة البيانات العملاء من الوصول إلى قواعد بيانات معينة (آمنة). يمكنك إنشاء قواعد لكل قاعدة بيانات (بما في ذلك قاعدة البيانات الرئيسية) ، ويتم تخزينها في قاعدة البيانات الفردية.

  • يمكنك فقط إنشاء وإدارة قواعد جدار الحماية على مستوى قاعدة البيانات لقواعد البيانات الرئيسية وقواعد بيانات المستخدم باستخدام عبارات transact-SQL وفقط بعد تكوين جدار الحماية الأول على مستوى الخادم.
  • إذا قمت بتحديد نطاق عنوان IP في قاعدة جدار الحماية على مستوى قاعدة البيانات خارج النطاق في قاعدة جدار الحماية على مستوى ملقم الشبكة، يمكن فقط للعملاء الذين لديهم عناوين IP في نطاق مستوى قاعدة البيانات الوصول إلى قاعدة البيانات.
  • يمكن أن يكون لديك بحد أقصى 128 قاعدة بيانات على مستوى قواعد جدار الحماية لقاعدة البيانات. لمزيد من المعلومات حول تكوين قواعد جدار الحماية على مستوى قاعدة البيانات، راجع المثال لاحقاً في هذه المقالة ثم راجع sp_set_database_firewall_rule (قاعدة بيانات azure SQL).

توصيات متعلقة بكيفية تعيين قواعد جدار الحماية

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

ملاحظة

للحصول على معلومات حول قواعد البيانات المحمولة في سياق استمرارية العمل، راجع متطلبات المصادقة لاسترداد البيانات بعد التعافي من الكوارث.

إنشاء قواعد جدار حماية على مستوى ملقم الشبكة وقاعدة البيانات

هل يجب عزل مستخدمي قاعدة بيانات واحدة بشكل كامل عن قاعدة بيانات أخرى?

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

هل يحتاج المستخدمون في عناوين IP إلى الوصول إلى جميع قواعد البيانات?

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

هل يمكن للشخص أو الفريق الذي يكون قواعد جدار الحماية الوصول فقط من خلال مدخل Azure أو PowerShell أو واجهة برمجة تطبيقات REST?

إذا كان الأمر كذلك، يجب عليك استخدام قواعد جدار الحماية. يمكن تكوين قواعد جدار الحماية على مستوى قاعدة البيانات فقط من خلال Transact-SQL.

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

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

هل يدير الشخص أو الفريق الذي يقوم بتكوين قواعد جدار الحماية أو تدقيقها قواعد جدار الحماية بشكل مركزي المتعلقة بالعديد من قواعد البيانات (ربما مئات)؟

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

هل يمكنني استخدام قواعد جدار الحماية على مستوى ملقم الشبكة وقاعدة البيانات?

نعم. قد يحتاج بعض المستخدمين، مثل المسؤولين، إلى قواعد جدار الحماية على مستوى الخادم. قد يحتاج المستخدمون الآخرون، مثل مستخدمي تطبيق قاعدة البيانات، إلى قواعد جدار الحماية على مستوى قاعدة البيانات.

الاتصالات من خلال الإنترنت

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

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

ملاحظة

للوصول إلى قاعدة بيانات Azure SQL من الكمبيوتر المحلي، تأكد من أن جدار الحماية على الشبكة والكمبيوتر المحلي يسمح بالاتصال الصادر على منفذ TCP 1433.

الاتصالات من داخل Azure

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

عندما يحاول التطبيق من Azure الاتصال بالخادم، يتحقق جدار الحماية من أن اتصالات Azure مسموح بها عن طريق التحقق من وجود قاعدة جدار الحماية هذه. يمكن تشغيل هذا مباشرةً من شفرة مدخل Azure عن طريق تغيير وضع السماح لخدمات Azure والموارد للوصول إلى هذا الملقم إلى ON في جدران الحماية وإعدادات الشبكات الظاهرية. تبديل الإعداد إلى ON بإنشاء قاعدة جدار حماية واردة IP 0.0.0.0 - 0.0.0.0 المعروفة باسم AllowAllWindowsAzureIps. يمكن عرض القاعدة في طريقة عرض قاعدة البيانات الرئيسية sys.firewall_rules. استخدم PowerShell أو Azure CLI لإنشاء قاعدة جدار حماية مع تعيين عناوين IP للبدء والنهاية على 0.0.0.0 إذا كنت لا تستخدم المدخل.

هام

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

الأذونات

ولكي تصبح قادراً على إنشاء وإدارة قواعد جدار الحماية لـ SQL Server Azure، ستحتاج إلى أن تكون:

إنشاء وإدارة قواعد جدار حماية IP

إنشاء إعداد جدار الحماية على مستوى ملقم الشبكة الأول باستخدام مدخل Azure أو برمجياً باستخدام Azure PowerShellأو Azure CLIأو API REST Azure. يمكنك إنشاء وإدارة قواعد جدار حماية إضافية على مستوى ملقم الشبكة باستخدام هذه الطرق أو Transact-SQL.

هام

يمكنك إنشاء قواعد جدار حماية على مستوى قاعدة البيانات يمكن فقط إنشاء وإدارتها باستخدام Transact-SQL.

لتحسين الأداء، يتم تخزين قواعد جدار الحماية مؤقتاً على مستوى قاعدة البيانات. لتحديث ذاكرة التخزين المؤقت للمصادقة، راجع DBCC FLUSHAUTHCACHE.

تلميح

يمكنك استخدام "تدقيق قاعدة البيانات" لمراجعة التغييرات على مستوى الخادم وجدار الحماية على مستوى قاعدة البيانات.

استخدام مدخل Azure لإدارة قواعد جدار الحماية على مستوى ملقم الشبكة

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

تلميح

للحصول على برنامج تعليمي، راجع تصميم قاعدة بيانات باستخدام مدخل Microsoft Azure.

من صفحة نظرة عامة على قاعدة البيانات

  1. لتعيين قاعدة جدار حماية على مستوى ملقم الشبكة من صفحة نظرة عامة على قاعدة البيانات، حدد تعيين جدار حماية ملقم الشبكة على شريط الأدوات، كما تظهر الصورة التالية.

    Server IP firewall rule

    فتح صفحة "Firewall settings" للخادم.

  2. حدد إضافة عنوان IP للعميل على شريط الأدوات لإضافة عنوان IP للكمبيوتر الذي تستخدمه، ثم حدد "حفظ" . يتم إنشاء قاعدة جدار حماية على مستوى ملقم الشبكة لعنوان IP الحالي.

    Set server-level IP firewall rule

من صفحة نظرة عامة على ملقم الشبكة

تفتح صفحة نظرة عامة على الخادم. تعرض لك اسم ملقم الشبكة المؤهل بالكامل (مثل mynewserver-20170403.database.windows.net) وتوفر خيارات لمزيد من التكوين.

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

  2. حدد إضافة عنوان IP للعميل على شريط الأدوات لإضافة عنوان IP للكمبيوتر الذي تستخدمه، ثم حدد "حفظ" . يتم إنشاء قاعدة جدار حماية على مستوى ملقم الشبكة لعنوان IP الحالي.

استخدام transact-SQL لإدارة قواعد جدار الحماية

عرض الكتالوج أو الإجراء المخزن المستوى الوصف
sys.firewall_rules الخادم عرض قواعد جدار الحماية الحالي على مستوى ملقم الشبكة
sp_set_firewall_rule الخادم إنشاء أو تحديث قواعد جدار الحماية على مستوى ملقم الشبكة
sp_delete_firewall_rule الخادم إزالة قواعد جدار حماية عنوان على مستوى ملقم الشبكة
sys.database_firewall_rules قاعدة البيانات عرض قواعد جدار الحماية الحالية على مستوى قاعدة البيانات
sp_set_database_firewall_rule قاعدة البيانات إنشاء قواعد جدار الحماية على مستوى قاعدة البيانات أو تحديثها
sp_delete_database_firewall_rule قواعد البيانات إزالة قواعد جدار الحماية على مستوى قاعدة البيانات

يستعرض المثال التالي القواعد الموجودة، ويتيح نطاقاً من عناوين IP على ملقم الشبكة Contoso، ويحذف قاعدة جدار الحماية:

SELECT * FROM sys.firewall_rules ORDER BY name;

بعد ذلك، يتم إضافة قاعدة جدار الحماية على مستوى ملقم الشبكة.

EXECUTE sp_set_firewall_rule @name = N'ContosoFirewallRule',
   @start_ip_address = '192.168.1.1', @end_ip_address = '192.168.1.10'

لحذف قاعدة جدار الحماية على مستوى ملقم الشبكة، قم بتنفيذ الإجراء المخزن sp_delete_firewall_rule. المثال التالي يحذف القاعدة ContosoFirewallRule:

EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule'

استخدام PowerShell لإدارة قواعد جدار الحماية على مستوى ملقم الشبكة

ملاحظة

تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

هام

لا تزال الوحدة النمطيةPowerShell Azure Resource Manager مدعومة من قاعدة بيانات SQL Azure، ولكن جميع التطويرات المستقبلية تكون للوحدة النمطية Az.Sql. بالنسبة إلى أوامر cmdlets، راجع AzureRM.Sql. تتطابق وسائط الأوامر فيAz وفي الوحدات النمطية AzureRm بشكلٍ كبير.

Cmdlet المستوى الوصف
Get-AzSqlServerFirewallRule الخادم إرجاع قواعد جدار الحماية الحالية على مستوى الخادم
New-AzSqlServerFirewallRule الخادم إنشاء قاعدة جدار حماية على مستوى ملقم الشبكة
Set-AzSqlServerFirewallRule الخادم تحديث خصائص قاعدة جدار حماية موجودة على مستوى ملقم الشبكة
Remove-AzSqlServerFirewallRule الخادم إزالة قواعد جدار الحماية على مستوى ملقم الشبكة

يستخدم المثال التالي PowerShell لتعيين قاعدة جدار الحماية على مستوى ملقم الشبكة:

New-AzSqlServerFirewallRule -ResourceGroupName "myResourceGroup" `
    -ServerName $servername `
    -FirewallRuleName "ContosoIPRange" -StartIpAddress "192.168.1.0" -EndIpAddress "192.168.1.255"

تلميح

بالنسبة لـ $servername، يمكنك تحديد اسم ملقم الشبكة وليس اسم DNS المؤهل بالكامل على سبيل المثال تحديد mysqldbserver بدلاً من mysqldbserver.database.windows.net

للحصول على أمثلة PowerShell في سياق التشغيل السريع، راجع إنشاء قاعدة بيانات - PowerShellوإنشاء قاعدة بيانات واحدة وتكوين قاعدة جدار حماية على مستوى الخادم باستخدام PowerShell.

استخدم واجهة سطر الأوامر لإدارة قواعد جدار الحماية على مستوى ملقم الشبكة

Cmdlet المستوى الوصف
إنشاء قاعدة جدار حماية الخادم az sql الخادم إنشاء قاعدة جدار حماية الملقم
سرد قواعد جدار الحماية لملقم شبكة sql az الخادم سرد قواعد جدار الحماية على ملقم الشبكة
عرض قاعدة جدار حماية ملقم شبكة sql az الخادم إظهار التفاصيل على قاعدة جدار الحماية
تحديث قاعدة جدار حماية لملقم شبكة SQL az الخادم تحديث قاعدة جدار الحماية
حذف قاعدة جدار الحماية لملقم شبكة SQL az الخادم حذف قاعدة جدار الحماية

يستخدم المثال التالي واجهة مستوى الاستدعاء ( CLI) لتعيين قاعدة جدار الحماية على مستوى ملقم الشبكة:

az sql server firewall-rule create --resource-group myResourceGroup --server $servername \
-n ContosoIPRange --start-ip-address 192.168.1.0 --end-ip-address 192.168.1.255

تلميح

بالنسبة لـ $servername، يمكنك تحديد اسم ملقم الشبكة وليس اسم DNS المؤهل بالكامل على سبيل المثال تحديد mysqldbserver بدلاً من mysqldbserver.database.windows.net

للحصول على مثال CLI في سياق التشغيل السريع، راجع إنشاء قاعدة بيانات -Azure CLIوإنشاء قاعدة بيانات واحدة وتكوين قاعدة جدار حماية على مستوى ملقم الشبكة باستخدام Azure CLI.

استخدام واجهة برمجة تطبيقات REST لإدارة قواعد جدار الحماية على مستوى ملقم الشبكة

واجهة برمجة التطبيقات (API) المستوى الوصف
سرد قواعد جدار الحماية الخادم عرض قواعد جدار الحماية الحالي على مستوى ملقم الشبكة
إنشاء أو تحديث قواعد جدار الحماية الخادم إنشاء أو تحديث قواعد جدار الحماية على مستوى ملقم الشبكة
حذف قواعد جدار الحماية الخادم إزالة قواعد جدار حماية عنوان على مستوى ملقم الشبكة
الحصول على قواعد جدار الحماية الخادم الحصول على قواعد جدار الحماية على مستوى ملقم الشبكة

استكشاف الأخطاء الموجودة بجدار حماية قاعدة البيانات وإصلاحها

مراعاة النقاط التالية عند الوصول إلى قاعدة بيانات Azure SQL لا يظهر على النحو المتوقع.

  • تكوين جدار الحماية المحلي:

    قبل أن يتمكن الكمبيوتر من الوصول إلى قاعدة بيانات Azure SQL، قد تحتاج إلى إنشاء استثناء جدار حماية على الكمبيوتر لمنفذ TCP 1433. لإجراء اتصالات داخل حدود سحابة Azure، قد يتطلب ذلك فتح منافذ إضافية. لمزيد من المعلومات، راجع قسم "قاعدة بيانات SQL: الخارج مقابل الداخل" من المنافذ بعد 1433 ADO.NET 4.5 وقاعدة بيانات SQL Azure.

  • ترجمة عناوين الشبكة:

    بسبب ترجمة عناوين الشبكة، قد يختلف عنوان IP المستخدم عن طريق الكمبيوتر للاتصال بقاعدة بيانات azure SQL عن عنوان IP في إعدادات تكوين IP للكمبيوتر. لعرض عنوان IP الذي يستخدمه الكمبيوتر للاتصال بـ Azure:

    1. تسجيل الدخول إلى المدخل.
    2. الانتقال إلى علامة التبويب "تكوين" على ملقم الشبكة الذي يستضيف قاعدة البيانات.
    3. يتم عرض عنوان IP للعميل الحالي في قسم عناوين IP المسموح بها. تحديد "إضافة"لعناوين IP المسموح بها للسماح لهذا الكمبيوتر بالوصول إلى ملقم الشبكة.
  • لم يتم بعد سريان التغييرات التي أدخلت على قائمة السماح:

    قد يكون هناك تأخير لمدة خمس دقائق حتى يتم تفعيل التغييرات في تكوين جدار حماية قاعدة بياناتAzure SQL.

  • تسجيل الدخول غير مصرح به، أو تم استخدام كلمة مرور غير صحيحة:

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

  • عنوان IP الديناميكي:

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

    • مطالبة موفر خدمة الإنترنت نطاق عناوين IP المعين لأجهزة الكمبيوتر للعميل التي تقوم بالوصول إلى الخادم. إضافة نطاق عنوان IP كقاعدة جدار الحماية.
    • الحصول على عنوان IP ثابت بدلاً من ذلك لأجهزة الكمبيوتر للعميل. إضافة عناوين IP كقواعد جدار الحماية.

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