ניתוח פרופילי נתונים שמאוחסנים ב-BigQuery

אם הגדרתם את שירות גילוי המידע הרגיש כך שישלח את כל פרופילי הנתונים שנוצרו בהצלחה ל-BigQuery, תוכלו להריץ שאילתות על פרופילי הנתונים האלה כדי לקבל תובנות לגבי הנתונים שלכם. אפשר גם להשתמש בכלים להצגה חזותית כמו Data Studio כדי ליצור דוחות בהתאמה אישית שמותאמים לצרכים העסקיים שלכם. אפשרות אחרת היא להשתמש בדוח מוכן מראש ש-Sensitive Data Protection מספק, לשנות אותו ולשתף אותו לפי הצורך.

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

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

לפני שמתחילים

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

טבלת הפלט

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

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

התצוגה latest

כש-Sensitive Data Protection מייצאת פרופילי נתונים לטבלת הפלט, היא גם יוצרת את התצוגה latest. התצוגה הזו היא טבלה וירטואלית שסיננו מראש את הנתונים שלה, והיא כוללת רק את תמונות המצב העדכניות ביותר של פרופילי הנתונים. לתצוגה latest יש את אותה סכימה כמו לטבלת הפלט, כך שאפשר להשתמש בשתיהן לסירוגין בשאילתות SQL ובדוחות Data Studio. התוצאות יכולות להיות שונות כי טבלת הפלט מכילה תמונות מצב ישנות יותר של פרופילי הנתונים.

התצוגה latest מאוחסנת באותו מיקום שבו מאוחסנת טבלת הפלט. השם שלו הוא בפורמט הבא:

OUTPUT_TABLE_latest_VERSION

מחליפים את מה שכתוב בשדות הבאים:

  • OUTPUT_TABLE: המזהה של הטבלה שמכילה את פרופילי הנתונים המיוצאים.
  • VERSION: מספר הגרסה של התצוגה.

לדוגמה, אם שם טבלת הפלט הוא table-profile, אז לתצוגה latest יש שם כמו table-profile_latest_v1.

התצוגה האחרונה

כשמשתמשים בתצוגה latest בשאילתות SQL, צריך להשתמש בשם המלא של התצוגה, שכולל את מזהה הפרויקט, מזהה מערך הנתונים, מזהה הטבלה והסיומת – לדוגמה, myproject.mydataset.table-profile_latest_v1.

PROJECT_ID.DATASET_ID.OUTPUT_TABLE_latest_VERSION

בחירה בין טבלת הפלט לבין התצוגה latest

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

כשבוחרים בין שימוש בטבלת הפלט לבין שימוש בתצוגה בשאילתות SQL או בדוחות Data Studio, כדאי לשקול את הנקודות הבאות:latest

  • התצוגה latest שימושית אם יש לכם נכסי נתונים שעברו פרופיל מחדש ואתם רוצים לראות רק את הפרופילים האחרונים – לא את הגרסאות הקודמות שלהם. כלומר, אתם רוצים לראות את המצב הנוכחי של הנתונים בפרופיל.

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

שאילתות SQL לדוגמה

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

בדוגמאות הבאות, מחליפים את TABLE_OR_VIEW באחד מהערכים הבאים:

  • השם של טבלת הפלט, שהיא הטבלה שמכילה את פרופילי הנתונים המיוצאים – לדוגמה, myproject.mydataset.table-profile.
  • השם של התצוגה latest של טבלת הפלט – לדוגמה, myproject.mydataset.table-profile_latest_v1.

בכל מקרה, צריך לכלול את מזהה הפרויקט ואת מזהה קבוצת הנתונים.

מידע נוסף מופיע בקטע בחירה בין טבלת הפלט לבין תצוגת latest בדף הזה.

כדי לפתור בעיות שנתקלתם בהן, אפשר לעיין במאמר בנושא הודעות שגיאה.

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

SELECT
  column_profile.table_full_resource,
  column_profile.COLUMN,
  other_matches.info_type.name,
  column_profile.profile_last_generated
