ضوابط الوصول للمستخدمين والأدوار في SQL

كل العلائقية أنظمة إدارة قواعد البيانات توفر نوعًا من آليات الأمان الجوهرية المصممة لتقليل تهديدات فقدان البيانات أو تلف البيانات أو سرقتها. وهي تتراوح من الحماية البسيطة بكلمة مرور التي يوفرها مدخل البرمجيات المرنة إلى هيكل المستخدم / الدور المعقد المدعوم بقواعد البيانات العلائقية المتقدمة مثل وحي ومايكروسوفت SQL الخادم. تعتبر بعض آليات الأمان مشتركة بين جميع قواعد البيانات التي تقوم بتطبيقلغة الاستعلام الهيكلية.

أمان على مستوى المستخدم

تدعم قواعد البيانات المستندة إلى الخادم أ المستعمل مفهوم مشابه لذلك المستخدم في أنظمة تشغيل الكمبيوتر. إذا كنت معتادًا على التسلسل الهرمي للمستخدم / المجموعة الموجود في مايكروسوفت ويندوز NT و Windows 2000 ، ستجد أن مجموعات المستخدمين / الأدوار التي يدعمها SQL Server و Oracle متشابهة.

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

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

instagram viewer

مطور ويب
أوستابينكو أولينا/ جيتي إيماجيس

تختلف طرق إنشاء حسابات المستخدمين من منصة إلى أخرى وسيتعين عليك الرجوع إلى الوثائق الخاصة بنظام إدارة قواعد البيانات (DBMS) لمعرفة الإجراء الدقيق. يجب على مستخدمي Microsoft SQL Server التحقيق في استخدام ملحق sp_adduser الإجراء المخزن. سيجد مسؤولو قاعدة بيانات أوراكل ملف إنشاء مستخدم الأمر مفيد. قد ترغب أيضًا في التحقق من أنظمة المصادقة البديلة. على سبيل المثال ، يدعم Microsoft SQL Server استخدام أمان Windows NT المتكامل. بموجب هذا النظام ، يتم تحديد المستخدمين لقاعدة البيانات من خلال حسابات مستخدمي Windows NT الخاصة بهم ولا يُطلب منهم إدخال معرف مستخدم وكلمة مرور إضافيين للوصول إلى قاعدة البيانات. هذا النهج شائع بين مسؤولي قواعد البيانات لأنه ينقل عبء الحساب الإدارة لموظفي إدارة الشبكة وتوفر سهولة تسجيل الدخول الفردي إلى المستخدم النهائي.

أمان على مستوى الدور

إذا كنت في بيئة بها عدد قليل من المستخدمين ، فستجد على الأرجح أن إنشاء حسابات المستخدمين وتعيين الأذونات لهم بشكل مباشر كافٍ لاحتياجاتك. ومع ذلك ، إذا كان لديك عدد كبير من المستخدمين ، فسوف تشعر بالارتباك من خلال الاحتفاظ بالحسابات والأذونات المناسبة. لتخفيف هذا العبء ، دعم قواعد البيانات العلائقية الأدوار. تعمل أدوار قاعدة البيانات بشكل مشابه لمجموعات Windows NT. يتم تعيين حسابات المستخدمين إلى الدور (الأدوار) ثم يتم تعيين الأذونات للدور ككل بدلاً من حسابات المستخدمين الفردية. على سبيل المثال ، يمكنك إنشاء دور DBA ثم إضافة حسابات المستخدمين لموظفيك الإداريين إلى هذا الدور. بعد ذلك ، يمكنك تعيين إذن محدد لجميع المسؤولين الحاليين (والمستقبليين) بمجرد تعيين الإذن للدور. مرة أخرى ، تختلف إجراءات إنشاء الأدوار من منصة إلى أخرى. يجب على مسؤولي MS SQL Server التحقيق في ملف sp_addrole الإجراء المخزن بينما يجب على Oracle DBAs استخدام الامتداد أنشئ دورًا بناء الجملة.

منح الأذونات

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

إليك صيغة البيان:

منحة. 
[على. 
ل. 
[مع خيار المنح]

الآن ، دعنا نلقي نظرة على هذا البيان سطرًا بسطر. السطر الأول منحة ، يسمح لنا بتحديد أذونات الجدول المحددة التي نمنحها. يمكن أن تكون هذه الأذونات على مستوى الجدول (مثل SELECT و INSERT و UPDATE و DELETE) أو أذونات قاعدة البيانات (مثل CREATE TABLE و ALTER DATABASE و GRANT). يمكن منح أكثر من إذن واحد في بيان GRANT واحد ، ولكن قد لا يتم دمج الأذونات على مستوى الجدول والأذونات على مستوى قاعدة البيانات في بيان واحد.

السطر الثاني على

وأخيرا السطر الرابع مع خيار المنحة، هو اختياري. إذا تم تضمين هذا السطر في البيان ، فيُسمح أيضًا للمستخدم المتأثر بمنح هذه الأذونات نفسها للمستخدمين الآخرين. لاحظ أنه لا يمكن تحديد WITH GRANT OPTION عند تعيين الأذونات لدور ما.

أمثلة على منح قاعدة البيانات

لنلقِ نظرة على بعض الأمثلة. في السيناريو الأول لدينا ، قمنا مؤخرًا بتوظيف مجموعة من 42 من مشغلي إدخال البيانات الذين سيقومون بإضافة سجلات العملاء والاحتفاظ بها. يجب عليهم الوصول إلى المعلومات الموجودة في جدول العملاء وتعديل هذه المعلومات وإضافة سجلات جديدة إلى الجدول. يجب ألا يكونوا قادرين على حذف سجل بالكامل من قاعدة البيانات.

أولاً ، يجب أن ننشئ حسابات مستخدمين لكل مشغل ثم نضيفهم جميعًا إلى دور جديد ، ادخال بيانات. بعد ذلك ، يجب أن نستخدم عبارة SQL التالية لمنحهم الأذونات المناسبة:

منح اختيار وإدراج وتحديث. 
على العملاء. 
إلى إدخال البيانات. 

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

منح إنشاء الجدول. 
إلى ديسيبل. 
مع خيار المنحة. 

لاحظ أننا قمنا بتضمين سطر WITH GRANT OPTION للتأكد من أن مسؤولي قواعد البيانات لدينا يمكنهم تعيين هذا الإذن إلى مستخدمين آخرين.

إزالة الأذونات

يتضمن SQL الأمر REVOKE لإزالة الأذونات الممنوحة مسبقًا. ها هي البنية:

REVOKE [منح الخيار لـ]
على. 
من عند. 

ستلاحظ أن بناء جملة هذا الأمر يشبه صيغة الأمر GRANT. الاختلاف الوحيد هو أن WITH GRANT OPTION محدد في سطر أوامر REVOKE وليس في نهاية الأمر. على سبيل المثال ، دعنا نتخيل أننا نريد إلغاء الإذن الممنوح سابقًا لماري لإزالة السجلات من قاعدة بيانات العملاء. سنستخدم الأمر التالي:

إبطال الحذف. 
على العملاء. 
من مريم. 

هناك آلية إضافية واحدة يدعمها Microsoft SQL Server تستحق الذكر - أمر DENY. يمكن استخدام هذا الأمر لرفض إذن صريح للمستخدم الذي قد يكون لديه من خلال عضوية دور حالية أو مستقبلية. ها هي البنية:

أنكر. 
على. 
ل.