הגדרת מסכת נתונים דינמית

הושלם

מסכת נתונים דינמית מספקת דרך להגביל חשיפה של נתונים רגישים מבלי לשנות את קוד האפליקציה או את הנתונים הבסיסיים. כאשר משתמשים שואלים עמודות עם מסכה, SQL Server מחזיר ערכים מוסתרים בהתבסס על כללי ההסתרה שהגדרת. הנתונים בפועל נשארים ללא שינוי במסד הנתונים, אך משתמשים לא מורשים רואים ערכים מוסתרים בתוצאות השאילתות.

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

הבנת פונקציות המסכה

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

טבלה המציגה את ארבע פונקציות הסוואה הדינמית עם השוואות לפני ואחרי: ברירת מחדל מציגה XXXX, דואר אלקטרוני מציג jXXX@XXXX.com, אקראי מציג מספרים אקראיים, וחלקית מראה 206-XXX-XX89.

הפונקציה ברירת המחדל מחליפה את כל הערך במחרוזת קבועה. לגבי מחרוזות, רואים "XXXX" (או פחות X תווים לעמודות קצרות יותר). המספרים מוצגים כאפס, והתאריכים מציגים "01-01-1900". תשתמש בזה כשאתה רוצה טשטוש מוחלט.

פונקציית הדוא"ל חושפת רק את התו הראשון של כתובת האימייל, מחליפה את האמצע ב-"XXX" ושומרת על סיומת הדומיין. לכן "john.smith@contoso.com" מופיע כ-"jXXX@XXXX.com". הנתונים עדיין נראים כמו אימייל תקף, אבל הכתובת האמיתית נשארת מוסתרת.

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

הפונקציה החלקית נותנת לך שליטה מדויקת. אתה מציין כמה דמויות להראות בהתחלה, אילו דמויות ריפוד להשתמש באמצע, וכמה להראות בסוף. לדוגמה, מספר טלפון עשוי להופיע כ"206-XXX-XX89".

הגדרת מסכות עמודה

אתה מיישם מסכות כשאתה יוצר טבלאות או על ידי שינוי עמודות קיימות. הפסקה MASKED WITH מגדירה איזו פונקציה להשתמש.

הנה טבלה עם כמה עמודות עם מסכות:

CREATE TABLE Customers (
    CustomerID int PRIMARY KEY,
    FirstName varchar(50),
    LastName varchar(50),
    Email varchar(100) MASKED WITH (FUNCTION = 'email()'),
    Phone varchar(20) MASKED WITH (FUNCTION = 'partial(3, "-XXX-XX", 2)'),
    CreditCardNumber varchar(19) MASKED WITH (FUNCTION = 'partial(0, "XXXX-XXXX-XXXX-", 4)'),
    Income decimal(18,2) MASKED WITH (FUNCTION = 'random(10000, 100000)'),
    SSN char(11) MASKED WITH (FUNCTION = 'default()')
);

שימו לב שכל עמודה משתמשת בפונקציית מסכה שונה בהתאם למה שמתאים לנתונים האלה:

  • Email משתמש במסכת דואר אלקטרוני לשימור פורמט הדואר
  • Phone מציג את שלוש הספרות הראשונות ואת שתי הספרות האחרונות
  • CreditCardNumber חושף רק את ארבע הספרות האחרונות
  • Income מציג ערך אקראי בין 10,000 ל-100,000
  • SSN משתמש בהסתרה ברירת מחדל להסתרה מלאה

כדי להוסיף מסכה לעמודה קיימת, השתמש ALTER COLUMNב:

ALTER TABLE Customers
ALTER COLUMN DateOfBirth ADD MASKED WITH (FUNCTION = 'default()');

אפשר להסיר את המסכה מהעמודה כשהיא כבר לא נחוצה:

ALTER TABLE Customers
ALTER COLUMN DateOfBirth DROP MASKED;

שליטה בנראות המסכה עם הרשאות

כברירת מחדל, המשתמשים רואים נתונים מוסתרים אלא אם כן יש להם הרשאות מוגברות. ההרשאהUNMASK שולטת מי רואה את הערכים האמיתיים שמאחורי המסכות.

כדי לאפשר למשתמש לראות את כל הנתונים הלא מוסתרים במסד הנתונים:

GRANT UNMASK TO DataAnalyst;

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

החל מ-SQL Server 2022, תוכל להעניק UNMASK ברמת הסכימה, הטבלה או אפילו העמודה:

-- Grant unmask on a specific schema
GRANT UNMASK ON SCHEMA::Sales TO SalesManager;

-- Grant unmask on a specific table
GRANT UNMASK ON Customers TO CustomerService;

-- Grant unmask on a specific column
GRANT UNMASK ON Customers(Phone) TO TelemarketingTeam;

גישה מפורטת זו עוזרת לך לעקוב אחרי עקרון ההרשאה המינימלית—המשתמשים רואים רק את הנתונים הרגישים שהם באמת צריכים לעבודה שלהם.

חשוב

משתמשים עם SELECT הרשאה בטבלה בשילוב עם ALTER הרשאה יכולים לעקוף את המסכה על ידי שינוי הגדרת העמודה. נהל בקפידה הרשאות כדי למנוע ממשתמשים להסיר מסכות.

יישום אסטרטגיות הסתרה

כשאתה מתכנן את אסטרטגיית המסכה שלך, חשוב על איך תפקידי משתמשים שונים מתקשרים עם הנתונים שלך. אילו עמודות מכילות מידע רגיש? מי באמת צריך לראות את הערכים האמיתיים?

דפוס נפוץ הוא יצירת תפקידי מסד נתונים לרמות גישה שונות:

-- Role for users who see masked data
CREATE ROLE MaskedDataViewers;
GRANT SELECT ON Customers TO MaskedDataViewers;

-- Role for users who see unmasked data
CREATE ROLE UnmaskedDataViewers;
GRANT SELECT ON Customers TO UnmaskedDataViewers;
GRANT UNMASK ON Customers TO UnmaskedDataViewers;

-- Add users to appropriate roles
ALTER ROLE MaskedDataViewers ADD MEMBER SupportStaff;
ALTER ROLE UnmaskedDataViewers ADD MEMBER ComplianceOfficer;

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

שקול את התרחישים שבהם מסכה היא שימושית:

  • סביבות פיתוח ובדיקות שבהן צוותים זקוקים למבני נתונים ריאליים ללא מידע אמיתי על הלקוחות
  • אפליקציות שירות לקוחות שבהן צוות התמיכה צריך לאמת פרטים חלקיים על חשבון
  • תרחישי דיווח שבהם הנתונים המצטברים חשובים אך רשומות בודדות צריכות להישאר פרטיות
  • עמידה בביקורת שבה משתמשים מסוימים דורשים גישה מלאה בעוד שאחרים רואים מידע מוגבל

הערה

מסכת נתונים דינמית במסדי נתונים SQL ב-Microsoft Fabric פועלת באותה צורה כמו Azure SQL Database. אתה מגדיר מסכות באמצעות T-SQL דרך נקודת הקצה של אנליטיקת SQL.

המסכה מוסיפה שכבת הגנה חשובה, אבל אל תסתמך עליה רק עבור הנתונים הרגישים ביותר שלך. השתמש בו לצד הצפנה, אבטחת Row-Level וניהול הרשאות נכון להגנה מקיפה.