الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح موضوع Oracle Database Security

بدأه omar_alreyati في 16 يوليو 2008 · 4 رد · 1,988 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

تحية طيبة للجميع ...............

أقدم لكم اليوم شرح مبسط وسهل لموضوع 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 .

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

بهذا يكون الجزء الأول قد انتهت والموضوع مفتوح للنقاش .

وجزاكم الله خيراً

#2

ألف شكر لك أخى على هذا الجهد الطيب

بارك الله فى علمك

#3

شكراً أخي الكريم على جهودك ..

ولكن لي طلب صغير : أرجوك أن تراجع المواضيع المثبتة في القسم حتى لا يعاد شرح مواضيع سابقة للفائدة العامة ....

#4

شكراً لكم يا أخ فيصل لكن أنتظر ستجد الجديد أن شاء الله

#5

الجزء الثاني : 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 scott/tiger
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

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

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

تم تعديل هذه المشاركة بواسطة omar_alreyati في 23 يوليو 2008 في 09:00

مواضيع مشابهة