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

אם בוחרים להחיל את ההגדרה enable_fine_grained_dataset_acls_option על אמצעי בקרת הגישה ברמת מערך הנתונים, נדרשת ההרשאה bigquery.datasets.getIamPolicy לניהול זהויות והרשאות גישה (IAM) כדי להציג את אמצעי בקרת הגישה של מערך נתונים מסוים ולשאילתת התצוגה INFORMATION_SCHEMA.OBJECT_PRIVILEGES. ההרשאה bigquery.datasets.setIamPolicy נדרשת כדי לעדכן את אמצעי בקרת הגישה של מערך נתונים או כדי ליצור מערך נתונים עם אמצעי בקרת גישה באמצעות ה-API.

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

הצטרפות לאכיפה

אתם יכולים להפעיל את האכיפה של שינויי ההרשאות. כשמצטרפים, צריך את ההרשאה bigquery.datasets.getIamPolicy כדי לקבל את אמצעי בקרת הגישה של מערך הנתונים, ואת ההרשאה bigquery.datasets.setIamPolicy כדי לעדכן את אמצעי בקרת הגישה של מערך הנתונים או כדי ליצור מערך נתונים עם אמצעי בקרת גישה באמצעות ה-API.

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

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

בדוגמאות הבאות מוסבר איך להגדיר ולהסיר את הגדרת התצורה enable_fine_grained_dataset_acls_option.

קביעת הגדרות הארגון

כדי לקבוע את הגדרות הארגון, משתמשים בהצהרת DDL של ALTER ORGANIZATION SET OPTIONS. בדוגמה הבאה, הערך של enable_fine_grained_dataset_acls_option מוגדר ל-TRUE ברמת הארגון:

ALTER ORGANIZATION
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);

מחליפים את REGION באזור שמשויך לארגון, לדוגמה, us או europe-west6.

בדוגמה הבאה מבוצע ניקוי של ההגדרה enable_fine_grained_dataset_acls_option ברמת הארגון:

ALTER ORGANIZATION
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);

קביעת הגדרות הפרויקט

כדי להגדיר את הגדרות הפרויקט, משתמשים בהצהרת ה-DDL ALTER PROJECT SET OPTIONS. הצהרת ה-DDL‏ ALTER PROJECT SET OPTIONS מקבלת באופן אופציונלי את המשתנה project_id. אם לא מציינים את project_id, ברירת המחדל היא הפרויקט הנוכחי שבו מתבצעת השאילתה.

בדוגמה הבאה, הערך של enable_fine_grained_dataset_acls_option מוגדר ל-TRUE.

ALTER PROJECT PROJECT_ID
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);

מחליפים את PROJECT_ID במזהה הפרויקט.

בדוגמה הבאה מוסרת ההגדרה enable_fine_grained_dataset_acls_option ברמת הפרויקט:

ALTER PROJECT PROJECT_ID
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);

שינויים בתפקידים בהתאמה אישית

אם תבחרו להחיל את שינויי ההרשאות, הם ישפיעו על כל התפקידים בהתאמה אישית שמעניקים את ההרשאות bigquery.datasets.get, bigquery.datasets.create או bigquery.datasets.update, אבל לא מעניקים גם את ההרשאות bigquery.datasets.getIamPolicy או bigquery.datasets.setIamPolicy.

אם יש לכם תפקידים בהתאמה אישית שכוללים רק את ההרשאות bigquery.datasets.get, ‏bigquery.datasets.update או bigquery.datasets.create, תצטרכו לעדכן אותם כך שיכללו את ההרשאות bigquery.datasets.getIamPolicy או bigquery.datasets.setIamPolicy, אם אתם רוצים לשמור על הפונקציונליות הקיימת של התפקידים בהתאמה אישית. אם התפקידים המותאמים אישית צריכים רק להציג או לעדכן את המטא-נתונים של מערך נתונים, צריך להשתמש בפרמטרים החדשים dataset_view ו-update_mode.

השינוי הזה לא משפיע על תפקידי המשתמשים הרגילים שמוגדרים מראש ב-BigQuery. באופן ספציפי, התפקידים roles/bigquery.admin,‏ roles/bigquery.dataOwner,‏ roles/bigquery.dataEditor,‏ roles/bigquery.dataViewer,‏ roles/bigquery.metadataViewer,‏ roles/bigquery.user,‏ roles/bigquery.studioAdmin ו-roles/bigquery.securityAdmin כבר מעניקים את ההרשאות התואמות של bigquery.datasets.getIamPolicy או bigquery.datasets.setIamPolicy. עם זאת, תפקידים מוגדרים מראש אחרים שצריכים רק גישה למטא-נתונים של מערך הנתונים לא כוללים את ההרשאה bigquery.datasets.getIamPolicy או bigquery.datasets.setIamPolicy. התפקידים האלה כוללים תפקידים של שגרות מורשות, תפקידי מטא-נתונים לשירותים אחרים וחלק מהתפקידים של סוכני שירות.

שינויים בפקודות של כלי שורת הפקודה של BigQuery

אם תפעילו את האכיפה המוקדמת, הפקודות הבאות בכלי bq יושפעו.

bq show

אפשר להשתמש בפקודה bq show עם הדגל הבא:

--dataset_view={METADATA|ACL|FULL}
מציין איך להחיל הרשאות כשמציגים את אמצעי הבקרה לגישה או את המטא-נתונים של מערך נתונים. משתמשים באחד מהערכים הבאים:
  • ‫METADATA: הצגת המטא-נתונים של מערך הנתונים בלבד. כדי להשתמש בערך הזה נדרשת ההרשאה bigquery.datasets.get.
  • ‫ACL: צפייה בלבד באמצעי בקרת הגישה של מערך הנתונים. כדי להשתמש בערך הזה נדרשת ההרשאה bigquery.datasets.getIamPolicy.
  • ‫FULL: צפייה במטא-נתונים של מערך הנתונים ובאמצעי בקרת הגישה. כדי להשתמש בערך הזה נדרשות ההרשאות bigquery.datasets.get ו-bigquery.datasets.getIamPolicy.

bq update

אפשר להשתמש בפקודה bq update עם הדגל הבא:

--update_mode={UPDATE_METADATA|UPDATE_ACL|UPDATE_FULL}
קובעת איך להחיל הרשאות כשמעדכנים את אמצעי בקרת הגישה או את המטא-נתונים של מערך נתונים. משתמשים באחד מהערכים הבאים:
  • ‫UPDATE_METADATA: עדכון רק של המטא-נתונים של מערך הנתונים. כדי להשתמש בערך הזה נדרשת ההרשאה bigquery.datasets.update.
  • ‫UPDATE_ACL: עדכון רק של אמצעי בקרת הגישה של מערך הנתונים. כדי להשתמש בערך הזה נדרשת ההרשאה bigquery.datasets.setIamPolicy.
  • ‫UPDATE_FULL: עדכון המטא-נתונים ואמצעי בקרת הגישה של מערך הנתונים. כדי להשתמש בערך הזה נדרשות ההרשאות bigquery.datasets.update ו-bigquery.datasets.setIamPolicy.

שינויים בהצהרות של שפת בקרת נתונים (DCL)

כשמצטרפים לאכיפה מוקדמת, נדרשות ההרשאות הבאות כדי להריץ הצהרות GRANT ו-REVOKE על מערכי נתונים באמצעות שפת בקרת נתונים (DCL):

  • bigquery.datasets.setIamPolicy

שינויים בשאילתות של INFORMATION_SCHEMAתצוגות מפורטות

כשמצטרפים לאכיפה מוקדמת, נדרשת ההרשאה bigquery.datasets.getIamPolicy כדי לשלוח שאילתות לתצוגה INFORMATION_SCHEMA.OBJECT_PRIVILEGES.

שינויים בשיטות API

אחרי שתביעו הסכמה לאכיפה מוקדמת, השיטות הבאות של API ל-REST בגרסה 2 יושפעו.

השיטה datasets.get

ל-method‏ datasets.get יש פרמטר שאילתה נוסף בשם dataset_view.

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

השדה access במשאב של מערך הנתונים מכיל את אמצעי בקרת הגישה של מערך הנתונים. השדות האחרים, כמו friendlyName,‏ description ו-labels, מייצגים את המטא-נתונים של מערך הנתונים.

בטבלה הבאה מוצגות ההרשאה הנדרשת והתגובה מה-API לערכים השונים שנתמכים בפרמטר dataset_view:

ערך הפרמטר ההרשאות הנדרשות תגובה מה-API
‫DATASET_VIEW_UNSPECIFIED (או ריק)
  • bigquery.datasets.get
  • bigquery.datasets.getIamPolicy
ערך ברירת המחדל. הפונקציה מחזירה את המטא-נתונים של מערך הנתונים ואת אמצעי בקרת הגישה.
METADATA
  • bigquery.datasets.get
הפונקציה מחזירה את המטא-נתונים של מערך הנתונים.
ACL
  • bigquery.datasets.getIamPolicy
מחזירה את אמצעי בקרת הגישה של מערך הנתונים, את שדות החובה ואת השדות במשאב של מערך הנתונים שהם פלט בלבד.
FULL
  • bigquery.datasets.get
  • bigquery.datasets.getIamPolicy
הפונקציה מחזירה את המטא-נתונים של מערך הנתונים ואת אמצעי בקרת הגישה.

אם לא תצטרפו לאכיפה המוקדמת, או אם תבטלו את ההצטרפות אחרי שהצטרפתם, תוכלו להשתמש בפרמטר dataset_view עם הערכים METADATA או ACL. ערכי ברירת המחדל של FULL ו-DATASET_VIEW_UNSPECIFIED (או ריק) הם ההתנהגות הקודמת. ההרשאה bigquery.datasets.get מאפשרת לקבל גם מטא-נתונים וגם אמצעי בקרת גישה.

דוגמה

בדוגמה הבאה נשלחת בקשת GET עם הפרמטר dataset_view שמוגדר ל-METADATA:

GET https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?datasetView=METADATA&key=YOUR_API_KEY HTTP/1.1

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

  • ‫YOUR_PROJECT: שם הפרויקט
  • ‫YOUR_DATASET: השם של מערך הנתונים
  • ‫YOUR_API_KEY: מפתח ה-API

השיטה datasets.update

לשיטה datasets.update יש פרמטר שאילתה נוסף בשם update_mode.

הפרמטר הזה נותן לכם יותר שליטה על השדות שמתעדכנים באמצעות השיטה datasets.update. במקום לאפשר תמיד עדכונים גם לבקרת הגישה וגם למטא-נתונים, הפרמטר update_mode מאפשר לכם לציין אם לעדכן רק את המטא-נתונים, רק את בקרת הגישה או את שניהם.

השדה access במשאב מערך הנתונים מכיל את אמצעי הבקרה לגישה למערך הנתונים. השדות האחרים, כמו friendlyName,‏ description ו-labels, מייצגים את המטא-נתונים של מערך הנתונים.

בטבלה הבאה מפורטות ההרשאות הנדרשות ותגובה מה-API לערכים השונים שנתמכים על ידי הפרמטר update_mode:

ערך הפרמטר ההרשאות הנדרשות תגובה מה-API
‫UPDATE_MODE_UNSPECIFIED (או ריק)
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
ערך ברירת המחדל. הפונקציה מחזירה את המטא-נתונים המעודכנים של מערך הנתונים ואת אמצעי בקרת הגישה.
UPDATE_METADATA
  • bigquery.datasets.update
