התצוגה OBJECT_PRIVILEGES
התצוגה INFORMATION_SCHEMA.OBJECT_PRIVILEGES מכילה מטא-נתונים לגבי קישורי בקרת גישה שהוגדרו באופן מפורש באובייקטים של BigQuery.
התצוגה הזו לא מכילה מטא-נתונים לגבי ההרשאות לבקרת גישה שעברו בירושה.
ההרשאות הנדרשות
כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.OBJECT_PRIVILEGES, צריך את ההרשאות הבאות בממשק לניהול זהויות והרשאות גישה (IAM):
bigquery.datasets.getלמערכי נתונים.-
bigquery.tables.getIamPolicyלטבלאות ולתצוגות.
מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.
סכימה
כשמבצעים שאילתה בתצוגה INFORMATION_SCHEMA.OBJECT_PRIVILEGES, תוצאות השאילתה מכילות שורה אחת לכל קשירת בקרת גישה למשאב.
לתצוגה INFORMATION_SCHEMA.OBJECT_PRIVILEGES יש את הסכימה הבאה:
| שם העמודה | סוג נתונים | ערך |
|---|---|---|
object_catalog |
STRING |
מזהה הפרויקט שמכיל את המשאב. |
object_schema |
STRING |
שם מערך הנתונים שמכיל את המשאב. NULL אם המשאב עצמו הוא מערך נתונים. |
object_name |
STRING |
השם של הטבלה, התצוגה או מערך הנתונים שהמדיניות חלה עליהם. |
object_type |
STRING |
סוג המשאב, כמו SCHEMA (dataset), TABLE, VIEW ו-EXTERNAL.
|
privilege_type |
STRING |
מזהה התפקיד, למשל roles/bigquery.dataEditor. |
grantee |
STRING |
סוג המשתמש והמשתמש שהתפקיד הוקצה לו. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן אזור. מזהה הפרויקט הוא אופציונלי. אם לא מציינים מזהה פרויקט, המערכת משתמשת בפרויקט שבו מופעלת השאילתה. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES |
ברמת הפרויקט | REGION |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: כל שם של אזור במערך נתונים. לדוגמה,`region-us`.
דוגמה
-- Returns metadata for the access control bindings for mydataset.
SELECT * FROM myproject.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset";
מגבלות
- השאילתות של
OBJECT_PRIVILEGESצריכות להכיל פסקה שלWHEREשמגבילה את השאילתות לקבוצת נתונים, לטבלה או לתצוגה אחת. - בשביל לשלוח שאילתות לאחזור מטא-נתונים של בקרת גישה למערך נתונים, צריך לציין את
object_name. - בשאילתות לאחזור מטא-נתונים של בקרת גישה לטבלה או לתצוגה, צריך לציין גם את
object_nameוגם אתobject_schema.
דוגמאות
בדוגמה הבאה מאחזרים את כל העמודות מהתצוגה INFORMATION_SCHEMA.OBJECT_PRIVILEGES.
כדי להריץ את השאילתה על פרויקט אחר ולא על הפרויקט שבו השאילתה מורצת, מוסיפים את מזהה הפרויקט לאזור בפורמט הבא: `project_id`.`region_id`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES.
בדוגמה הבאה מוצגים כל המטא-נתונים של בקרת הגישה של מערך הנתונים mydataset בפרויקט mycompany:
SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset"
התוצאות צריכות להיראות כך:
+----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+ | object_catalog | object_schema | object_name | object_type | privilege_type | grantee | +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+ | mycompany | NULL | mydataset | SCHEMA | roles/bigquery.dataEditor | projectEditor:mycompany | +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+ | mycompany | NULL | mydataset | SCHEMA | roles/bigquery.dataOwner | projectOwner:mycompany | +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+ | mycompany | NULL | mydataset | SCHEMA | roles/bigquery.dataOwner | user:cloudysanfrancisco@gmail.com | +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+ | mycompany | NULL | mydataset | SCHEMA | roles/bigquery.dataViwer | projectViewer:mycompany | +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
בדוגמה הבאה מוצג כל המידע על בקרת הגישה לטבלה testdata במערך הנתונים mydataset:
SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_schema = "mydataset" AND object_name = "testdata"
התוצאות צריכות להיראות כך:
+----------------+---------------+--------------+-------------+----------------------+------------------------------------+ | object_catalog | object_schema | object_name | object_type | privilege_type | grantee | +----------------+---------------+--------------+-------------+----------------------+------------------------------------+ | mycompany | mydataset | testdata | TABLE | roles/bigquery.admin | user:baklavainthebalkans@gmail.com | +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
בתצוגה INFORMATION_SCHEMA.OBJECT_PRIVILEGES מוצגים רק קישורי בקרת גישה שהוגדרו באופן מפורש. בדוגמה הראשונה אפשר לראות שלמשתמש cloudysanfrancisco@gmail.com
יש את התפקיד bigquery.dataOwner במערך הנתונים mydataset. המשתמש
cloudysanfrancisco@gmail.com מקבל בירושה הרשאות ליצור, לעדכן ולמחוק טבלאות ב-mydataset, כולל הטבלה testdata. עם זאת, מכיוון שההרשאות האלה לא ניתנו באופן מפורש בטבלה testdata, הן לא מופיעות בתוצאות של הדוגמה השנייה.