מילונים מותאמים אישית מאפשרים להתאים רשימה של מילים או ביטויים בצורה פשוטה אך יעילה. אפשר להשתמש במילון בהתאמה אישית כמזהה או כרשימת חריגים למזהים מובנים. אפשר גם להשתמש במילונים מותאמים אישית כדי להרחיב את היכולות של גלאי סוגי המידע המובנים, וכך להתאים אותם לממצאים נוספים.
בקטע הזה מוסבר איך ליצור מזהה מילון רגיל בהתאמה אישית מרשימת מילים.
המבנה של גלאי מותאם אישית של סוג מידע שמבוסס על מילון
כפי שמסוכם בסקירה כללית של ה-API, כדי ליצור מזהה מותאם אישית של סוג מידע מילוני, צריך להגדיר אובייקט CustomInfoType שמכיל את הפרטים הבאים:
- השם שרוצים לתת לגלאי סוגי המידע המותאמים אישית, בתוך אובייקט
InfoType. - ערך אופציונלי של
Likelihood. אם לא משמיטים את השדה הזה, התאמות לפריטים במילון יחזירו הסתברות ברירת מחדל שלVERY_LIKELY. - אופציונלי
DetectionRuleאובייקטים או כללים לזיהוי מילות הפעלה. הכללים האלה משנים את הסבירות לממצאים במרחק מסוים ממילות מפתח ספציפיות. מידע נוסף על כללים של מילות הפעלה ערך אופציונלי של
SensitivityScore. אם לא משמיטים את השדה הזה, התאמות לפריטים במילון יחזירו רמת רגישות של ברירת מחדלHIGH.ציוני הרגישות משמשים בפרופילים של נתונים. כשמבצעים פרופיל לנתונים, Sensitive Data Protection משתמש בציוני הרגישות של ה-infoTypes כדי לחשב את רמת הרגישות.
A
Dictionary, כמוWordListשמכיל רשימה של מילים לסריקה אוCloudStoragePathלקובץ טקסט יחיד שמכיל רשימה של מילים לסריקה, מופרדות בשורה חדשה.
אובייקט JSON של גלאי מותאם אישית של סוג מידע מילוני שכולל את כל הרכיבים האופציונליים נראה כך. קובץ ה-JSON הזה כולל נתיב לקובץ טקסט של מילון שמאוחסן ב-Cloud Storage. כדי לראות רשימת מילים מוטמעת, אפשר לעיין בקטע דוגמאות בהמשך המאמר.
{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_INFOTYPE_NAME"
},
"likelihood":"LIKELIHOOD_LEVEL",
"detectionRules":[
{
"hotwordRule":{
HOTWORD_RULE
}
},
...
],
"sensitivityScore":{
"score": "SENSITIVITY_SCORE"
},
"dictionary":
{
"cloudStoragePath":
{
"path": "gs://PATH_TO_TXT_FILE"
}
}
}
],
...
}
פרטים ספציפיים לגבי התאמה במילון
בהמשך מוסבר איך התכונה Sensitive Data Protection מתאימה מילים וביטויים במילון. הנקודות האלה רלוונטיות גם למילונים רגילים בהתאמה אישית וגם למילונים גדולים בהתאמה אישית:
- המילים במילון הן לא תלויות-רישיות. אם המילון שלכם כולל את
Abby, הוא יתאים ל-abby, ל-ABBY, ל-Abbyוכן הלאה. - כל התווים – במילונים או בתוכן שצריך לסרוק – מלבד אותיות, ספרות ותווים אלפביתיים אחרים שנכללים ב-Basic Multilingual Plane של Unicode, נחשבים לרווחים כשסורקים התאמות. אם המילון שלכם סורק את
Abby Abernathy, הוא יתאים ל-abby abernathy, ל-Abby, Abernathy, ל-Abby (ABERNATHY)וכן הלאה. - התווים שמקיפים התאמה כלשהי צריכים להיות מסוג שונה (אותיות או ספרות) מהתווים הסמוכים בתוך המילה. אם המילון שלכם סורק את
Abi, הוא יתאים לשלוש התווים הראשונים שלAbi904, אבל לא שלAbigail. - מילים במילון שמכילות תווים במישור הרב-לשוני המשני של תקן Unicode עשויות להניב ממצאים לא צפויים. דוגמאות לתווים כאלה: סמלי אמוג'י, סמלים מדעיים וכתבים היסטוריים.
ההגדרה של אותיות, ספרות ותווים אלפביתיים אחרים היא כדלקמן:
- אותיות: תווים עם קטגוריות כלליות
Lu,Ll,Lt,LmאוLoבמפרט Unicode - ספרות: תווים עם קטגוריה כללית
Ndבמפרט Unicode - תווים אלפביתיים אחרים: תווים עם קטגוריה כללית
Nlבמפרט Unicode או עם מאפיין תורםOther_Alphabeticכפי שמוגדר בתקן Unicode
דוגמאות
רשימת מילים פשוטה
נניח שיש לכם נתונים שכוללים את מספר החדר בבית החולים שבו המטופל קיבל טיפול במהלך הביקור. יכול להיות שמיקומים כאלה ייחשבו רגישים במערך נתונים מסוים, אבל הם לא ייקלטו על ידי הגלאים המובנים של 'הגנה על מידע אישי רגיש'.
החדרים שצוינו היו:
- "RM-Orange"
- "RM-Yellow"
- "RM-Green"
C#
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
דוגמת ה-JSON הבאה מגדירה מילון מותאם אישית שאפשר להשתמש בו כדי להסיר את הפרטים המזהים של מספרי חדרים מותאמים אישית.
קלט JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"Patient was seen in RM-YELLOW then transferred to rm green."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
}
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"dictionary":{
"wordList":{
"words":[
"RM-GREEN",
"RM-YELLOW",
"RM-ORANGE"
]
}
}
}
]
}
}
פלט JSON:
כששולחים את קלט ה-JSON בבקשת POST אל content:deidentify, מתקבלת תגובת ה-JSON הבאה:
{
"item":{
"value":"Patient was seen in [CUSTOM_ROOM_ID] then transferred to [CUSTOM_ROOM_ID]."
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"2",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
השירות Sensitive Data Protection זיהה בצורה נכונה את מספרי החדרים שצוינו בהודעה WordList של המילון המותאם אישית. שימו לב: המערכת תתאים פריטים גם אם האותיות לא זהות (case) וגם אם אין מקף (-), כמו בדוגמה השנייה: rm green.
רשימת החרגות
נניח שיש לכם נתוני יומן שכוללים מזהים של לקוחות, כמו כתובות אימייל, ואתם רוצים להסתיר את המידע הזה. עם זאת, היומנים האלה כוללים גם את כתובות האימייל של מפתחים פנימיים, ואתם לא רוצים לצנזר אותן.
C#
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
בדוגמה הבאה של JSON נוצר מילון מותאם אישית שמפרט קבוצת משנה של כתובות אימייל בהודעה WordList (jack@example.org ו-jill@example.org), ומוקצה להן שם ה-infoType המותאם אישית DEVELOPER_EMAIL. קובץ ה-JSON הזה מורה ל-Sensitive Data Protection להתעלם מכתובות האימייל שצוינו, ולהחליף כל כתובת אימייל אחרת שהוא מזהה במחרוזת שמתאימה ל-infoType שלה (במקרה הזה, EMAIL_ADDRESS):
קלט JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"jack@example.org accessed customer record of user5@example.com"
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
},
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"DEVELOPER_EMAIL"
},
"dictionary":{
"wordList":{
"words":[
"jack@example.org",
"jill@example.org"
]
}
}
}
],
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
"ruleSet": [
{
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"rules": [
{
"exclusionRule": {
"excludeInfoTypes": {
"infoTypes": [
{
"name": "DEVELOPER_EMAIL"
}
]
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
}
פלט JSON:
כששולחים POST של ה-JSON הזה אל content:deidentify, מתקבלת תגובת ה-JSON הבאה:
{
"item":{
"value":"jack@example.org accessed customer record of [EMAIL_ADDRESS]"
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
הפלט זיהה בצורה נכונה את user1@example.com כהתאמה לEMAIL_ADDRESS מזהה infoType ואת jack@example.org כהתאמה לEMAIL_ADDRESS מזהה infoType בהתאמה אישית.DEVELOPER_EMAIL שימו לב: בחרנו להמיר רק את EMAIL_ADDRESS, ולכן הכתובת jack@example.org נשארה ללא שינוי.
הוספת יכולות לגלאי מובנה של סוג מידע
נניח שגלאי מובנה של סוג מידע לא מחזיר את הערכים הנכונים. לדוגמה, אתם רוצים לקבל התאמות לשמות של אנשים, אבל גלאי PERSON_NAME המובנה של 'הגנה על נתונים רגישים' לא מצליח להחזיר התאמות לשמות מסוימים של אנשים שמופיעים בדרך כלל במערך הנתונים שלכם.
בעזרת Sensitive Data Protection אפשר להוסיף גלאי מובנה להצהרה של גלאי infoType בהתאמה אישית, וכך להרחיב את היכולות של גלאי infoType מובנים. דוגמה לכך מופיעה בהמשך. בקטע הקוד הזה מוצגות דוגמאות לאופן ההגדרה של Sensitive Data Protection כך שגלאי ה-infoType המובנה PERSON_NAME יתאים גם לשם Quasimodo:
C#
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
...
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"PERSON_NAME"
},
"dictionary":{
"wordList":{
"words":[
"quasimodo"
]
}
}
}
]
}
...
המאמרים הבאים
מידע על מילונים גדולים בהתאמה אישית