تكوين وصول معزول إلى نسخة متماثلة مسماة ذات مقاس فائق

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

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

إنشاء تسجيل دخول في قاعدة البيانات الرئيسية على الخادم الأساسي

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

create login [third-party-login] with password = 'Just4STRONG_PAZzW0rd!';

استرداد قيمة SID الست عشرية لتسجيل الدخول الذي تم إنشائه من sys.sql_logins عرض النظام:

select sid from sys.sql_logins where name = 'third-party-login';

تعطيل تسجيل الدخول. هذا سيمنع تسجيل الدخول هذا من الوصول إلى أي قاعدة بيانات على الخادم الذي يستضيف النسخة المتماثلة الأساسية.

alter login [third-party-login] disable;

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

بمجرد إنشاء تسجيل الدخول، اتصل بالنسخة المتماثلة للقراءة والكتابة الأساسية من قاعدة البيانات الخاصة بك، على سبيل المثال WideWorldImporters (يمكنك العثور على نموذج البرنامج النصي لاستعادته هنا: استعادة قاعدة البيانات في Azure SQL)وإنشاء مستخدم قاعدة بيانات لتسجيل الدخول هذا:

create user [third-party-user] from login [third-party-login];

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

drop login [third-party-login];

إنشاء نسخة متماثلة مسماة على خادم منطقي مختلف

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

استخدام، على سبيل المثال، AZ CLI:

az sql server create -g MyResourceGroup -n MyNamedReplicaServer -l MyLocation --admin-user MyAdminUser --admin-password MyStrongADM1NPassw0rd!

ثم قم بإنشاء نسخة متماثلة مسماة لقاعدة البيانات الأساسية على هذا الخادم. على سبيل المثال، استخدم AZ CLI:

az sql db replica create -g MyResourceGroup -n WideWorldImporters -s MyPrimaryServer --secondary-type Named --partner-database WideWorldImporters_NR --partner-server MyNamedReplicaServer

إنشاء تسجيل دخول في قاعدة البيانات الرئيسية على ملقم النسخ المتماثلة المسماة

الاتصال إلى master قاعدة البيانات على الخادم المنطقي استضافة النسخة المتماثلة المسماة، التي تم إنشاؤها في الخطوة السابقة. إضافة تسجيل الدخول باستخدام SID المستردة من النسخة المتماثلة الأساسية:

create login [third-party-login] with password = 'Just4STRONG_PAZzW0rd!', sid = 0x0...1234;

عند هذه النقطة، يمكن للمستخدمين والتطبيقات التي تستخدم third-party-login الاتصال بالنسخة المتماثلة المسماة، ولكن ليس بالنسخة المتماثلة الأساسية.

منح أذونات مستوى الكائن داخل قاعدة البيانات

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

تذكر أن المستخدم الذي تم إنشاؤه حديثا لديه مجموعة من الأذونات الممنوحة (على سبيل المثال، لا يمكنه الوصول إلى أي جداول مستخدمين). إذا كنت تريد السماح لـ third-party-user بقراءة البيانات في جدول، تحتاج إلى منح SELECT الإذن بشكل صريح:

grant select on [Application].[Cities] to [third-party-user];

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

اختبار الوصول

يمكنك اختبار هذا التكوين باستخدام أي أداة عميل ومحاولة الاتصال بالنسخة المتماثلة الأساسية والنسخة المتماثلة المسماة. على سبيل المثال، باستخدام sqlcmd، يمكنك محاولة الاتصال بالنسخة المتماثلة الأساسية باستخدام third-party-login المستخدم:

sqlcmd -S MyPrimaryServer.database.windows.net -U third-party-login -P Just4STRONG_PAZzW0rd! -d WideWorldImporters

سيؤدي هذا إلى حدوث خطأ حيث لا يسمح للمستخدم بالاتصال بالخادم:

Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'third-party-login'. Reason: The account is disabled.

تنجح محاولة الاتصال بالنسخة المتماثلة المسماة:

sqlcmd -S MyNamedReplicaServer.database.windows.net -U third-party-login -P Just4STRONG_PAZzW0rd! -d WideWorldImporters_NR

يتم إرجاع أية أخطاء، ويمكن تنفيذ الاستعلامات على النسخة المتماثلة المسماة كما هو مسموح به من أذونات مستوى الكائن الممنوحة.

لمزيد من المعلومات: