السبت، 4 يناير 2014

اوركل 12c أكثر 17 مميزات هامة للمطورين 2/17

اخفي بياناتك الهامة من عيون المتطفلين
                                                              تقنية جديدة في أوركل 12c
تزداد أهمية البيانات يوماً بعد يوم، وأصبح أمن المعلومات والمحافظة على البيانات هاجساً يؤرق المطورين وخاصة بعد تزايد استخدام الشبكة العنكبوتية (الانترنت).



وأنت واحد من أولئك الأشخاص الذين تقع على عاتقهم جزء كبير من هذه المسئولية، لتوصيل الفكرة من هذه التدوينه أعددت هذا السيناريو، إفترض انك تعمل في تطوير نظام بنكي وبتالي فأنت بحاجة الى إخفاء بعض البيانات الحساسة عن أعين مستخدمي النظام وخاصة المتطفلين مثل آخر عملية سحب من الرصيد, وكذلك Social Security Numbers (SSN)  وأشياء كثيرة آخرى.
لتتمكن من إخفاء بعض الأعمدة من الجدول في الطريقة التقليدية القديمة تحتاج أولاً ان يكونوا مستخدمي النظام Real Users  مستخدمين حقيقين على مستوى قاعدة البيانات. ولتوصيل الفكرة بشكل مبسط تخيل معي انه يوجد جدول منشئ فعلياً على قاعدة البيانات اسمه Accounts_Tb
CREATE TABLE account_tb
    (
    Account_Id                            NUMBER(11,0),
    Account_name                          VARCHAR2(80),
    email                                 VARCHAR2(50),
    SSN                                   NUMBER(15,0),
    Last_dept_Dt                          DATE
    )

ونريد إخفاء بيانات ال SSN, Last_dept_Dt Columns , أولاً نقوم بإنشاء , View  من هذا الTable على النحو التالي:
CREATE VIEW account_vw
AS
SELECT A.Account_Id, A.Account_name, A.email
FROM   account_tb A ;

ثم نقوم بعمل CREATE public synonym لهذه الView ولكن اسمها يكون عبارة عن اسم الجدول الرئيسي المنشأ منه الView  وهو account_tb
CREATE public synonym account_tb FOR  SCHEMAX.account_vw

الان نقوم بمنح مستخدمي نظام صلاحية على هذه ال synonym والتي هي بدورها اسم الجدول الخاص بك كما هو موضح سابقاً.
grant select ON account_tb TO USERX;
grant select ON account_tb TO ROLEX;

وبتالي في حال الاستعلام من قبل USER ال USERXأو من قبل المستخدمين الذين معهم صلاحيات على ROLE ال ROLEX فإن النتيجة تكون كتالي:
SELECT *
FROM  account_tb;
الحقول/الاعمدة التي سوف تظهر للمستخدم
Account_Id| A.Account_name| A.email
تمام، تم إخفاء البيانات الحساسة من أعين متطفلي النظام. لكن ماذا لو أردنا أن نقوم بعمليات DML (Data Manipulation Language)
[Insert, Update, Delete] نحتاج الى تعديل في الview  بإضافة INSTEAD OF Trigger   يمكنك مراجعة ذلك ان لم يكن عندك معلومات كافية عن ذلك لأنه ليس موضوع مقالنا.
لكن مهلاً، يبدو ان ذلك مرهقاً لك كمبرمج قواعد بيانات، إذاً ما الحل في إخفاء البيانات الحساسة ؟
لا تقلق عزيزي المطور يوجد ميزة جديدة في Oracle 12c  للقيام بهذه المهمة دون حاجة الى الجهد البرمجي وذلك كتالي:
مرحلة انشاء الTable
CREATE TABLE account_tb
    (
    Account_Id                            NUMBER(11,0),
    Account_name                          VARCHAR2(80),
    email                                 VARCHAR2(50) invisible,
    SSN                                   NUMBER(15,0) invisible,
    Last_dept_Dt                          DATE
       )



وبتالي عند عمل Select   فإن الاعمدة/ الحقول المخفية عن أعين مستخدمي النظام لا تظهر، ووبهذا تكون قد أخفيت بياتك الحساسة دون أدني جهد منك.
SELECT *
FROM  account_tb;
الحقول/الاعمدة التي سوف تظهر للمستخدم
Account_Id| A.Account_name| A.email

ادخال البيانات:
insert into account_tb(1,'test','test@palsoft.blogspot.com');


وصل بنا قطار العلم ان نهاية هذه المحطة، نراكم في المحطة التالية وهي Default Values ان كان لنا في العمر بقية. الى ذلك الوقت دمتم بحفظ الله ورعايته.

هناك تعليق واحد:

غير معرف يقول...

مشكور لمجهودك
بارك الله فيك