مصادقة SQL في Azure Synapse Analytics
يحتوي Azure Synapse Analytics على عاملَي نموذج SQL يتيحان لك التحكم في استهلاك الموارد. تشرح هذه المقالة كيف يتحكم عاملا النموذج في مصادقة المستخدم.
لترخيص Synapse SQL، يمكنك استخدام نوعين من التفويضات:
- تخويل Microsoft Entra
- تخويل SQL
يمكّن ترخيص SQL التطبيقات القديمة من الاتصال بـ Azure Synapse SQL بطريقة مألوفة. ومع ذلك، تسمح لك مصادقة Microsoft Entra بإدارة الوصول مركزيا إلى موارد Azure Synapse، مثل تجمعات SQL. يدعم Azure Synapse Analytics تعطيل المصادقة المحلية مثل مصادقة SQL أثناء إنشاء مساحة العمل وبعدها. يمكن للمستخدمين المعتمدين، بمجرد التعطيل، تمكين المصادقة المحلية في أي وقت. لمزيد من المعلومات حول مصادقة Microsoft Entra فقط، راجع تعطيل المصادقة المحلية في Azure Synapse Analytics.
الحسابات الإدارية
هناك حسابان إداريان (اسم مستخدم مسؤول SQL ومسؤول SQL Active Directory) يعملان كمسؤولين. لتحديد حسابات المسؤول هذه لتجمعات SQL، افتح مدخل Microsoft Azure، وانتقل إلى علامة التبويب «خصائص» في مساحة العمل Synapse.
اسم المستخدم المسؤول في SQL
عند إنشاء Azure Synapse Analytics، يجب عليك تسمية تسجيل دخول مسؤول الخادم. ينشئ خادم SQL هذا الحساب نظرًا لتسجيله الدخول إلى قاعدة البيانات
master
. يتصل هذا الحساب باستخدام مصادقة SQL Server (اسم المستخدم وكلمة المرور). يمكن أن يوجد واحد فقط من هذه الحسابات.مسؤول SQL Active Directory
يمكن أيضا تكوين حساب Microsoft Entra واحد، إما حساب فردي أو حساب مجموعة أمان، كمسؤول. من الاختياري تكوين مسؤول Microsoft Entra، ولكن يجب تكوين مسؤول Microsoft Entra إذا كنت تريد استخدام حسابات Microsoft Entra للاتصال ب Synapse SQL.
- يتحكم حساب مسؤول Microsoft Entra في الوصول إلى تجمعات SQL المخصصة، بينما يمكن استخدام أدوار Synapse RBAC للتحكم في الوصول إلى التجمعات بلا خادم، على سبيل المثال، مع دور Synapse مسؤول istrator وSynapse SQL مسؤول istrator.
اسم مستخدم مسؤول SQL وحسابات مسؤول SQL Active Directory لها الخصائص التالية:
- هي الحسابات الوحيدة التي يمكنها الاتصال تلقائيًا بأي قاعدة بيانات SQL على الخادم. (للاتصال بقاعدة بيانات المستخدم، يجب أن تكون الحسابات الأخرى إما مالك قاعدة البيانات أو لديها حساب مستخدم في قاعدة بيانات المستخدم.)
- تدخل هذه الحسابات قواعد بيانات المستخدم كمستخدم
dbo
ولديهم جميع الأذونات في قواعد بيانات المستخدم. (يقوم مالك قاعدة بيانات المستخدم أيضا بإدخال قاعدة البيانات كمستخدمdbo
.) - لا تدخل قاعدة البيانات
master
باعتبارك المستخدمdbo
ولديك أذونات محدودة في قاعدة البياناتmaster
. - ليسوا أعضاء في دور خادم SQL Server
sysadmin
الثابت القياسي، وهو غير متوفر في قاعدة بيانات SQL. - يمكن إنشاء وتعديل وإسقاط قواعد البيانات وعمليات تسجيل الدخول والمستخدمين في قاعدة البيانات
master
وقواعد جدار حماية عنوان IP على مستوى الخادم. - يمكن إضافة أعضاء إلى
dbmanager
الأدوار وloginmanager
وإزالتها. - يمكنه عرض
sys.sql_logins
جدول النظام.
إشعار
إذا تم تكوين مستخدم كمسؤول Active Directory وSynapse مسؤول istrator، ثم إزالته من دور مسؤول Active Directory، فسيفقد المستخدم الوصول إلى تجمعات SQL المخصصة في Synapse. يجب إزالتها ثم إضافتها إلى دور Synapse مسؤول istrator لاستعادة الوصول إلى تجمعات SQL المخصصة.
لإدارة المستخدمين الذين لديهم حق الوصول إلى تجمع SQL بلا خادم، يمكنك استخدام الإرشادات أدناه.
لإنشاء تسجيل دخول إلى تجمع SQL بلا خادم، استخدم بناء الجملة التالي:
CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;
يمكنك، بمجرد وجود تسجيل الدخول، إنشاء مستخدمين في قواعد البيانات الفردية داخل نقطة نهاية تجمع SQL بلا خادم ومنح الأذونات المطلوبة لهؤلاء المستخدمين. لإنشاء مستخدم، يمكنك استخدام بناء الجملة التالي:
CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;
بمجرد إنشاء تسجيل الدخول والمستخدم، يمكنك استخدام بناء جملة SQL Server العادي لمنح الحقوق.
المستخدمون غير المسؤولين
بشكل عام، لا تحتاج الحسابات غير الإدارية إلى الوصول إلى قاعدة البيانات master
. إنشاء مستخدمي قاعدة البيانات المضمنة على مستوى قاعدة البيانات باستخدام عبارة CREATE USER (Transact-SQL).
يمكن أن يكون المستخدم مصادقة Microsoft Entra تحتوي على مستخدم قاعدة بيانات (إذا قمت بتكوين بيئتك لمصادقة Microsoft Entra)، أو مصادقة SQL Server تحتوي على مستخدم قاعدة بيانات، أو مستخدم مصادقة SQL Server استنادا إلى تسجيل دخول مصادقة SQL Server (تم إنشاؤه في الخطوة السابقة.)
لإنشاء مستخدمين، اتصل بقاعدة البيانات، وقم بتنفيذ عبارات مشابهة للأمثلة التالية:
CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;
مبدئيًا، يمكن لأحد المسؤولين أو مالك قاعدة البيانات فقط إنشاء مستخدمين. لتخويل مستخدمين إضافيين لإنشاء مستخدمين جدد، امنح هذا المستخدم ALTER ANY USER
المحدد الإذن، باستخدام عبارة مثل:
GRANT ALTER ANY USER TO Mary;
لمنح مستخدمين إضافيين تحكما كاملا في قاعدة البيانات، اجعلهم عضوا في دور قاعدة البيانات الثابتة db_owner .
في قاعدة بيانات Azure SQL أو synapse بلا خادم، استخدم العبارة ALTER ROLE
.
ALTER ROLE db_owner ADD MEMBER Mary;
في تجمع SQL المخصص، استخدم EXEC sp_addrolemember.
EXEC sp_addrolemember 'db_owner', 'Mary';
إشعار
أحد الأسباب الشائعة لإنشاء مستخدم قاعدة بيانات استنادًا إلى تسجيل دخول الخادم هو للمستخدمين الذين يحتاجون إلى الوصول إلى قواعد بيانات متعددة. نظرًا إلى أن مستخدمي قاعدة البيانات المضمنة هم كيانات فردية، فإن كل قاعدة بيانات تحتفظ بالمستخدم وكلمة المرور الخاصة بها. يمكن أن يتسبب هذا في زيادة العبء حيث يجب على المستخدم أن يتذكر بعد ذلك كل كلمة مرور لكل قاعدة بيانات، ويمكن أن يصبح غير مقبول عند الحاجة إلى تغيير كلمات مرور متعددة للعديد من قواعد البيانات.
المجموعات والأدوار
تستخدم إدارة الوصول الفعال الأذونات المعينة للمجموعات والأدوار بدلاً من المستخدمين الفرديين.
عند استخدام مصادقة Microsoft Entra، ضع مستخدمي Microsoft Entra في مجموعة Microsoft Entra. إنشاء مستخدم قاعدة بيانات مضمن للمجموعة. ضع مستخدما واحدا أو أكثر من مستخدمي قاعدة البيانات في دور قاعدة بيانات ثم قم بتعيين أذونات لدور قاعدة البيانات.
عند استخدام مصادقة SQL Server، قم بإنشاء مستخدمي قاعدة البيانات المضمنين في قاعدة البيانات. ضع مستخدما واحدا أو أكثر من مستخدمي قاعدة البيانات في دور قاعدة بيانات ثم قم بتعيين أذونات لدور قاعدة البيانات.
يمكن أن تكون أدوار قاعدة البيانات هي الأدوار المضمنة مثل db_owner db_ddladmin db_datawriter db_datareader db_denydatawriter db_denydatareader. يتم استخدامdb_owner بشكل شائع لمنح الإذن الكامل لعدد قليل فقط من المستخدمين. تعد أدوار قواعد البيانات الثابتة الأخرى مفيدة للحصول على قاعدة بيانات بسيطة قيد التطوير بسرعة، ولكن لا يُوصى بها لمعظم قواعد بيانات الإنتاج.
على سبيل المثال، يمنح دور قاعدة البيانات الثابتة db_datareader حق الوصول للقراءة إلى كل جدول في قاعدة البيانات، والذي يكون عادة أكثر مما هو ضروري تماما.
من الأفضل بكثير استخدام عبارة CREATE ROLE لإنشاء أدوار قاعدة البيانات الخاصة بك المعرفة من قبل المستخدم ومنح كل دور بعناية أقل الأذونات اللازمة لحاجة العمل. عندما يكون المستخدم عضوًا في أدوار متعددة، فإنهم يجمعون أذوناتهم جميعًا.
الأذونات
هناك أكثر من 100 إذن يمكن منحها أو رفضها بشكل فردي في قاعدة بيانات SQL. العديد من هذه الأذونات متداخلة. على سبيل المثال، يتضمن إذن UPDATE
في مخطط ما الإذن UPDATE
في كل جدول داخل هذا المخطط. كما هو الحال في معظم أنظمة الأذونات، فإن رفض الإذن يتجاوز المنحة.
نظرًا إلى الطبيعة المتداخلة وعدد الأذونات، يمكن أن يتطلب الأمر دراسة متأنية لتصميم نظام أذونات مناسب لحماية قاعدة البيانات الخاصة بك بشكل صحيح.
ابدأ بقائمة الأذونات في الأذونات (محرك قاعدة البيانات) وراجع رسومات حجم الملصق لأذونات مشغل قاعدة البيانات.
الاعتبارات والقيود
عند إدارة تسجيلات الدخول والمستخدمين في قاعدة بيانات SQL، ضع في اعتبارك النقاط التالية:
- يجب أن تكون متصلاً بقاعدة البيانات
master
عند تنفيذ العباراتCREATE/ALTER/DROP DATABASE
. - لا يمكن تغيير مستخدم قاعدة البيانات المقابل لتسجيل دخول مسؤول الخادم أو إسقاطه.
- سيتم تعطيل مسؤول الخادم إذا تم تمكين مصادقة Microsoft Entra فقط.
- US-English هي اللغة الافتراضية لتسجيل دخول مسؤول الخادم.
- فقط المسؤولون (تسجيل دخول مسؤول الخادم أو مسؤول Microsoft Entra) وأعضاء دور قاعدة بيانات dbmanager في
master
قاعدة البيانات لديهم الإذن لتنفيذCREATE DATABASE
عبارات وDROP DATABASE
. - يجب أن تكون متصلاً بقاعدة البيانات
master
عند تنفيذ العباراتCREATE/ALTER/DROP LOGIN
. إلا أنه لا يُنصح باستخدام عمليات تسجيل الدخول. استخدم مستخدمي قاعدة البيانات المضمنة بدلاً من ذلك. لمزيد من المعلومات، راجع مستخدمي قاعدة البيانات المضمنين- جعل قاعدة بياناتك قابلة للوصول. - للاتصال بقاعدة بيانات مستخدم، يجب توفير اسم قاعدة البيانات في سلسلة الاتصال.
- فقط تسجيل الدخول الأساسي على مستوى الخادم وأعضاء دور قاعدة بيانات loginmanager في
master
قاعدة البيانات لديهم إذن لتنفيذCREATE LOGIN
ALTER LOGIN
عبارات و وDROP LOGIN
. - عند تنفيذ
CREATE/ALTER/DROP LOGIN
عبارات وCREATE/ALTER/DROP DATABASE
في تطبيق ADO.NET، لا يسمح باستخدام الأوامر ذات المعلمات. لمزيد من المعلومات، راجع الأوامر والمعلمات. - عند تنفيذ العبارة
CREATE USER
معFOR/FROM LOGIN
الخيار ، يجب أن تكون العبارة الوحيدة في دفعة Transact-SQL. - عند تنفيذ العبارة
ALTER USER
معWITH LOGIN
الخيار ، يجب أن تكون العبارة الوحيدة في دفعة Transact-SQL. CREATE/ALTER/DROP LOGIN
ولا يتم اعتماد عبارات وCREATE/ALTER/DROP USER
عند تمكين مصادقة Microsoft Entra فقط لمساحة عمل Azure Synapse.CREATE/ALTER/DROP
يتطلب المستخدم الإذن علىALTER ANY USER
قاعدة البيانات.- عندما يحاول مالك دور قاعدة البيانات إضافة مستخدم قاعدة بيانات آخر إلى دور قاعدة البيانات هذا أو حذفه منه، فقد يحدث الخطأ التالي: المستخدم أو الدور "الاسم" غير موجود في قاعدة البيانات هذه. يحدث هذا الخطأ عندما يكون المستخدم غير مرئي للمالك. لحل هذه المشكلة، امنح مالك
VIEW DEFINITION
الدور الإذن على المستخدم.
الخطوات التالية
لمزيد من المعلومات، راجع مستخدمي قاعدة البيانات المضمنين- جعل قاعدة بياناتك قابلة للوصول.