الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

شرح موضوع Oracle Database Security

Featured Replies

بتاريخ:

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

أقدم لكم اليوم شرح مبسط وسهل لموضوع Oracle Database Security اتمنى من الجميع الأستفادة منه .

الجزء الأول : Users

* عمل مستخدم جديد :-
لعمل مستخدم جديد في قاعدة البيانات يجب ان يكون متطابق مع الشكل الأتي

CREATE USER user_name IDENTIFIED BY password
[DEFAULT TABLESPACE def_tabspace]
[TEMPORARY TABLESPACE temp_tabspace];


حيث أن :
user_name : اسم المستخدم في قاعدة البيانات
password : كلمة المرور للمستخدم في قاعدة البيانات
def_tabspace : تحديد tablespace الأفتراضي لهذا المستخدم وأذا لم يتم تحديده يكون tablespace الأفتراضي هو SYSTEM
temp_tabspace : تحديد tablespaceالأفتراضي لإجراء عمليات الترتيب وأذا لم يتم تحديده يكون tablespace الأفتراضي هو SYSTEM

اليك المثال الأتي ليتضح الأمر أكثر

CONNECT system/manager
CREATE USER scott IDENTIFIED BY tiger;


يقوم هذا المثال بعمل مستخدم اسمه scott وكلمة المرور tiger و tablespace الافتراضي هو SYSTEM و temporary tablesapce هو SYSTEM

واليك المثال التالي أيضاً

CREATE USER omar IDENTIFIED BY riyati
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;


يقوم المثال بعمل مستخدم اسمه omar وكلمة المرور هي riyati وtablespace الأفتراضي هو USERS و temporary tablespace هو TEMP

والآن اذا اردت ان يقوم هذا المستخدم الاتصال بقاعدة البيانات يجب ان يكون لديه هذه الصلاحية (create session) والتي يقوم المالك لهذا المستخدم ، واليك ما يلي :-

GRANT CREATE SESSION TO tiger;


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

* تغيير كلمة المرور للمستخدم:-
لتغيير كلمة المرور للمستخدم لزيادة الsecurity هنا طريقتين لذالك :-
1- الطريقة الأولى

ALTER USER scott IDENTIFIED BY lion;


2- الطريقة الثانية

CONNECT tiger/scott
PASSWORD
Changing password for scott
Old password: ******
New password: ******
Retype new password: ******
Password changed


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

* حذف المستخدم :-
لحذف المستخدم يجب أن يكون لديك الصلاحية (drop user) واليك المثال الأتي :-

CONNECT system/manager
DROP USER tiger;


ولحذف المستخدم مع الكئانات التي يحويها مثل الجداول يجب أضافة كلمة cascade .
-----------------------------------------------------------------------------------------------------
بهذا يكون الجزء الأول قد انتهت والموضوع مفتوح للنقاش .
وجزاكم الله خيراً

بتاريخ:



استمر الاخ omar-alreyati ودوماً للإمام

بتاريخ:

ويمكننا عمل link to this user by specific profile
عبارة عن مجموعة من السماحيات لهذا المستخدم مجمعة مع بعضها وعند ربط المستخدم بها بتمتع بكل هذه السماحيات


Link user by specific Profile
1- Create new profile
------------------------------------------------------
CREATE PROFILE sis_profile LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
CONNECT_TIME UNLIMITED
IDLE_TIME UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
COMPOSITE_LIMIT UNLIMITED
PRIVATE_SGA UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL
/

2- Alter that user (hr,scott,…..) to be on that profile
EX__
-----------------------------------------
CREATE USER ezz
IDENTIFIED BY sis
DEFAULT TABLESPACE sistbs
TEMPORARY TABLESPACE sistmp
grant create,delete,update,inser,... to ezz
grant .......
grant .......
PROFILE sis_profile
ACCOUNT UNLOCK
/

  • بعد 3 أسابيع...
بتاريخ:
  • كاتب الموضوع

الجزء الثاني : System Privileges
System Privilege : هو السماح للمستخدم بإنجاز حدث معين على قاعدة البيانات .

CREATE SESSION 
صلاحية الإتصال بقاعدة البيانات 

CREATE SEQUENCE 
صلاحية بناء متسلسل

CREATE SYNONYM 
صلاحية بناء مرادف

CREATE TABLE 
صلاحية بناء جدول

CREATE ANY TABLE 
صلاحية بناء جدول في أي سيكما

DROP TABLE 
صلاحية حذف جدول

DROP ANY TABLE 
صلاحية حذف جدول في أي سيكما

CREATE PROCEDURE 
صلاحية بناء بروسيجر

EXECUTE ANY PROCEDURE 
صلاحية تنفيذ بروسيجر في أي سيكما 

CREATE USER 
صلاحية بناء مستخدم 

DROP USER 
صلاحية حذف مستخدم

CREATE VIEW 
صلاحية بناء منظر


هنا تم عرض مجموعة من System Privilege ووظيفتها ولمعرفة جميع System Privilege قم بعمل هذا الاستعلام

select name from system_privilege_map



الآن دعنا نبدأ بالعملي
* منح صلاحيات system privilege لمستخدم معين:-

GRANT CREATE SESSION, CREATE USER, CREATE TABLE TO scott;


يقوم هذا المثال بإعطاء المستخدم scott صلاحيات (CREATE SESSION و CREATE USER و CREATE TABLE )
ومن الممكن إضافة جملة WITH ADMIN OPTION ليتمكن هذا المستخدم من إعطاء هذه الصلاحيات لمستخدمين آخريين (يمكن منح مجموعة من الصلاحيات في نفس الأمر بوضع علامة فاصلة , )

