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

الامن في البرامج المصممه بالديفلوبر


عمر باعقيل

Recommended Posts

السلام عليكم ورحمة الله وبركاته

الاخوه الافاضل

بإذن الله سوف أقوم بشرح طريقه :-

ORACLE USER DEFINITION

والتى تقوم علي أساس انشاء حساب فعلي في قاعده البيانات لكل مستخدم ونمنحه الصلاحيات اللازمه

التى تتوافق مع طبيعة عمله في قاعدة البيانات .

اولا:- سأقوم بشرح طريقه إنشاء المستخدم

CREATE UAER <USER_NAME> IDENTIFIED BY <PASSWORD>
+DEFAULT TABLESPACE <TABLESPACE_NAME>
+TEMPORARY TABLESPACE <TABLESPACE_NAME>
+PROFILE <PROFILE_NAME> 
+PASSWOED EXPIRE
+ACCOUNT <LOCK>OR<UNLOCK>



* بالنسبه للاسطر التى امامها علامه + فهي إختياريه وفي حال عدم كتابتها عند انشاء المستخدم

يتم وضع القيم الافتراضيه لها .

- مثال :-

CREATE USER NEW_USER  IDENTIFIED BY USER_PASS
DEFAULT TABLESPACE USERS 
TEMPORARY TABLESPACE TEMP 
PROFILE DEFAULT 
ACCOUNT UNLOCK



ثانيا:- إنشاء ومنح الصلاحيات للمستخدمين

- بعض التعاريف والمصطلحات :-

* ال ROLE = وهي مثل الشنطه التى بها مجموعه صلاحيات " PRIVILEGES "

* ال PRIVILEGES = وهي صلاحيات جاهزه ومنشأه من قبل الاوراكل في الDATABASE


مثل SELECT TABLE , CREATE SESSION .....


* لايمكن إنشاء PRIVILEGE جديده لكن يمكن إنشاء ROLE ووضع اي PRIVILEGE بها .

* يمكن وضع ROLE بداخل ROLE .

* يجب أن يكون لديك صلاحيه CREATE ROLE لإنشاء ROLE جديده .

- لإنشاء ROLE :-

CREATE ROLE <ROLE_NAME> 
+ IDENTIFIED BY <PASSWORD>



* بالنسبه للسطر الذي امامه علامه + فهو اختياري وفي حال عدم كتابته عند انشاء الصلاحيه فسيتم

وضع القيمه الافتراضيه لها وهي NOT IDENTIFIED .

- مثال :-

CREATE ROLE NEW_ROLE 

OR 

CREATE ROLE NEW_ROLE  IDENTIFIED BY ROLE_PASS



- لوضع PRIVILEGE او ROLE داخل الNEW_ROLE .

GRANT <ROLE> OR <PRIVILEGE> TO NEW_ROLE

- مثال :-
GRANT DBA TO NEW_ROLE 

GRANT  SELECT ON EMP TO NEW_USER


- لمنح الصلاحيه "NEW_ROLE " للمستخدم NEW_USER :-

GRANT <ROLE_NAME>  TO <USER_NAME>
+WITH ADMIN OPTION 
OR
+WITH GRANT OPTION 

- مثال :-
GRANT NEW_ROLE TO NEW_USER

OR
GRANT NEW_ROLE TO NEW_USER
WITH ADMIN OPTION

OR
GRANT NEW_ROLE TO NEW_USER
WITH GRANT OPTION


** الفرق بين WITH ADMIN OPTION و WITH GRANT OPTION :-

WITH ADMIN OPTION :-

في هذه الحاله فان المستخدم NEW_USER يستطيع القيام بمنح "GRANT "
للصلاحيه "ROLE " التى لديه " NEW_ROLE " لاي مستخدم اخرمثلا للمستخدم SCOTT ...
ولو تم سحب هذه الصلاحيه NEW_ROLE مستفبلا من NEW_USER فانها لن تسحب من المستخدم SCOTT .

WITH GRANT OPTION :-

في هذه الحاله فان المستخدم NEW_USER يستطيع القيام بمنح "GRANT "
للصلاحيه "ROLE " التى لديه " NEW_ROLE " لاي مستخدم اخرمثلا للمستخدم SCOTT ...
ولو تم سحب هذه الصلاحيه NEW_ROLE مستفبلا من NEW_USER فانها ستسحب تلقلئيا من المستخدم SCOTT .




عمر باعقيل
كندا - مونتريال
[email protected]

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

  • الردود 47
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

  • عمر باعقيل

    3

  • sadiq

    3

  • khaled

    2

  • ألماس

    2

أكثر المشاركين في هذا الموضوع

السلام عليكم ورحمة الله وبركاته

تكمله لموضوع الامن في البرامج المصممه بالديفلوبر

الPROFILE هو ملف يعطى للمستخدم وبه خصائص مهمه جدا منها :-

