الانتقال إلى المحتوى

الأمن في برنامج SQL*PLUS


Recommended Posts

السلام عليكم ورحمة الله وبركاته
أخواني الأعزاء أعضاء المنتدى من المواضيع الهامة التي تواجه مدراء قواعد بيانات الأوراكل والمسؤليين عن حماية قاعدة البيانات موضوع الدخول الغير مصرح به والتعديل على بيانات خصوصا من المستخدمين الذين لديهم صلاحيات للدخول على بعض التطبيقات وبموجب هذه الصلاحيات يمكنهم الدخول على قاعدة البيانات من برامج أخرى فمثلا لو افترضنا ان المستخدم "خالد" لديه صلاحية الدخول على قاعدة البيانات عن طريق برنامج 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 :

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



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

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

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

SELECT, UPDATE, VALIDATE, TRUNCATE, GRANT, REVOKE, SET ROLE, SET TRANSACTION



ثانيا : أوامر ال PL/SQL

DECLARE, BEGIN


ثالثا : أوامر ال SQL*PLUS

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


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

insert into product_user_profile(product, userid, attribute, char_value)
                         values('SQL*Plus', 'SCOTT', 'DECLARE', 'DISABLED');



في هذه الحالة لو حاول المستخدم SCOTT تنفيذ جملة DECLARE كما في هذا الأمر :

DECLARE
V_EMPNO NUMBER;
BEGIN
V_EMPNO:=7788;
END;



سوف تظهر له رسالة خطأ وهي :

SP2-0544: invalid command: declare

وأخيرا فلقد قرأت ونقلت هذا الموضوع من الرابط http://dbasupport.com/oracle/ora9i/lockDow..._SQL_Plus.shtml

تحياتي ولاتنوسنا من دعوة صالحة :) :D ....

تم تعديل بواسطة msh
رابط هذا التعليق
شارك

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
والحمد لله رب العالمين
والصلاة والسلام على الحبيب المصطفى
والى الأمام دوما
وبارك الله فيك ولك وعليك وجعله فى ميزان حسناتك
--------------------------------------------------------------------------------------------------------
سبحان الله العظيم - سبحان الله وبحمده عدد خلقه ورضاء نفسه وزنة عرشه ومداد كلماته ولا حول ولا قوة الابالله

رابط هذا التعليق
شارك

شكر الله لك أخي الفاضل .. :)
ونفع بك الإسلام و المسلمين ..

رابط هذا التعليق
شارك

  • بعد 6 شهور...
  • بعد 6 شهور...

جزاك الله خير الجزاء وزادك من علمه


اريد ان اظيف هنا انه يمكن ان نعطي صلاحيات على بيانات الجدول بمعنى جزء من البيانات في الجدول متاح لمستخدم معين والجزء الاخر غير متاح ولكن لم ابحث في هذا الموضوع ولكنه موجود ومطبق في قاعدة بيانات اوراكل .

والى الامام جميعاً

رابط هذا التعليق
شارك

  • بعد 2 أسابيع...
  • بعد 11 شهور...
  • بعد 1 سنة...
  • بعد 1 سنة...
  • بعد 1 شهر...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية