תצוגות מורשות
במאמר הזה מוסבר איך ליצור תצוגות מורשות ותצוגות מהותיות מורשות ב-BigQuery. כאדמינים של נתונים, אתם יכולים ליצור תצוגה מורשית כדי לשתף קבוצת משנה של נתונים במערך נתונים עם משתמשים וקבוצות ספציפיים (חשבונות משתמשים). החשבונות הראשיים יכולים לראות את הנתונים שאתם משתפים ולהריץ עליהם שאילתות, אבל הם לא יכולים לגשת ישירות למערך הנתונים המקורי.
סוגי תצוגות
תצוגה לוגית היא סוג התצוגה שמוגדר כברירת מחדל ב-BigQuery, ותצוגה מהותית היא תצוגה שחושבה מראש ושומרת במטמון מדי פעם את תוצאות השאילתה כדי לשפר את הביצועים והיעילות.
תצוגה מורשית של תצוגה לוגית נקראת תצוגה מורשית, אבל תצוגה מורשית של תצוגה מהותית נקראת תצוגה מהותית מורשית.
אם תצוגה לוגית מסתמכת על שאילתה גדולה או יקרה מבחינה חישובית, אתם יכולים ליצור במקומה תצוגה מהותית. במאמר סקירה כללית של תצוגות לוגיות ותצוגות מהותיות מוסבר על תרחישי השימוש של תצוגה לוגית ותצוגה מהותית.
השלבים העיקריים ליצירת תצוגות מורשות
כדי ליצור ולשתף תצוגה, עיינו בשלבים הכלליים הבאים, שהם זהים לתצוגות לוגיות מורשות ולתצוגות מהותיות מורשות.
- יוצרים קבוצת נתונים שתכיל את נתוני המקור.
- מריצים שאילתה כדי לטעון נתונים לטבלת יעד במערך הנתונים של המקור.
- יוצרים קבוצת נתונים שתכיל את התצוגה המורשית.
- יוצרים תצוגה מורשית משאילתת SQL שמגבילה את העמודות שמנתחי הנתונים יכולים לראות בתוצאות השאילתה.
- נותנים למנתחי הנתונים הרשאה להריץ משימות של שאילתות.
- נותנים למנתחי הנתונים גישה למערך הנתונים שמכיל את התצוגה המורשית.
- נותנים לתצוגה המורשית גישה למערך הנתונים של המקור.
חלופות
למרות שהתצוגות המורשות הן גמישות וניתנות להתאמה, יכול להיות שאחת מהשיטות הבאות תתאים יותר לתרחיש לדוגמה שלכם:
- הגדרת כללי מדיניות ברמת השורה בטבלה.
- הגדרת כללי מדיניות ברמת העמודה בטבלה.
- אחסון נתונים בטבלה נפרדת.
- לשתף את כל התצוגות במערך נתונים (מערכי נתונים מורשים).
שימוש באבטחה ברמת השורה או העמודה, או בטבלאות נפרדות
כדי להגביל את היכולת של המשתמשים לראות את הנתונים, מנהלי הנתונים יכולים להגדיר מדיניות גישה ברמת השורה בטבלה, או ליצור טבלה נפרדת לנתונים הרגישים. אחסון הנתונים בטבלה נפרדת מבודד את הנתונים ומסיר את היכולת לראות כמה שורות יש בטבלה.
בנוסף, אדמין של נתונים יכול ליצור ולהחיל תגי מדיניות כדי להגביל את היכולת של המשתמשים לראות עמודות בטבלה.
אחסון נתונים בטבלה נפרדת היא השיטה הכי מאובטחת, אבל הכי פחות גמישה. הגדרת כללי מדיניות ברמת השורה היא גמישה ומאובטחת, ושיתוף תצוגות מורשות הוא גמיש ומספק את הביצועים הטובים ביותר.
כדי להשוות בין השיטות האלה, אפשר לעיין במקורות המידע הבאים:
- השוואה בין תצוגות מורשות, אבטחה ברמת השורה וטבלאות נפרדות
- מבוא לאבטחה ברמת השורה
- תרחישים לדוגמה לשימוש באבטחה ברמת השורה
- מבוא לבקרת גישה ברמת העמודה
שיתוף כל התצוגות בקבוצת נתונים
אם אתם רוצים לתת לקבוצה של תצוגות גישה למערך נתונים בלי שתצטרכו לאשר כל תצוגה בנפרד, אתם יכולים לקבץ את התצוגות למערך נתונים, ואז לתת למערך הנתונים שמכיל את התצוגות גישה למערך הנתונים שמכיל את הנתונים.
לאחר מכן תוכלו לתת לחשבונות המשתמשים גישה למערך הנתונים שמכיל את קבוצת התצוגות, או לתצוגות ספציפיות במערך הנתונים, לפי הצורך. מערך נתונים שיש לו גישה למערך נתונים אחר נקרא מערך נתונים מורשה. מערך הנתונים שנותן הרשאת גישה למערך נתונים אחר נקרא מערך הנתונים המשותף.
רשימת בקרת הגישה של מערך נתונים יכולה לכלול עד 2,500 משאבים מורשים, כולל תצוגות מורשות, מערכי נתונים מורשים ופונקציות מורשות. אם חורגים מהמגבלה הזו בגלל מספר גדול של תצוגות מורשות, כדאי לקבץ את התצוגות לקבוצות נתונים מורשות. כשאתם מתכננים ארכיטקטורות חדשות של BigQuery, במיוחד ארכיטקטורות עם כמה דיירים, כדאי לקבץ תצוגות קשורות למערכי נתונים מורשים.
מידע נוסף זמין במאמרים מערכי נתונים מורשים ומתן הרשאה למערך נתונים.
מגבלות
- כשיוצרים תצוגה מורשית או תצוגה מהותית מורשית במערך נתונים אחר, מערך הנתונים של נתוני המקור ומערך הנתונים של התצוגה המורשית צריכים להיות באותו מיקום אזורי.
- כשמוחקים תצוגה מורשית, יכול להיות שיעברו עד 24 שעות עד שהיא תוסר מרשימת התצוגות. במהלך פרק הזמן הזה, אי אפשר לגשת לתצוגה המורשית, אבל התצוגה המורשית שנמחקה יכולה להופיע ברשימת התצוגות, והיא נספרת במסגרת מגבלת התצוגות המורשות. המגבלה הזו יכולה למנוע יצירה של תצוגות מורשות נוספות, אם התצוגה המורשית החדשה תחרוג מהמגבלה.
- אי אפשר ליצור תצוגה מורשית ברפליקה משנית. מידע נוסף זמין במאמר התנהגות המשאבים ברפליקציה של מערכי נתונים.
לפני שמתחילים
להקצות תפקידים של ניהול זהויות והרשאות גישה (IAM) שנותנים למשתמשים את ההרשאות הנדרשות כדי לשלוח שאילתות לתצוגות המורשות או לתצוגות המהותיות המורשות שאתם משתפים.
תצוגות מורשות ו-VPC Service Controls
כשמשתמשים בתצוגות מורשות בהיקף של VPC Service Controls, כללי תעבורת הנתונים הנכנסת והיוצאת צריכים לאפשר לחשבונות המשתמשים גישה לפרויקט שמכיל את התצוגה, ולכל פרויקט אחר שמכיל את נתוני המקור שהתצוגה ניגשת אליהם.
לדוגמה, בתרשים הבא, מבצע הקריאה החוזרת בפרויקט R ניגש לתצוגה המורשית בפרויקט A, שטבלת המקור שלה נמצאת בפרויקט B. במקרה כזה, הכללים לתעבורת נתונים נכנסת ויוצאת של VPC Service Controls צריכים לאפשר למי שמבצע את הקריאה בפרויקט R לגשת גם לפרויקט א' וגם לפרויקט ב' באמצעות שירות BigQuery.
ההרשאות הנדרשות לגישה ל-VPC Service Controls
לחשבון המשתמש לא נדרשות הרשאות של ניהול זהויות והרשאות גישה בפרויקט של נתוני המקור, אבל כלל התעבורה הנכנסת חייב לאפשר גישה לשירות BigQuery בפרויקט המקור שמכיל את טבלת המקור, בנוסף לאפשרות גישה לפרויקט שמכיל את התצוגה.
למידע על התפקידים וההרשאות הנדרשים, ראו הרשאות משתמשים בפרויקט ובמערך הנתונים.
כללים לתעבורת נתונים נכנסת (ingress) ויוצאת (egress)
בדוגמאות הבאות של כללי תעבורת נתונים נכנסת ויוצאת ב-VPC Service Controls, ממשק ה-API של BigQuery יכול לגשת גם לפרויקט המקור וגם לפרויקט התצוגה.
- למידע נוסף על הגדרת כללי כניסה ויציאה, קראו את המאמר הגדרת כללי כניסה ויציאה.
- במאמר מוצרים נתמכים של VPC Service Controls: BigQuery מפורטות המגבלות על הגדרת כללי תעבורת נתונים נכנסת ויוצאת ב-BigQuery.
לדוגמה, אם יוצרים תצוגה ב-PROJECT_A (תצוגה) שניגשת לנתונים ב-PROJECT_B (מקור), צריך את קבוצת כללי תעבורת הנתונים הנכנסת הבאה בשביל PROJECT_B וקבוצה נוספת של כללי תעבורת נתונים נכנסת בשביל PROJECT_A:
- ingressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
title: Ingress rules for the source project
בקובץ ה-YAML הבא מוצגת קבוצת כללי התעבורה היוצאת של PROJECT_B (המקור). תצטרכו גם קבוצה של כללים לתעבורת נתונים יוצאת (egress) בשביל PROJECT_A (תצוגה):
- egressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
egressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
title: Egress rules for the source project
התפקידים הנדרשים
כדי ליצור או לעדכן תצוגה מורשית, אתם צריכים הרשאות למערך הנתונים שמכיל את התצוגה ולמערך הנתונים שנותן גישה לתצוגה.
בנוסף, צריך לתת למשתמשים או לקבוצות גישה לפרויקט ולקבוצת הנתונים שמכילים את התצוגה.
הרשאות במערך הנתונים שמכיל את התצוגה
תצוגות נחשבות למשאבי טבלה ב-BigQuery, ולכן כדי ליצור תצוגה נדרשות אותן הרשאות כמו ליצירת טבלה. בנוסף, צריכות להיות לכם הרשאות לשלוח שאילתות לכל הטבלאות שמוזכרות בשאילתת ה-SQL של התצוגה.
- כדי ליצור קבוצת נתונים, צריך הרשאת IAM מסוג
bigquery.datasets.createבפרויקט. - כדי ליצור תצוגה, צריך הרשאת IAM מסוג
bigquery.tables.createבמערך הנתונים. התפקיד המוגדר מראשroles/bigquery.dataEditorב-IAM כולל את ההרשאות שנדרשות כדי ליצור תצוגה. - כדי ליצור תצוגה ששולחת שאילתה לטבלה שאין לכם גישה אליה, אתם צריכים לקבל את ההרשאה
bigquery.tables.getDataבטבלה שהתצוגה שולחת אליה שאילתה.
למידע נוסף על תפקידים והרשאות של IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.
הרשאות במערך הנתונים שמכיל את נתוני המקור
כדי לאשר תצוגה, מעניקים לה הרשאות קריאה למערך הנתונים של נתוני המקור.
כדי לבצע את ההרשאה הזו, צריך את ההרשאות הבאות במערך הנתונים שמכיל את נתוני המקור:
bigquery.datasets.updatedatasets.getIamPolicydatasets.setIamPolicy
כדי לראות אילו הרשאות נוספות נדרשות כדי לעדכן מערכי נתונים, קראו את המאמר ההרשאות הנדרשות.
הרשאות משתמש בפרויקט ובמערך הנתונים של התצוגה
כדי לשתף תצוגה מורשית עם משתמשים או קבוצות, צריך לתת למשתמשים או לקבוצות את הרשאות ה-IAM הבאות:
תפקיד ה-IAM
roles/bigquery.jobUser(אוroles/bigquery.user) בפרויקט שבו מופעלת משימת השאילתה (הפרויקט לחיוב או הפרויקט להפעלה). התפקיד הזה מעניק את ההרשאהbigquery.jobs.create, שנדרשת כדי להריץ משימות של שאילתות בתצוגה.תפקיד ה-IAM
roles/bigquery.jobUserנדרש רק לפרויקט שבו רוצים להריץ את המשימה, בלי קשר למקום שבו התצוגה מתארחת.תפקיד IAM מסוג
roles/bigquery.dataViewerבמערך הנתונים שמכיל את התצוגה המורשית. התפקיד הזה נותן את ההרשאהbigquery.tables.getData, שנדרשת כדי לשלוח שאילתות לתצוגה.אם משתמש שולח שאילתה לתצוגה המורשית מפרויקט נפרד, הוא לא צריך את התפקיד
roles/bigquery.jobUserבפרויקט שמארח את התצוגה. הם צריכים את התפקידroles/bigquery.dataViewerבמערך הנתונים שמכיל את התצוגה, ואת התפקידroles/bigquery.jobUserבפרויקט שבו השאילתה פועלת.
עבודה עם תצוגות מורשות
בקטעים הבאים מוסבר איך לעבוד עם תצוגות מורשות ועם תצוגות מהותיות מורשות.
יצירת תצוגה מורשית
כדי ליצור תצוגה מורשית, בוחרים באחת מהאפשרויות הבאות. במדריך יצירת תצוגה מורשית מוסבר איך נותנים הרשאה לתצוגה, משתפים אותה ומוחקים אותה.
המסוף
נכנסים לדף BigQuery.
בעורך השאילתות, מקלידים את השאילתה שעליה רוצים לבסס את התצוגה המורשית.
לוחצים על קובץ > שמירה > שמירת התצוגה.
בתיבת הדו-שיח Save view:
בשדה Project, מקלידים את הפרויקט שבו רוצים לשמור את התצוגה.
בשדה Dataset, מקלידים את מערך הנתונים שבו רוצים לשמור את התצוגה. קבוצת הנתונים הזו חייבת להיות שונה מקבוצת הנתונים שמשמשת בשאילתת המקור.
ב-Table, מקלידים את שם התצוגה.
לוחצים על Save.
נותנים את ההרשאות הנדרשות למשתמשים שיכולים להשתמש בתצוגה המורשית.
בחלונית Explorer, בוחרים את מערך הנתונים שמשמש בשאילתת המקור.
בחלונית Details, לוחצים על Sharing > Authorize views.
בחלונית Authorized views, בשדה Authorized view, מקלידים את השם המלא של התצוגה בפורמט PROJECT_ID.DATASET_ID.VIEW_NAME.
לוחצים על הוספת הרשאה.
Terraform
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כך מחילים את ההגדרות של Terraform בפרויקט ב- Cloud de Confiance :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Cloud de Confiance שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Cloud de Confiance כדי להציג את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
ניהול משתמשים או קבוצות בתצוגות מורשות
אחרי שנותנים הרשאה לתצוגה, אפשר לשמור על הגישה אליה על ידי ביצוע המשימות הבאות במערך נתונים, בטבלה או בתצוגה:
- לצפות במדיניות הגישה.
- נותנים גישה.
- ביטול הגישה.
- למנוע גישה.
מידע נוסף זמין במאמר שליטה בגישה למשאבים באמצעות IAM.
הסרת הרשאה לתצוגה
כדי להסיר את ההרשאה לתצוגה, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בחלונית השמאלית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.
לוחצים על סקירה כללית > טבלאות ובוחרים טבלה.
לוחצים על Sharing > Authorize views.
לוחצים על כדי להסיר את ההרשאה.
לוחצים על Close.
BQ
כדי להסיר את ההרשאה מתצוגה, משתמשים בפקודה bq rm. מזינים את table_id של התצוגה שרוצים להסיר ממנה את ההרשאה.
bq rm \ project_id:dataset:table_id
API
מפעילים את ה-method tables.delete ומשתמשים במאפיינים projectID, datasetID ו-tableID כדי להסיר את התצוגה המורשית של מערך הנתונים. מידע נוסף זמין במאמר טבלאות.
הרשאה שבוטלה ו-VPC Service Controls
כשמבצעים שאילתה בתצוגה מורשית כדי לגשת לנתונים במערך נתונים של מקור, דרך היקף של VPC Service Controls, השאילתה עוקפת את הבדיקות הרגילות של VPC Service Controls בטבלאות הבסיס.
אם תבטלו או תסירו את ההרשאה לתצוגה מקבוצת הנתונים של המקור, BigQuery יחזור לבדיקות הרשאה רגילות וישלח שאילתות ישירות למסדי הנתונים הטבלאיים בפרויקט המקור. אם מסדי הנתונים הטבלאיים האלה חוצים את גבולות הגזרה של VPC Service Controls בלי כללי תעבורת נתונים יוצאת מפורשים שמאפשרים גישה ישירה לטבלה, VPC Service Controls חוסם את השאילתה ומחזיר שגיאות של הפרת תעבורת נתונים נכנסת או יוצאת.
כשמשחזרים את ההרשאה לתצוגה במערך הנתונים של המקור, BigQuery עוקף שוב את הבדיקות הישירות של מסד הנתונים הטבלאי, והשגיאות של VPC Service Controls נפתרות.
מכסות ומגבלות
- תצוגות מורשות כפופות למגבלות של מערכי נתונים. מידע נוסף זמין במאמר מגבלות של מערכי נתונים.
- אם מסירים תצוגה מורשית, יכול להיות שיעברו עד 24 שעות עד שכל ההפניות לתצוגה יוסרו מהמערכת. כדי למנוע שגיאות, צריך להמתין 24 שעות לפני שמשתמשים שוב בשם של תצוגה שהוסרה, או ליצור שם ייחודי לתצוגה.
נושאים מתקדמים
בקטעים הבאים מתוארות שיטות מתקדמות לשימוש בתצוגות מורשות.
שילוב של אבטחה ברמת השורה עם תצוגות מורשות
הנתונים שמוצגים בתצוגה לוגית או בתצוגה מהותית מסוננים בהתאם למדיניות הגישה ברמת השורה של טבלת המקור הבסיסית.
למידע נוסף על האינטראקציה בין אבטחה ברמת השורה לבין תצוגות מהותיות, קראו את המאמר שימוש באבטחה ברמת השורה עם תכונות אחרות של BigQuery.
שילוב של אבטחה ברמת העמודה עם תצוגות מורשות
ההשפעה של אבטחה ברמת העמודה על תצוגות לא תלויה בשאלה אם התצוגה היא תצוגה מורשית או לא.
במאמר תצוגות של שאילתות מוסבר בפירוט איך מחילים הרשאות לאבטחה ברמת העמודה.
שימוש ב-BigQuery sharing עם תצוגות מורשות
BigQuery sharing (לשעבר Analytics Hub) היא פלטפורמה להחלפת נתונים עם היכולות הבאות:
- מאפשר לשתף נתונים משותפים ותובנות בקנה מידה נרחב בין כל היחידות בארגון.
- משתמשת במסגרת אבטחה ופרטיות חזקה.
- תמיכה בפרסום מערך נתונים של BigQuery, שנקרא מערך נתונים משותף, והתצוגות המורשות ומערכי הנתונים המורשים שמשויכים אליו, לקבוצה של מנויים.
מערך נתונים מקושר הוא מערך נתונים לקריאה בלבד ב-BigQuery, שמשמש כמצביע או כהפניה למערך נתונים משותף. כשנרשמים לרשימה של שיתוף, נוצרת קבוצת נתונים מקושרת בפרויקט שלכם, אבל לא עותק של קבוצת הנתונים. לכן, המנויים יכולים לקרוא את הנתונים אבל לא להוסיף או לעדכן אובייקטים בתוכם.
אין תמיכה בתצוגות מהותיות שמפנות לטבלאות במערך הנתונים המקושר.
מידע נוסף זמין במאמר מבוא לשיתוף.
המאמרים הבאים
- במדריך יצירת תצוגה מורשית מוסבר איך יוצרים תצוגה מורשית.
- כדי ליצור תצוגה לוגית, עיינו במאמר יצירת תצוגות לוגיות.
- כדי ליצור תצוגה מהותית שתומכת בסוגים אחרים של בקרת גישה, קראו את המאמר יצירת תצוגות מהותיות.
- כדי לקבל מטא-נתונים של תצוגה, ראו קבלת מידע על תצוגות.
- כדי לנהל תצוגות, עיינו במאמר ניהול תצוגות.