הפונקציה מחזירה את המטא-נתונים המעודכנים של מערך הנתונים.
UPDATE_ACL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
מחזירה את אמצעי בקרת הגישה המעודכנים של מערך הנתונים, את שדות החובה ואת השדות במשאב של מערך הנתונים שהם רק לפלט.
UPDATE_FULL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
הפונקציה מחזירה את המטא-נתונים המעודכנים של מערך הנתונים ואת אמצעי בקרת הגישה.

אם לא תצטרפו לאכיפה המוקדמת, או אם תבטלו את ההצטרפות אחרי שהצטרפתם, BigQuery יחזור לברירת המחדל הקודמת: ההרשאה bigquery.datasets.update תאפשר לכם לעדכן גם את המטא-נתונים וגם את אמצעי בקרת הגישה.

דוגמה

בדוגמה הבאה נשלחת בקשת PUT עם הפרמטר update_mode שמוגדר ל-METADATA:

PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1

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

  • ‫YOUR_PROJECT: שם הפרויקט
  • ‫YOUR_DATASET: השם של מערך הנתונים
  • ‫YOUR_API_KEY: שם מפתח ה-API שלכם

השיטה datasets.patch

לשיטה datasets.patch יש פרמטר שאילתה נוסף בשם update_mode.

הפרמטר הזה נותן לכם יותר שליטה על השדות שמתעדכנים באמצעות השיטה datasets.patch. במקום לאפשר תמיד עדכונים גם של אמצעי בקרת הגישה וגם של המטא-נתונים, הפרמטר update_mode מאפשר לכם לציין אם לעדכן רק את המטא-נתונים, רק את אמצעי בקרת הגישה או את שניהם.

השדה access במשאב של מערך הנתונים מכיל את אמצעי בקרת הגישה של מערך הנתונים. השדות האחרים, כמו friendlyName,‏ description ו-labels, מייצגים את המטא-נתונים של מערך הנתונים.

בטבלה הבאה מפורטות ההרשאות הנדרשות ותגובה מה-API לערכים השונים שנתמכים על ידי הפרמטר update_mode:

ערך הפרמטר ההרשאות הנדרשות תגובה מה-API
‫UPDATE_MODE_UNSPECIFIED (או ריק)
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
ערך ברירת המחדל. הפונקציה מחזירה את המטא-נתונים המעודכנים של מערך הנתונים ואת אמצעי בקרת הגישה.
UPDATE_METADATA
  • bigquery.datasets.update
הפונקציה מחזירה את המטא-נתונים המעודכנים של מערך הנתונים.
UPDATE_ACL
  • bigquery.datasets.setIamPolicy
מחזירה את אמצעי בקרת הגישה המעודכנים של מערך הנתונים, את שדות החובה ואת השדות במשאב של מערך הנתונים שהם רק לפלט.
UPDATE_FULL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
הפונקציה מחזירה את המטא-נתונים המעודכנים של מערך הנתונים ואת אמצעי בקרת הגישה.

אם לא תצטרפו לאכיפה המוקדמת, או אם תבטלו את ההצטרפות אחרי שהצטרפתם, BigQuery יחזור לברירת המחדל הקודמת: ההרשאה bigquery.datasets.update תאפשר לכם לעדכן גם את המטא-נתונים וגם את אמצעי בקרת הגישה.

דוגמה

בדוגמה הבאה נשלחת בקשת PUT עם הפרמטר update_mode שמוגדר ל-METADATA:

PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1

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

  • ‫YOUR_PROJECT: שם הפרויקט
  • ‫YOUR_DATASET: השם של מערך הנתונים
  • ‫YOUR_API_KEY: שם מפתח ה-API שלכם

השיטה datasets.insert

אם אתם מצטרפים לאכיפה המוקדמת ומשתמשים בשיטה datasets.insert כדי ליצור מערך נתונים עם אמצעי בקרת גישה, BigQuery מוודא שההרשאות bigquery.datasets.create ו-bigquery.datasets.setIamPolicy ניתנו למשתמש.

אם אתם משתמשים ב-API כדי ליצור קבוצת נתונים בלי בקרת גישה, נדרשת רק ההרשאה bigquery.datasets.create.