FROM
   `TABLE_OR_VIEW`
  LEFT JOIN UNNEST(column_profile.other_matches) AS other_matches
WHERE
  column_profile.free_text_score = 1
  AND ( column_profile.column_info_type.info_type.name>""
    OR ARRAY_LENGTH(column_profile.other_matches)>0 )

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

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

תציג רשימה של כל הטבלאות שמכילות עמודה של מספרי כרטיסי אשראי

SELECT
  column_profile.table_full_resource,
  column_profile.profile_last_generated
FROM
  `TABLE_OR_VIEW`
WHERE
  column_profile.column_info_type.info_type.name="CREDIT_CARD_NUMBER"

CREDIT_CARD_NUMBER הוא סוג מידע מובנה שמייצג מספר כרטיס אשראי.

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

הצגת פרופילים של טבלאות שמכילים עמודות עם מספרי כרטיסי אשראי, מספרי ביטוח לאומי בארה"ב ושמות של אנשים

SELECT
  table_full_resource,
  COUNT(*) AS count_findings
FROM (
  SELECT
    DISTINCT column_profile.table_full_resource,
    column_profile.column_info_type.info_type.name
  FROM
    `TABLE_OR_VIEW`
  WHERE
    column_profile.column_info_type.info_type.name IN ('PERSON_NAME',
      'CREDIT_CARD_NUMBER',
      'US_SOCIAL_SECURITY_NUMBER')
  ORDER BY
    column_profile.table_full_resource ) ot1
GROUP BY
  table_full_resource
  #increase this number to match the total distinct infoTypes that must be present
HAVING
  count_findings>=3

השאילתה הזו משתמשת בסוגי המידע המובנים הבאים:

  • CREDIT_CARD_NUMBER: מייצג מספר כרטיס אשראי
  • PERSON_NAME: מייצג את השם המלא של אדם
  • US_SOCIAL_SECURITY_NUMBER מייצג מספר ביטוח לאומי בארה"ב

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

רשימת קטגוריות שבהן ציון הרגישות הוא SENSITIVITY_HIGH

SELECT file_store_profile.file_store_path, file_store_profile.resource_visibility, file_store_profile.sensitivity_score
FROM `TABLE_OR_VIEW`
WHERE file_store_profile.sensitivity_score.score ='SENSITIVITY_HIGH'
;

מידע נוסף זמין במאמר בנושא פרופילים של נתוני חנויות.

רשימה של כל הנתיבים, האשכולות וסיומות הקבצים של הדלי שנבדקו, שבהם ציון הרגישות הוא SENSITIVITY_HIGH

SELECT file_store_profile.file_store_path, summaries.file_cluster_type.cluster, STRING_AGG(scanned_file_extensions.file_extension) AS scanned_extensions, file_store_profile.profile_last_generated.timestamp
FROM `TABLE_OR_VIEW`
LEFT JOIN UNNEST(file_store_profile.file_cluster_summaries) as summaries
LEFT JOIN UNNEST(summaries.file_store_info_type_summaries) as info_types
LEFT JOIN UNNEST(summaries.file_extensions_scanned) as scanned_file_extensions
WHERE file_store_profile.data_source_type.data_source = 'google/storage/bucket'
AND summaries.sensitivity_score.score ='SENSITIVITY_HIGH'
GROUP BY 1, 2, 4
;

מידע נוסף זמין במאמר בנושא פרופילים של נתוני חנויות.

רשימה של כל הנתיבים, האשכולות והסיומות של הקבצים שנמצאו בהם מספרי כרטיסי אשראי

SELECT file_store_profile.file_store_path, summaries.file_cluster_type.cluster, STRING_AGG(scanned_file_extensions.file_extension) AS scanned_extensions
FROM `TABLE_OR_VIEW`
LEFT JOIN UNNEST(file_store_profile.file_cluster_summaries) as summaries
LEFT JOIN UNNEST(summaries