בדף הזה מפורטות דוגמאות לשאילתות שאפשר להשתמש בהן כדי לנתח ממצאים של Sensitive Data Protection שיוצאו ל-BigQuery.
אפשר להגדיר משימת בדיקה או טריגר למשימה כדי לשמור את הממצאים ב-BigQuery. כך תוכלו לשלוח שאילתות לגבי הממצאים כדי לבצע ניתוח נוסף. כשמייצאים את הממצאים ל-BigQuery, הנתונים נכתבים בטבלה חדשה או בטבלה קיימת.
מידע נוסף על כל הפעולות ש-Sensitive Data Protection יכול לבצע אחרי הבדיקה מופיע במאמר פעולות.
למידע נוסף על הפעלת שאילתות, ראו את המאמרים הבאים:
העמודות בטבלת BigQuery
העמודות בטבלה של הממצאים המיוצאים מבוססות על המאפיינים של האובייקט Finding.
קישור התוצאות בחזרה לשורות שמכילות את הממצאים
אם מגדירים בדיקה של טבלה ב-BigQuery, אפשר להגדיר את העבודה או את טריגר העבודה כך שהממצאים שיוצאו יכללו את המזהים של השורה. כך תוכלו לקשר את הממצאים של הבדיקה לשורות שמכילות אותם.
בעבודת הבדיקה או בהפעלת העבודה, מגדירים את השדות הבאים לשמות של העמודות שמזהות באופן ייחודי כל שורה בטבלה – כלומר, העמודות שמשמשות כמפתח ראשי:
- אם משתמשים במסוף Google Cloud , צריך להגדיר את השדה שדות לזיהוי (מופרדים בפסיקים).
- אם אתם משתמשים ב-DLP API, צריך להגדיר את המאפיין
identifyingFields.
כשמסיימים את הבדיקה ומייצאים את הממצאים ל-BigQuery, כל ממצא יכיל את הערכים התואמים של העמודות שציינתם. הערכים האלה יופיעו בשדה location.content_locations.record_location.record_key.id_values. אחר כך תוכלו להשתמש בערכים האלה כדי לקשר את הממצא בחזרה לשורה הספציפית בטבלה ב-BigQuery שנבדקה.
שאילתות לדוגמה
אפשר להשתמש בשאילתות לדוגמה הבאות כדי לנתח את הממצאים. אפשר גם להשתמש בשאילתות בכלי להמחשה כמו Data Studio. השאילתות האלה נועדו לעזור לכם להתחיל להריץ שאילתות על נתוני הממצאים.
בכל אחת מהשאילתות הבאות, מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
DATASET: השם של מערך הנתונים ב-BigQuery -
TABLE_ID: מזהה הטבלה
בחירת מספר המופעים של כל סוג מידע
מסוף Google Cloud
SELECT info_type.name, COUNT(info_type.name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID` GROUP BY info_type.name ORDER BY count DESC;
שורת פקודה
bq query --use_legacy_sql=false ' SELECT info_type.name, COUNT(info_type.name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID` GROUP BY info_type.name ORDER BY count DESC;'
בחירת הספירה של כל infoType לפי יום
מסוף Google Cloud
SELECT info_type.name, cast(TIMESTAMP_SECONDS(create_time.seconds) as date) as day, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY info_type.name, day ORDER BY count DESC;
שורת פקודה
bq query --use_legacy_sql=false ' SELECT info_type.name, cast(TIMESTAMP_SECONDS(create_time.seconds) as date) as day, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY info_type.name, day ORDER BY count DESC;'
בחירת הספירה של כל סוג מידע בכל מאגר
מסוף Google Cloud
SELECT info_type.name, locations.container_name, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY locations.container_name, info_type.name ORDER BY count DESC;
שורת פקודה
bq query --use_legacy_sql=false ' SELECT info_type.name, locations.container_name, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY locations.container_name,info_type.name ORDER BY count DESC;'
בחירת סוגי הממצאים שנמצאו בכל עמודה בטבלה
השאילתה הזו תקבץ את כל הממצאים לפי שם העמודה, והיא מיועדת לפעול על ממצאים ממשימת בדיקה ב-BigQuery. השאילתה הזו שימושית אם אתם מנסים לזהות את הסוגים הסבירים של עמודה מסוימת. אפשר לשנות את ההגדרות על ידי שינוי של פסוקיות WHERE ו-HAVING. לדוגמה, אם בטבלת הממצאים מופיעות כמה תוצאות של טבלאות, אפשר להגביל אותן להרצת משימה אחת או לשם טבלה אחד.
מסוף Google Cloud
SELECT table_counts.field_name, STRING_AGG( CONCAT(" ",table_counts.name," [count: ",CAST(table_counts.count_total AS String),"]") ORDER BY table_counts.count_total DESC) AS infoTypes FROM ( SELECT locations.record_location.field_id.name AS field_name, info_type.name, COUNT(*) AS count_total FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations WHERE (likelihood = 'LIKELY' OR likelihood = 'VERY_LIKELY' OR likelihood = 'POSSIBLE') GROUP BY locations.record_location.field_id.name, info_type.name HAVING count_total>200 ) AS table_counts GROUP BY table_counts.field_name ORDER BY table_counts.field_name
השאילתה שלמעלה עשויה להפיק תוצאה כזו עבור טבלת דוגמה, שבה העמודה infoTypes מציינת כמה מופעים של כל infoType נמצאו עבור העמודה הנתונה.
| field_name | infoTypes |
|---|---|
field1 |
CUSTOM_USER_US [count: 7004], CUSTOM_USER_EU [count: 2996] |
field2 |
US_VEHICLE_IDENTIFICATION_NUMBER [count: 9597] |
field3 |
EMAIL_ADDRESS [count: 10000] |
field4 |
IP_ADDRESS [count: 10000] |
field5 |
PHONE_NUMBER [count: 7815] |
field6 |
US_SOCIAL_SECURITY_NUMBER [count: 10000] |
field7 |
CREDIT_CARD_NUMBER [count: 10000] |