אבטחת מידע חסוי היא צורך בסיסי בחברות רבות. החל בהרשאות, וכלה בכלי הצפנה שונים, אנו מאפשרים את הגישה לאינפורמציה עבור המורשים בלבד.
עם זאת קיימים מקרים, נפוצים בעת פיתוח אפליקציה, בהם נדרש להעביר מידע רגיש היושב ב Production לגורמים שונים בארגון כגון מפתחים כדי שיוכלו לעבוד עליו.
Data Masking היא צורה בה אנו יכולים להחליף את הערכים הרגישים בטבלה (כמו מס' כרטיס האשראי) בערכים אחרים אשר נראים לגיטימיים לחלוטין אך למעשה מבוססים על אלגוריתם בו הם מוחלפים בנתונים אחרים. כך שהמידע הרגיש לא נחשף ובמקביל יוזרים שונים עדיין יכולים לעבוד עליו.
Data Masking In Practice
את ה Masking ניתן ליישם בשלוש דרכים :
1. קוד PLSQL עצמאי אשר מבצע את שינוי הערכים
2. כלים חיצוניים כגון www.datamasker.com
3. Supplied Oracle Data Masking Pack
Supplied Oracle Data Masking Pack
ניתן להשתמש ב Oracle Enterprise Manager על מנת להגדיר Masking בצורה פשוטה ונוחה – להלן הדגמה קצרה (צילומי המסך הבאים מתבססים על גרסת 11gR2)
ראשית נייצר טבלה, שימו לב לנתוניה המקוריים :
HR > CREATE TABLE hr.test_employees AS SELECT * FROM hr.employees ; Table created. HR > EXEC P('SELECT * FROM test_employees WHERE rownum <= 3') EMPLOYEE_ID : 198 FIRST_NAME : Donald LAST_NAME : OConnell EMAIL : DOCONNEL PHONE_NUMBER : 650.507.9833 HIRE_DATE : 21-JUN-07 JOB_ID : SH_CLERK SALARY : 2600 COMMISSION_PCT : MANAGER_ID : 124 DEPARTMENT_ID : 50 - - - - - - - - - - - - - - - EMPLOYEE_ID : 199 FIRST_NAME : Douglas LAST_NAME : Grant EMAIL : DGRANT PHONE_NUMBER : 650.507.9844 HIRE_DATE : 13-JAN-08 JOB_ID : SH_CLERK SALARY : 2600 COMMISSION_PCT : MANAGER_ID : 124 DEPARTMENT_ID : 50 - - - - - - - - - - - - - - - EMPLOYEE_ID : 200 FIRST_NAME : Jennifer LAST_NAME : Whalen EMAIL : JWHALEN PHONE_NUMBER : 515.123.4444 HIRE_DATE : 17-SEP-03 JOB_ID : AD_ASST SALARY : 4400 COMMISSION_PCT : MANAGER_ID : 101 DEPARTMENT_ID : 10 - - - - - - - - - - - - - - -
נתחבר ל OEM ונבחר באופציית ה Definition תחת קטגוריית ה Data Masking
בשלב הבא נייצר Data Masking Definition חדש
לאחר מכן נבחר את הטבלה ואת העמודות עליהן נרצה לעשות את ה Masking
בשלב האחרון – עבור כל אחת מהעמודות שבחרנו נגדיר את פורמט ה Mask
לדוגמא – עבור עמודת שכר נוכל לבחור את פורמט ה Mask הבא
כעת אם נביט בנתוני הטבלה לאחר השינוי נוכל לראות את ה Masking
/* Accroding the following Masking rules : Column Format DEPARTMENT_ID - Random Numbers MANAGER_ID - Preserve Original Data COMMISSION_PCT - Shuffle SALARY - Fixed Number 999 EMPLOYEE_ID - Null Value FIRST_NAME - Preserve Original Data PHONE_NUMBER - USA Phone Number LAST_NAME - Random Strings HIRE_DATE - Random Dates EMAIL - Substitute (hr.regions / region_name) JOB_ID - Substring (1,2) This will be the outcome */ HR > EXEC P('SELECT * FROM test_employees WHERE rownum <= 3') EMPLOYEE_ID : FIRST_NAME : Kevin LAST_NAME : aaaaaaaaaladt EMAIL : Americas PHONE_NUMBER : 7144530039 HIRE_DATE : 15-MAY-07 JOB_ID : SH SALARY : 999 COMMISSION_PCT : MANAGER_ID : 124 DEPARTMENT_ID : 2165 - - - - - - - - - - - - - - - EMPLOYEE_ID : FIRST_NAME : Randall LAST_NAME : aarulnkogkadg EMAIL : Asia PHONE_NUMBER : 9033323074 HIRE_DATE : 13-APR-03 JOB_ID : SH SALARY : 999 COMMISSION_PCT : MANAGER_ID : 122 DEPARTMENT_ID : 2165 - - - - - - - - - - - - - - - EMPLOYEE_ID : FIRST_NAME : Timothy LAST_NAME : aaaaaoxrqvaey EMAIL : Middle East and Africa PHONE_NUMBER : 4024740000 HIRE_DATE : 12-NOV-00 JOB_ID : SH SALARY : 999 COMMISSION_PCT : MANAGER_ID : 122 DEPARTMENT_ID : 2165