קבוצות נתונים מורשות

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

סקירה כללית

תצוגה ב-BigQuery היא טבלה וירטואלית שמוגדרת על ידי שאילתת SQL. לדוגמה, שאילתה של תצוגה יכולה להחזיר רק קבוצת משנה של עמודות בטבלה, בלי עמודות שמכילות פרטים אישיים מזהים (PII). כדי לשלוח שאילתה לתצוגה, המשתמש צריך גישה למשאבים שאליהם ניגשת השאילתה של התצוגה.

תצוגות מורשות

אם רוצים לאפשר למשתמשים לשלוח שאילתות לתצוגה, בלי לתת להם גישה ישירה למשאבים שאליהם התצוגה מפנה, אפשר להשתמש בתצוגה מורשית. כשיוצרים תצוגה מורשית, אפשר לשתף תצוגה לוגית או תצוגה מהותית. כשנותנים הרשאה לתצוגה מהותית, היא נקראת תצוגה מהותית מורשית.

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

קבוצות נתונים מורשות

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

מערך נתונים שיש לו גישה למערך נתונים אחר נקרא מערך נתונים מורשה. מערך הנתונים שנותן הרשאת גישה למערך נתונים אחר נקרא מערך הנתונים המשותף.

הרשאות ותפקידים נדרשים

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

הרשאה משאב
bigquery.datasets.get מערך הנתונים שאתם משתפים.
bigquery.datasets.update מערך הנתונים שאתם משתפים.

תפקידי ה-IAM הבאים שמוגדרים מראש כוללים את ההרשאות הנדרשות.

תפקיד תיאור
bigquery.dataOwner בעלי הנתונים ב-BigQuery
bigquery.admin אדמין של BigQuery

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

מכסות ומגבלות

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

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

אישור של קבוצת נתונים

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית השמאלית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

    אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.

  3. בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז לוחצים על מערך נתונים.

  4. בחלונית הפרטים שמופיעה, לוחצים על Sharing ובוחרים באפשרות Authorize Datasets.

  5. בחלונית Authorized dataset שמופיעה, מזינים את מזהה מערך הנתונים (Dataset ID) שרוצים להעניק לו הרשאה, בפורמט הבא:

    PROJECT.AUTHORIZED_DATASET

    לדוגמה:

    myProject.myDataset

  6. לוחצים על הוספת הרשאה ואז על סגירה.

BQ

  1. כותבים את המטא-נתונים הקיימים (כולל רשימה של בקרת גישה) של קבוצת הנתונים שרוצים לשתף בקובץ JSON, באמצעות הפקודה bq show.

    bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
  2. משתמשים בכלי לעריכת טקסט כדי להוסיף את קבוצת הנתונים שרוצים לאשר לקטע access הקיים בקובץ ה-JSON שנוצר ב-FILE_PATH.

    לדוגמה:

    "access": [
     ...
     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    ]

  3. מעדכנים את מערך הנתונים המשותף באמצעות הפקודה bq update. לדוגמה:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
  4. כדי לוודא שמערך הנתונים המורשה נוסף, מזינים שוב את הפקודה bq show. לדוגמה:

    bq show --format=prettyjson PROJECT:SHARED_DATASET

API

  1. כדי לקבל את המטא-נתונים הנוכחיים של קבוצת הנתונים שרוצים לשתף, מפעילים את השיטה datasets.get באופן הבא:

    GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    גוף התגובה מחזיר משאב Dataset שמכיל מטא-נתונים בפורמט JSON של מערך הנתונים.

  2. מוסיפים את קבוצת הנתונים שרוצים להקצות לה הרשאה לקטע access של המטא-נתונים בפורמט JSON שהוחזרו במשאב Dataset, באופן הבא:

    "access": [
     ...
     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    ]
  3. משתמשים ב-method‏ datasets.update כדי לעדכן את מערך הנתונים עם ההרשאה שנוספה:

    PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    כוללים את המשאב המעודכן של Dataset בגוף הבקשה.

  4. כדי לוודא שקבוצת הנתונים המורשית נוספה, אפשר להפעיל שוב את השיטה datasets.get.

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

כשמוחקים קבוצת נתונים שיש לה הרשאת גישה לקבוצת נתונים אחרת, יכול להיות שיעברו עד 24 שעות עד שהשינוי יופיע ברשימות בקרת הגישה (ACL) של קבוצת הנתונים המקורית. בזמן הזה:

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

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית השמאלית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז לוחצים על מערך נתונים.

  4. בחלונית הפרטים שמופיעה, לוחצים על Sharing ובוחרים באפשרות Authorize Datasets.

  5. בחלונית Authorized dataset שמופיעה, מאתרים את הרשומה של מערך הנתונים המורשה בקטע Currently authorized datasets.

  6. לוחצים על סמל המחיקה לצד מערך הנתונים המורשה שרוצים להסיר, ואז לוחצים על Close.

BQ

  1. כותבים את המטא-נתונים הקיימים (כולל רשימת בקרת הגישה) של מערך הנתונים המשותף בקובץ JSON, באמצעות הפקודה bq show.

    bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
  2. משתמשים בכלי לעריכת טקסט כדי להסיר את קבוצת הנתונים המורשית מהקטע access בקובץ ה-JSON שנוצר ב-FILE_PATH, באופן הבא:

      {
        "dataset": {
          "dataset": {
            "project_id": "PROJECT",
            "dataset_id": "AUTHORIZED_DATASET"
          },
          "target_types": "VIEWS"
        }
      }
  3. מעדכנים את מערך הנתונים המשותף באמצעות הפקודה bq update. לדוגמה:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
  4. כדי לוודא שמערך הנתונים המורשה הוסר, מזינים שוב את הפקודה bq show. לדוגמה:

    bq show --format=prettyjson PROJECT:SHARED_DATASET

