תוכן שיווקי

בואו להכיר יכולת חדשה ממיקרוסופט: SQL Server 2016 Always Encrypted

10/04/2016 07:59
מיקרוסופט

כתב: דני רביד, קבוצת וראסיטי

SQL Server 2016 Always Encrypted היא אחת היכולות המלהיבות ביותר שנוספה בגרסה החדשה של SQL Server.

בימים אלה בהם פרטיות המידע ואבטחת המידע הם הנושאים החשובים ביותר להרבה מאוד לקוחות, נותנת מיקרוסופט (Microsoft) כלי חשוב מאוד ביכולת הלקוחות לתקוף את הנושא בצורה חדשנית וקלה ליישום.

הרעיון הבסיסי הוא הצפנת נתונים בבסיס הנתונים בצורה שקופה למשתמש וליישום, ולא פחות חשוב הפרדת תפקידים מוחלטת (Separation of duties) כלומר SQL Server System Administrator (SA) אינו יכול לצפות בנתונים מוצפנים, ויש לו חשיבות עצומה כאשר לקוחות וארגונים שוקלים מעבר לענן.

בכדי ללמוד כיצד SQL Server 2016 יכולה להגן על העסק שלך, לחץ כאן.

הרעיון הבסיסי מוצג בתרשים הבא :

בפעם הראשונה מציגה מיקרוסופט הצפנה ופענוח אוטומטיים בשכבת הלקוח (Client). יצוין כי ל-Always Encrypted יש שלושה מרכיבים בסיסיים:
● הנתונים מוצפנים בבסיס הנתונים בעזרת מפתח סימטרי שמוצפן על ידי מפתח א-סימטרי. רק החלק הציבורי (Public key) מאוחסן גם בבסיס הנתונים.
● מפתח הפענוח (Private Key) מאוחסן אך ורק באחד משלושת המקומות הבאים:
• Windows Key Store
• Azure Key Vault
• Hardware Security Module(HSM)
כדי לקבל את מפתח הפיענוח יש לקבל הרשאה למשתמש או ליישום.
● היישום משתמש ב-NET Framework 4.6. ומעלה.

כל תהליכי ההצפנה והפענוח מתבצעים בשכבת הלקוח (Client) – פרט למקרים שבהם צריך לבצע הצפנה בבסיס הנתונים בפקודות TSQL ואז יש שימוש ב-Public key.

מרגע שהיישום ביקש להשתמש בהצפנה, כל עמודה שמוגדרת להצפנה מוצפנת או מפוענחת על ידי ה-Driver בצורה שקופה ליישום, במידה וליישום/משתמש יש הרשאה מתאימה לגשת ל-Keystore ולמפתח הרלוונטי. במידה ולמתשמש/יישום אין הרשאה כזו, יוצגו העמודות בצורתן המוצפנת. חשוב להדגיש שבשום שלב הנתונים אינם מופיעים מפוענחים בבסיס הנתונים, הן בזיכרון והן פיזית בבסיס הנתונים.

הפיכת עמודות למוצפנות הוא תהליך פשוט יחסית שיכול  להתבצע דרך Wizard ב-SSMS או בפקודות TSQL. בואו נדגים זאת דרך SSMS. לצורך ההדגמה נגדיר את הטבלה הבאה :

נכניס לטבלה שלוש שורות :

ב-SSMS  נבחר:

ואז:

נבחר Next:

במסך שלפנינו נבחר שלוש עמודות להצפנה המייצגות כרטיס אשראי, מספר טלפון וכתובת דוא"ל של הלקוח. מפתח הצפנה חדש יווצר באופן אוטומטי (מופיע כ-New). בנוסף נצטרך לבחור בין שתי שיטות הצפנה:
● Deterministic – ערכים זהים יוצפנו לערך מוצפן זהה. היתרון: ניתן להשתמש באינדקסים ובהשוואות (=,><). החסרון: חשוף להתקפות ניתוח תדירות, מומלץ לערכים שהם מראש ייחודיים (Unique).
● Randomized – ערכים זהים יוצפנו תמיד לערך שונה. היתרון: אבטחה חזקה. החסרון: ניתן לשימוש רק בהשוואות (=) בלבד. אין שימוש באינדקסים, לא מומלץ למקרים בהם יש חיפושי טווח.

במקרה שלפנינו בחרתי ב-Randomized עבור כולם.

במסך זה יש לבחור היכן יאוחסן ה-Master key החדש שיווצר. בחרתי לאחסן ב-Azure Key Vault. בחרתי ב-Subscription שאני מעוניין בו וב-Azure Key Vault שהקמתי שנקרא "VeracityKeyVault" (שימו לב שיש ליצור מראש את ה-AKV. בנוסף יש לתת הרשאות מתאימות למשתמש ליצירת קריאת והצפנת מפתחות. חלק זה אינו מפורט במאמר – נא לבדוק כאן.

ואז :

שימו לב שברגע שתלחצו Next ו-Finish במסך הבא, הטבלה שבחרתם תנעל לעדכונים, תוגדר מחדש ותוצפן. קחו זאת בחשבון. אם ברצונכם לשמור ולהריץ במועד נוח יותר, תוכלו לשמור כסקריפט PS ולהריץ במועד אחר.

לאחר סיום התהליך :

כך תראה הגדרת הטבלה לאחר ההצפנה:

משתמש שאינו מורשה יראה את הנתונים כך :

כאשר מפתחים יישום חדש כדי לפענח באופן אוטומטי, יש לתת למשתמש הרשאות למפתח ב-Store, ולהוסיף את ההגדרה ל-Connection String . יש להסתכל פה.

ב-SSMS יש להגדיר בחלון ההתחברות לשרת ב-"Additional Connection Parameters"

בכדי ללמוד כיצד SQL Server 2016 יכולה להגן על פרטיות העסק שלך, לחץ כאן.

אירועים קרובים