يلا بينا نحمى قاعدة البيانات_خاص بال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
CODE
CODE
COPY, HOST, SET, EDIT, PASSWORD, SPOOL, EXECUTE, QUIT, START, EXIT, RUN, GET, SAVE
مثــــــــــــــــــــــــــــــــــــــــال :
لنأخذ مثال على الموضوع حيث نريد منع المستخدم SCOTT من تنفيذ أمر DECLARE فقط نقوم بتنفيذ جملة ال INSERT التالية :
CODE
CODE
SP2-0544: invalid command: declare
**************************************************************
السلام عليكم ورحمة الله وبركاته
أخواني الأعزاء أعضاء الجروب من المواضيع الهامة التي تواجه مدراء قواعد بيانات الأوراكل والمسؤليين عن حماية قاعدة البيانات موضوع الدخول الغير مصرح به والتعديل على بيانات خصوصا من المستخدمين الذين لديهم صلاحيات للدخول على بعض التطبيقات وبموجب هذه الصلاحيات يمكنهم الدخول على قاعدة البيانات من برامج أخرى فمثلا لو افترضنا ان المستخدم "خالد" لديه صلاحية الدخول على قاعدة البيانات عن طريق برنامج 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
تعليقات
إرسال تعليق