API

  1. כדי לקבל את המטא-נתונים הנוכחיים של קבוצת הנתונים המשותפת, מפעילים את ה-method‏ datasets.get באופן הבא:

    GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    גוף התגובה מחזיר משאב Dataset שמכיל מטא-נתונים בפורמט JSON של מערך הנתונים.

  2. מסירים את מערך הנתונים המורשה מהקטע access של קובץ ה-JSON שהוחזר במשאב Dataset, לדוגמה:

     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
  3. משתמשים ב-method‏ datasets.update כדי לעדכן את קבוצת הנתונים עם ההרשאה שהוסרה:

    PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    כוללים את המשאב המעודכן של Dataset בגוף הבקשה.

  4. כדי לוודא שמערך הנתונים המורשה הוסר, אפשר להפעיל שוב את ה-method‏ datasets.get.

יצירה או עדכון של תצוגה במערך נתונים מורשה

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

בטבלה הבאה מפורטות ההרשאות לניהול זהויות והרשאות גישה (IAM) שנדרשות כדי ליצור או לעדכן תצוגה בקבוצת נתונים מורשית:

הרשאה משאב
bigquery.datasets.get מערך הנתונים שאתם משתפים.
bigquery.tables.getData כל הטבלאות או התצוגות ממערך הנתונים המשותף שאליהן מפנים בתצוגה החדשה שאתם יוצרים או מעדכנים.
bigquery.tables.create מערך הנתונים המורשה שבו אתם יוצרים תצוגה.
bigquery.tables.update מערך הנתונים המורשה שבו אתם מעדכנים תצוגה.

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

  • מתן הרשאה למערך נתונים: מתן גישה ראשונית למערך נתונים משותף.
  • ניהול תצוגות מורשות ספציפיות: הוספה או הסרה של תצוגה ספציפית מהרשימה המורשית של מערך נתונים משותף.

    למידע נוסף, קראו על התפקידים הנדרשים.

הרצת שאילתה על תצוגה במערך נתונים מורשה

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

מידע נוסף זמין במאמר תצוגות מורשות.

דוגמה למערך נתונים מורשה

בדוגמה הבאה מוסבר איך ליצור קבוצת נתונים מורשית ולהשתמש בה.

נניח שיש לכם שתי קבוצות נתונים, בשמות private_dataset ו-public_dataset. מערך הנתונים private_dataset מכיל טבלה בשם private_table. מערך הנתונים public_dataset מכיל תצוגה בשם private_table_filtered. התצוגה private_table_filtered מבוססת על שאילתה שמחזירה חלק מהשדות בטבלה private_table, אבל לא את כולם.

אתם יכולים לתת למשתמש גישה לנתונים שמוחזרים מהתצוגה private_table_filtered, אבל לא לכל הנתונים בטבלה private_table, באופן הבא:

  1. מקצים למשתמש את התפקיד bigquery.dataViewer במערך הנתונים public_dataset. התפקיד הזה כולל את ההרשאה bigquery.tables.getData, שמאפשרת למשתמש לשלוח שאילתות לתצוגות במערך הנתונים public_dataset. למידע על איך להעניק תפקיד למשתמש עבור קבוצת נתונים, ראה עבודה עם בקרת גישה של קבוצות נתונים.

    עכשיו למשתמש יש הרשאה לשלוח שאילתות לתצוגות ב-public_dataset, אבל עדיין אין לו גישה לטבלה private_table ב-private_dataset. אם המשתמש ינסה לשלוח שאילתה ישירות לטבלה private_table, או אם הוא ינסה לגשת לטבלה private_table באופן עקיף על ידי שליחת שאילתה לתצוגה private_table_filtered, תופיע הודעת שגיאה דומה לזו:

    Access Denied: Table PROJECT:private_dataset.private_table: User does not have permission to query table PROJECT:private_dataset.private_table.

  2. בדף BigQuery במסוף Google Cloud , פותחים את קבוצת הנתונים private_dataset, לוחצים על Sharing ובוחרים באפשרות Authorize Datasets.

  3. בחלונית Authorized dataset שמופיעה, מזינים את הערך PROJECT.public_dataset בשדה Dataset ID ולוחצים על Add Authorization.

    מערך הנתונים public_dataset נוסף לרשימת בקרת הגישה של מערך הנתונים private_dataset, וכך התצוגות במערך הנתונים public_dataset יכולות לשלוח שאילתות לנתונים במערך הנתונים private_dataset.

    עכשיו המשתמש יכול לשלוח שאילתות לתצוגה private_table_filtered במערך הנתונים public_dataset, שניגש באופן עקיף למערך הנתונים private_dataset, בלי הרשאות גישה ישירה לנתונים במערך הנתונים private_dataset.

מגבלות

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

המאמרים הבאים

  • במאמר תצוגות מורשות מוסבר איך נותנים לתצוגה מסוימת הרשאת גישה לנתונים במערך נתונים.

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