1- FAILED_LOGIN_ATTEMPTS :-
هنا نحدد عدد المحاولات التى يمكن للمستخدم ان يحاول بها الاتصال بقاعده البيانات
واذا لم يستطيع الدخول , سيتم عمل اقفال "Lock " لحسابه وعليه مراجعه الDBA .

2- PASSWORD_LIFE_TIME :-
هنا نحدد المده الزمنيه لكلمه المرور... وبعد انتهاء هذه المده سيطلب من المستخدم تغيير
كلمه المرور .

3-SESSIONS_PER_USER
4-PRIVATE_SGA
5-PASSWORD_GRACE_TIME
والكثير غير ذلك ......

الخصائص كثيره وسهله الفهم ولن اشرحها الان , ربما في موضوع جديد

*لمعرفه الPROFILES الموجوده في الDATABASE :-


SELECT * FROM DBA_PROFILES



*كل قاعده بيانات يجب ان تحتوي علي 1 PROFILE على الاقل
وهناك PROFILE يتم إنشاءه تلقائيا عند إنشاء الDATABASE
واسمه DEFAULT .

* أي مستخدم جديد ننشئه ولم نحدد له الPROFILE فسوف
يصبح ال DEFAULT تابعا له .

* يمكننا إنشاء اى عدد من الPROFILES وتحديد مواصفاتها كما نريد
ولانشاء PROFILE جديد :-


CREATE PROFILE NEW_PROFILE LIMIT

FAILED_LOGIN_ATTEMPTS 10

SESSIONS_PER_USER 2 

وهكذا تقوم بتحديد الخاصيه التى تريد اضافتها في هذا البروفايل الجديد



* يمكنك تعديل خصائص اي PROFILE .

* لتغيير الPROFILE للمستخدم قم بتنفيذ الكود التالي :-


ALTER USER NEW_USER PROFILE NEW_PROFILE



ثانيا :

PASSWOED EXPIRE

اي ان المستخدم الذي انشناه وحددنا له هذه الجمله سيجبر علي تغيير
كلمه المرور عند اتصاله في قاعده البيانات اول مره
حيث ستظر له هذه الشاشه :-
pass_expire.JPG


ثالثا :
<ACCOUNT <LOCK>OR<UNLOCK

عند إنشاء اي مستخدم جديد فان الحساب يكون UNLOCK تلقائيا, لكن في بعض
الحالات قد نريد انشاء مستخدم ولكن لانريده ان يتصل بقاعده البيانات حاليا لاى سبب
من الاسباب ...لذلك نقوم بتقفيل حسابه .

لإعاده فتح حساب المستخدم :-


ALTER USER <USER_NAME> ACCOUNT UNLOCK



* يجب ان تكون لديك صلاحيه DBA لتنفيذ الاوامر السابقه

والسلام عليكم

عمر باعقيل
كندا - مونتريال
[email protected]

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

السلام عليكم ورحمة الله وبركاته

