مصادقة 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 Server Admins

  • اسم المستخدم المسؤول في 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 LOGINALTER 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 الدور الإذن على المستخدم.

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

لمزيد من المعلومات، راجع مستخدمي قاعدة البيانات المضمنين- جعل قاعدة بياناتك قابلة للوصول.