حماية قواعد البيانات من الدخول غير المصرح به

يلا بينا نحمى قاعدة البيانات_خاص بالDBA
**************************************************************
السلام عليكم ورحمة الله وبركاته
أخواني الأعزاء أعضاء الجروب من المواضيع الهامة التي تواجه مدراء قواعد بيانات الأوراكل والمسؤليين عن حماية قاعدة البيانات موضوع الدخول الغير مصرح به والتعديل على بيانات خصوصا من المستخدمين الذين لديهم صلاحيات للدخول على بعض التطبيقات وبموجب هذه الصلاحيات يمكنهم الدخول على قاعدة البيانات من برامج أخرى فمثلا لو افترضنا ان المستخدم "خالد" لديه صلاحية الدخول على قاعدة البيانات عن طريق برنامج Oracle forms run time أي ان لديه صلاحية create session او Connect role بموجب هذه الصلاحية يمكنه الدخول ايضا على برنامج كال SQL*PLUS السؤال المطروح الآن هو كيفية منع المستخدمين من الدخول على بعض التطبيقات كا SQL*PLUS ؟

هناك عدة طرق لحل هذه المشكلة سوف أذكرها ولكن مايهمنا منها هو الطريقة الثالثة :

1-الطريقة الأولى write code to enable privileges in the application كتابة كود داخل النماذج للتفعيل صلاحيات المستخدم بعد التأكد منه أي ان صلاحيات المستخدم تفعل فقط وقت دخوله على النماذج وبمجرد خروجه يتم إلغاء تفعيل الصلاحيات وبالتالي لايمكنه الدخول على أي برنامج آخر لإن صلاحياته غير مفعلة .

2-الطريقة الثانية وهي إيقاف الدخول على SQL*PLUS عن طريق الشبكة وهي طريقة طويلة وتحتاج إلى تنفيذ الكثير من الإجراءات على نظام التشغيل ، أيضا منع مستخدمي نظام التشغيل من عمل اعداد (installation ) لل SQL*PLUS .

3-الطريقة الثالثة وهي الطريقة الأسهل والتي سوف نناقشها وهي التحكم في الأمن على مستوى التطبيقات Product-level Securityويقصد بهذه الطريقة ان المستخدم يمكن ان يقيد في استخدام أوامر في برنامج SQL*PLUS مثل أمر DECLARE او أي أمر آخر ويتم إنجاز هذا الموضوع بإضافة بيانات هذا التقييد إلى جدول SQLPLUS_PRODUCT_PROFILE حيث يتم قراءة بيانات هذا الجدول مع دخول أي مستخدم إلى قاعدة البيانات بإستثناء المستخدمين SYS & SYSTEM وتطبيق التقييد على ال SESSION الحالي لهذا المستخدم .

إعــــــــــــــــــداد بيئة ال SQL*PLUS للتعامل مع هذه الطريقة :

يتم إنشاء الجدول SQLPLUS_PRODUCT_PROFILE تلقائيا عند إنشاء SYSTEM schema ،مع Synonyms التالية والمتاحة للدخول عليه وهي PRODUCT_USER_PROFILE and PRODUCT_PROFILE .

يمكننا إعداد هذا الجدول عن طريق الدخول عن طريق المستخدم system و تنفيذ الملف pupbld.sql والموجود في ال
ORACLE_HOME/sqlplus/admin" path" .

محتويات جدول PRODUCT_USER_PROFILE :

CODE
PRODUCT - وهي عبارة عن إسم البرنامج الذي نريد أن نقيد المستخدم من تنفيذ أمر معين فيه مثلا "SQL*Plus".
USERID - هنا نضع إسم المستخدم بالأحرف الكبيرة upper case .
ATTRIBUTE - هنا نحدد الأمر الذي نريد تقييد المستخدم من إستخدامه مثلا "DECLARE" وبالأحرف الكبيرة upper case .
CHAR_VALUE - هنا نضع كلمة غير مغعل "DISABLED" لإلغاء تفعيل الأمر أو الخاصية لدى المستخدم.

الأوامر التي يمكننا تقييدها :

أولا :أوامر ال SQL وهي

CODE

ALTER, AUDIT, ANALYZE, CREATE, DELETE, DROP, INSERT, LOCK, NOAUDIT, RENAME,

SELECT, UPDATE, VALIDATE, TRUNCATE, GRANT, REVOKE, SET ROLE, SET TRANSACTION
ثانيا : أوامر ال PL/SQL

CODE

DECLARE, BEGIN
ثالثا : أوامر ال SQL*PLUS

CODE
COPY, HOST, SET, EDIT, PASSWORD, SPOOL, EXECUTE, QUIT, START, EXIT, RUN, GET, SAVE

مثــــــــــــــــــــــــــــــــــــــــال :
لنأخذ مثال على الموضوع حيث نريد منع المستخدم SCOTT من تنفيذ أمر DECLARE فقط نقوم بتنفيذ جملة ال INSERT التالية :

CODE

insert into product_user_profile(product, userid, attribute, char_value)
values('SQL*Plus', 'SCOTT', 'DECLARE', 'DISABLED');
في هذه الحالة لو حاول المستخدم SCOTT تنفيذ جملة DECLARE كما في هذا الأمر :

CODE

DECLARE
V_EMPNO NUMBER;
BEGIN
V_EMPNO:=7788;
END;
سوف تظهر له رسالة خطأ وهي :

SP2-0544: invalid command: declare


تعليقات