بعد ان عرفنا كيفيه انشاء USER و ROLE ووضع (PRIVILEGE(S او (ROLE(S داخل الROLE .

الان سنقوم بعمل مثالي تطبيقي علي ماتعلمناه وسيكون تطبيقنا علي المستخدم SCOTT وجداوله EMP و DEPT فقط .

< من ليس لديه هذا المستخدم في قاعدة البيانات التى بحوزته , فهناك طريقة سهله جدا لأنشاء هذا المستخدم SCOTT
مع الجداول والبيانات الخاصه بها وذلك بالبحث عن ملف اسمه SCOTT.SQL في الهارديسك ومن ثم أخذ نسخه من هذا الملف وضعها
في ال :c ثم نقم بتشغيل الSQL Plus من خلال المستخدم SYSTEM او اي مستخدم له صلاحيه DBA و ثم نقم بتنفيذ الكود التالي C:SCOTT.SQL@ وهكذا سيتم انشاء SCOTT مع جداوله بالكامل >

نقوم بتشغيل الSQL Plus والاتصال بالمستخدم SYSTEM او اي مستخدم له صلاحيه DBA وذلك
لمنح SCOTT صلاحيه DBA " لكي يستطيع انشاء USERS و ROLES .....


GRANT DBA TO SCOTT;



الان نتصل من جديد بقاعدة البيانات " SQL Plus " بالمستخدم SCOTT لنبدء العمل الفعلي :-

1- سنقوم بانشاء عدد 4 مستخدمين جدد كالتالي :-


CREATE USER BOSS IDENTIFIED BY BOSS;

هذا المستخدم له الصلاحيات الكامله "حذف  تعديل وادخال واستعلام "علي جداول

SCOTT .



CREATE USER ADMIN IDENTIFIED BY ADMIN;

وهذا المستخدم ستكون له صلاحيات تعديل وادخال واستعلام علي جداول 

SCOTT .



CREATE USER INSERT_DATA IDENTIFIED BY INSERT_DATA;

وهذا المستخدم ستكون له صلاحيات ادخال واستعلام بيانات علي جداول 

SCOTT .



CREATE USER SELECT_DATA IDENTIFIED BY SELECT_DATA;

وهذا المستخدم ستكون له صلاحيه الاستعلام فقط علي بيانات جداول

SCOTT .



2- الان ننشئ الROLES اللازمه


CREATE ROLE BOSS_ROLE;



CREATE ROLE ADMIN_ROLE;



CREATE ROLE INSERT_ROLE;



CREATE ROLE SELECT_ROLE;



3- الان نقوم بوضع ال(PRIVILEGE(S او (ROLE(S اللازمه داخل الROLES الجديده :-


" BOSS_ROLE "



GRANT CREATE SESSION TO  BOSS_ROLE;



GRANT ALL ON EMP TO BOSS_ROLE;



GRANT ALL ON DEPT TO BOSS_ROLE;



-----------------

" ADMIN_ROLE "



GRANT CREATE SESSION TO  ADMIN_ROLE;





GRANT SELECT ON EMP TO ADMIN_ROLE;



GRANT INSERT ON  EMP TO ADMIN_ROLE;



GRANT UPDATE ON EMP TO ADMIN_ROLE;





GRANT SELECT ON DEPT TO ADMIN_ROLE;



GRANT INSERT ON  DEPT TO ADMIN_ROLE;



GRANT UPDATE ON DEPT TO ADMIN_ROLE;



-----------------

" INSERT_ROLE "



GRANT CREATE SESSION TO  INSERT_ROLE;





GRANT SELECT ON EMP TO INSERT_ROLE;



GRANT INSERT ON  EMP TO INSERT_ROLE;





GRANT SELECT ON DEPT TO INSERT_ROLE;



GRANT INSERT ON  DEPT TO INSERT_ROLE;



-----------------

" SELECT_ROLE "



GRANT CREATE SESSION TO  SELECT_ROLE;



GRANT SELECT ON EMP TO SELECT_ROLE;



GRANT SELECT ON DEPT TO SELECT_ROLE;



4- الان سنقوم بمنح هذه الROLES للUSERS :-


GRANT BOSS_ROLE TO BOSS WITH ADMIN OPTION;



GRANT ADMIN_ROLE TO ADMIN;



GRANT INSERT_ROLE TO INSERT_DATA;



GRANT SELECT_ROLE TO SELECT_DATA;



الان يستطيع كل USER من استخدام صلاحياته علي جدول EMP و DEPT
ولكن يجب عليه ان يحدد اسم مالك الجدول SCOTT مع اسم الجدول كالتالي :-


SELECT * FROM SCOTT.EMP;


5- سنتقوم بعمل PUBLIC SYNONYM للجداول لكي يستطيع الUSERS
استخدامها بدون وضع اسم SCOTT قبل اسم الجدول كالتالي :-


CREATE PUBLIC SYNONYM EMP FOR EMP;


CREATE PUBLIC SYNONYM DEPT FOR DEPT;



الان نقوم بالاتصال بكل USER ونقوم بتجربه الصلاحيات المخوله له وذلك في برنامج ال SQL Plus وسوف نكمل
ان شاء الله عمل ذلك في النمودج الذي سوف يتم تصميمه علي جدول EMP و DEPT .

عمر باعقيل
كندا - مونتريال
[email protected]

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

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
والحمد لله رب العالمين
والصلاة والسلام على الحبيب المصطفى

والى الامام دوما

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

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

  • بعد 2 أسابيع...

بصراحة انا دايما أشتغل الجزء الخاص بالأمن والصلاحيات على أساس جداول وجلوبال فاريابلز وبروفايل لكل يوزر بس احتمال البروجكت ده أجرب انى اعملها بطريقتك ؤولز وصلاحيات وشغل DBA
شكرا جزيلا ;)

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

  • بعد 4 أسابيع...
  • بعد 2 أسابيع...
  • بعد 3 أسابيع...

كلل الله مسعاك و جهدك بالخير و البركة اخي عمر باعقيل
دائما نحن تلاميذ عندك ،،
اعجز عن اصفك ،، و كما عرفتك لا تحب المزايدة و المدح لكن اقولها و بكل صراحة و امانة علمية .. العالم العربي بحاجة شديدة لك و لامثالك .

بارك الله فيك و جزاك الله خيرا ،، و دمت في نشر العلم ،،

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

  • بعد 1 شهر...

مجهود رائع يا أخ عمر
بس أنا لي تعليق بسيط عن تجربه في المشاريع الكبيره بتكون الصيانه صعبه جدا بهذا الإسلوب خاصة لو كنت محتاج أن مستخدم البرنامج هو اللي يتحكم في الصلاحيات في الحاله دي لازم نرجع لأسلوب تصميم جداول خاصة للسرية لكن ان كل مستخدم جديد أخلق له user على قاعدة البيانات هتكون مشكله متكرره كل يوم
بس بصراحه هي قوية في السرية

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

  • بعد 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.

جاري التحميل



×
×
  • أضف...

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

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