GRANT EXECUTE ANY PROCEDURE TO hr WITH ADMIN OPTION


هنا تم منح المستخدم hr صلاحية (EXECUTE ANY PROCEDURE ) مع إضافة خاصية القدرة على منح هذه الصلاحية لأي مستخدم آخر، لذا فيمكن للمستخدم hr منح صلاحية (EXECUTE ANY PROCEDURE ) للمستخدم scott وكما يلي :-

CONNECT hr/hr
GRANT EXECUTE ANY PROCEDURE TO scott;


ولأعطاء جميع المستخدمين صلاحية معينة قم فإضافة الكلمة PUBLIC وكما يلي

CONNECT system/manager
GRANT EXECUTE ANY PROCEDURE TO PUBLIC;



* التأكد من System Privileges لمن تم منحها
ربما يريد البعض معرفة هذه الصلاحية لمن تم منحها أو إعطاءها ويتم ذلك بإستخدام user_sys_privs والذي يتكون من ثلاث أعمده هي :
username : إسم المستخدم
privilege : إسم الصلاحية
admin_option : هل لديه خاصية admin option أم لا

CONNECT scott/tiger
SELECT *
FROM user_sys_privs; USERNAME               PRIVILEGE                        ADM
---------------------- -------------------------------- ---
PUBLIC                 EXECUTE ANY PROCEDURE             NO
TIGER                  CREATE SESSION                    NO
TIGER                 CREATE TABLE                      NO
TIGER                  CREATE USER                       NO
TIGER                  EXECUTE ANY PROCEDURE            YES


نلاحظ هنا أن هذا الإستعلام قد أعطنا صلاحيات المستخدم SCOTT

دعنا هذا المثال ليتضح الأمر أكثر :

CONNECT SCOTT/TIGER
CREATE USER omar IDENTIFIED BY riyati;
User created.
************************************************
SQL> DROP USER omar;
DROP USER omar
*
ERROR at line 1:
ORA-01031: insufficient privileges


هذا المثال يتكون من مرحلتين:
المرحلة الأولى : قام المستخدم scott ببناء المستخدم omar وتمت العملية دون مشاكل لأن لديه صلاحية (CREATE USER)
المرحلة الثانية : قام المستخدم scott بحذف المستخدم omar ولم تنجح العملية لأنه ليس لديه صلاحية (DROP USER ) وظهر الرسالة ORA-01031: insufficient privileges

* حذف الصلاحية من المستخدم:
الآن لو أراد احدكم حذف صلاحية معينة من مستخدم معين كيف يتم ذلك

CONNECT system/manager
REVOKE CREATE TABLE FROM scott;


هنا إستخدمنا الأمر REVOKE لحذف صلاحية CREATE TABLE من المستخدم scott
والآن عند الرجوع الى صلاحيات المستخدم scott يجب أن نجد صلاحية CREATE TABLE قد ألغيت وكما في الشكل الأتي

CONNECT steve/button

SELECT * FROM user_sys_privs USERNAME               PRIVILEGE                        ADM
---------------------- -------------------------------- ---
PUBLIC                 EXECUTE ANY PROCEDURE             NO
STEVE                  CREATE SESSION                    NO
STEVE                  CREATE TABLE                      NO
STEVE                  EXECUTE ANY PROCEDURE            YES



وهكذا نكون قد أنتهينا من الجزء الثاني بحمد الله ، أن أصابت فمن الله وإن اخطأت فمن نفسي والشيطان

ونترك الموضوع للنقاش

  • بعد 7 شهور...
بتاريخ:

شكرا لك اخى الكريم على وضعك هذا الموضوع الرائع وننتظر الافضل دائما معك

  • بعد 1 شهر...
بتاريخ:

جزاك الله كل خير
و بارك الله فيك
و دائما فى تقدم ان شاء الله

  • بعد 1 شهر...
بتاريخ:

شكرا ولكن كيف يزيد نغيير كلمة المرور من الsecurity?

  • بعد 1 شهر...
بتاريخ:

جزاك الله كل خير
و بارك الله فيك
و دائما فى تقدم ان شاء الله

  • بعد 3 شهور...
بتاريخ:

الف شكر لك على الدرس الرائع و توضح النقاط بشكل جيد


تحيتي لك

تم تعديل بواسطة إسكادا

  • بعد 2 أسابيع...
بتاريخ:

السلام عليكم ورحمة الله وبركاته
موضوع ممتاز
لكن يوجد ما يسمى ب oracle sql injection وهو نوع من الهاكر قادر على مهاجمه قواعد البيانات اذا لم يؤخذ فى الاعتبار كيفيه الحمايه منها
وهذه هى نقطه بحثى ف الماجستير ، ياريت لو حد يتقن هذا الموضوع ممكن يساعدنى فى الموضوع دا

  • بعد 4 شهور...
بتاريخ:

بارك الله فيك

ولكن لو حبيت أطلع رسالة برقم الايرور ORA-01031: insufficient privileges

  • بعد 1 شهر...
بتاريخ:

مشكووووووووور

  • بعد 1 شهر...
بتاريخ:

موضوع كويس
بارك الله فيك

  • بعد 2 شهور...
بتاريخ:

موضوع مبسط ورائع
أشكر الاخ الذي قام بوضعه لبساطته
وفقكم الله
http://securedb.blogspot.com

محمد

بتاريخ:

سلمت يداك وفي انتظار المزيد وبالفعل أسلوبك رائع وجذاب في طرح الموضوع

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.