בדף הזה מתוארות ההרשאות שאפשר להקצות לתפקיד במסד הנתונים לצורך בקרת גישה מפורטת (FGAC). המידע הזה רלוונטי גם למסדי נתונים עם ניב GoogleSQL וגם למסדי נתונים עם ניב PostgreSQL.
למידע נוסף על תפקידים במסד הנתונים ועל בקרת גישה מפורטת, קראו את הסקירה הכללית על בקרת גישה מפורטת.
בטבלה הבאה מוצגות הרשאות הגישה הפרטניות ואובייקטי מסד הנתונים שאפשר להעניק להם את ההרשאות האלה.
| בחירה | הוספה | עדכון | מחיקה | EXECUTE | שימוש | |
|---|---|---|---|---|---|---|
| סכימה | ✓ | |||||
| טבלה | ✓ | ✓ | ✓ | ✓ | ||
| עמודה | ✓ | ✓ | ✓ | ✓ | ||
| הצגה | ✓ | |||||
| סנכרון שינויים בזרמי נתונים | ✓ | |||||
| פונקציית קריאה של סנכרון שינויים בזרמי נתונים | ✓ | |||||
| רצף | ✓ | ✓ | ||||
| דגם | ✓ |
בקטעים הבאים מפורט מידע על כל הרשאה.
SELECT
מאפשרת לתפקיד לקרוא או לשלוח שאילתות מטבלה, מתצוגה, מסנכרון שינויים בזרמי נתונים, מרצף או ממודל.
אם מצוינת רשימת עמודות לטבלה, ההרשאה תקפה רק לעמודות האלה. אם לא צוינה רשימת עמודות, ההרשאה תקפה לכל העמודות בטבלה, כולל עמודות שנוספו לאחר מכן. אי אפשר להשתמש ברשימת עמודות בתצוגה.
ב-Spanner יש תמיכה גם בתצוגות של זכויות המפעיל וגם בתצוגות של זכויות המגדיר. מידע נוסף זמין במאמר סקירה כללית על תצוגות.
אם יוצרים תצוגה עם הרשאות של מפעיל, כדי לשלוח שאילתה לתצוגה, לתפקיד או למשתמש במסד הנתונים צריכה להיות הרשאת
SELECTבתצוגה, וגם הרשאתSELECTבאובייקטים הבסיסיים שאליהם מפנים בתצוגה. לדוגמה, נניח שהתצוגהSingerNamesנוצרה בטבלהSingers.CREATE VIEW SingerNames SQL SECURITY INVOKER AS SELECT Singers.SingerId, Singers.FirstName, Singers.LastName FROM Singers;נניח שהתפקיד
myRoleבמסד הנתונים מבצע את השאילתהSELECT * FROM SingerNames. לתפקיד צריכה להיות הרשאתSELECTבתצוגה, והרשאתSELECTבשלוש העמודות שאליהן מפנים או בטבלהSingersכולה.אם יוצרים תצוגה עם הרשאות של מגדיר, כדי לשלוח שאילתה לתצוגה, התפקיד או המשתמש במסד הנתונים צריכים רק את ההרשאה
SELECTבתצוגה. לדוגמה, נניח שהתצוגהAlbumsBudgetנוצרה בטבלהAlbums.CREATE VIEW AlbumsBudget SQL SECURITY DEFINER AS SELECT Albums.Id, Albums.AlbumTitle, MarketingBudget FROM Albums;נניח שהתפקיד
Analystבמסד הנתונים מבצע את השאילתהSELECT * FROM AlbumsBudget. לתפקיד נדרשת רק הרשאתSELECTבתצוגה. הוא לא צריך את ההרשאהSELECTבשלוש העמודות שאליהן מפנים או בטבלהAlbums.אחרי שמעניקים את ההרשאה
SELECTלקבוצת משנה של עמודות בטבלה, המשתמש עם בקרת גישה מפורטת (FGAC) לא יכול יותר להשתמש בהרשאהSELECT *בטבלה הזו. בשאילתות בטבלה הזו צריך לציין את כל העמודות שרוצים לכלול.הרשאת
SELECTשניתנה בעמודה שנוצרה לא מעניקה הרשאתSELECTבעמודות הבסיס שעליהן היא מבוססת.בטבלאות משולבות, ההרשאה
SELECTשניתנה בטבלת ההורה לא מועברת לטבלת הצאצא.כשמעניקים את ההרשאה
SELECTבסנכרון שינויים בזרמי נתונים, צריך גם להעניק את ההרשאהEXECUTEבפונקציה עם ערך טבלה של סנכרון שינויים בזרם הנתונים. מידע נוסף זמין במאמר EXECUTE.כשמשתמשים ב-
SELECTעם פונקציית צבירה בעמודות ספציפיות, לדוגמהSUM(col_a), לתפקיד צריכה להיות הרשאתSELECTבעמודות האלה. אם פונקציית הצבירה לא מציינת עמודות, למשלCOUNT(*), לתפקיד צריכה להיות ההרשאהSELECTלפחות בעמודה אחת בטבלה.כשמשתמשים ב-
SELECTעם רצף, אפשר לראות רק רצפים שיש לכם הרשאות לצפות בהם.
דוגמאות לשימוש ב-GRANT SELECT
GoogleSQL
GRANT SELECT ON TABLE employees TO ROLE hr_director; GRANT SELECT ON TABLE customers, orders, items TO ROLE account_mgr; GRANT SELECT(name, level, cost_center, location, manager) ON TABLE employees TO ROLE hr_manager; GRANT SELECT(name, address, phone) ON TABLE employees, contractors TO ROLE hr_rep; GRANT SELECT ON VIEW orders_view TO ROLE hr_manager; GRANT SELECT ON CHANGE STREAM ordersChangeStream TO ROLE hr_analyst; GRANT SELECT ON SEQUENCE sequence_name TO ROLE role_name;
PostgreSQL
GRANT SELECT ON TABLE employees TO hr_director; GRANT SELECT ON TABLE customers, orders, items TO account_mgr; GRANT SELECT(name, level, cost_center, location, manager) ON TABLE employees TO hr_manager; GRANT SELECT(name, address, phone) ON TABLE employees, contractors TO hr_rep; GRANT SELECT ON TABLE orders_view TO hr_manager; // orders_view is an invoker rights view GRANT SELECT ON CHANGE STREAM orders_change_stream TO hr_analyst; GRANT SELECT ON SEQUENCE sequence_name TO hr_package;
INSERT
מאפשרת לתפקיד להוסיף שורות לטבלאות שצוינו. אם מציינים רשימת עמודות, ההרשאה תקפה רק לעמודות האלה. אם לא צוינה רשימת עמודות, ההרשאה תקפה לכל העמודות בטבלה.
אם מציינים שמות של עמודות, כל עמודה שלא נכללת מקבלת את ערך ברירת המחדל שלה בזמן ההוספה.
אי אפשר להעניק את ההרשאה
INSERTבעמודות שנוצרו.
דוגמאות לשימוש ב-GRANT INSERT
GoogleSQL
GRANT INSERT ON TABLE employees, contractors TO ROLE hr_manager; GRANT INSERT(name, address, phone) ON TABLE employees TO ROLE hr_rep;
PostgreSQL
GRANT INSERT ON TABLE employees, contractors TO hr_manager; GRANT INSERT(name, address, phone) ON TABLE employees TO hr_rep;
UPDATE
התפקיד מאפשר לעדכן שורות בטבלאות שצוינו. אפשר להגביל את העדכונים לקבוצת משנה של עמודות בטבלה. כשמשתמשים בהרשאה הזו עם רצפים, היא מאפשרת לתפקיד להפעיל את הפונקציה get-next-sequence-value ברצף.
בנוסף להרשאה UPDATE, התפקיד צריך את ההרשאה SELECT בכל העמודות ששלחתם לגביהן שאילתה. העמודות שנכללות בשאילתה כוללות עמודות בסעיף WHERE.
אי אפשר להעניק את ההרשאה UPDATE בעמודות שנוצרו.
דוגמאות לשימוש ב-GRANT UPDATE
GoogleSQL
GRANT UPDATE ON TABLE employees, contractors TO ROLE hr_manager; GRANT UPDATE(name, address, phone) ON TABLE employees TO ROLE hr_rep;
PostgreSQL
GRANT UPDATE ON TABLE employees, contractors TO hr_manager; GRANT UPDATE(name, address, phone) ON TABLE employees TO hr_rep;
DELETE
מאפשרת לתפקיד למחוק שורות מהטבלאות שצוינו.
אי אפשר להעניק את ההרשאה
DELETEברמת העמודה.התפקיד צריך גם את ההרשאה
SELECTבכל העמודות שעשויות להיכלל בסעיפיWHEREשל השאילתה.בטבלאות משולבות במסדי נתונים בניב GoogleSQL, ההרשאה
DELETEנדרשת רק בטבלת ההורה. אם בטבלת הצאצא מצויןON DELETE CASCADE, שורות מטבלת הצאצא נמחקות גם בלי ההרשאהDELETEבטבלת הצאצא.
דוגמה לשימוש ב-GRANT DELETE
GoogleSQL
GRANT DELETE ON TABLE employees, contractors TO ROLE hr_admin;
PostgreSQL
GRANT DELETE ON TABLE employees, contractors TO hr_admin;
EXECUTE
כשנותנים את ההרשאה SELECT לסנכרון שינויים בזרמי נתונים, צריך לתת גם את ההרשאה EXECUTE לפונקציית הקריאה של סנכרון שינויים בזרמי הנתונים. מידע נוסף זמין במאמר פונקציות קריאה ותחביר של שאילתות ב-סנכרון שינויים בזרמי נתונים.
כשמשתמשים בתפקיד הזה עם מודלים, הוא מאפשר להשתמש במודל בפונקציות של למידת מכונה.
דוגמה לשימוש ב-GRANT EXECUTE
בדוגמה הבאה מוסבר איך להעניק את ההרשאה EXECUTE לפונקציית הקריאה של סנכרון שינויים בזרמי נתונים בשם my_change_stream.
GoogleSQL
GRANT EXECUTE ON TABLE FUNCTION READ_my_change_stream TO ROLE hr_analyst;
PostgreSQL
GRANT EXECUTE ON FUNCTION spanner.read_json_my_change_stream TO hr_analyst;
שימוש
כשמעניקים את ההרשאה USAGE לסכימה בעלת שם, היא מספקת הרשאות גישה לאובייקטים שכלולים בסכימה בעלת השם. כברירת מחדל, ההרשאה USAGE ניתנת לסכימת ברירת המחדל.
המאמרים הבאים
- הגדרת בקרת גישה פרטנית
- סקירה כללית על בקרת גישה פרטנית
- הצהרות GRANT ו-REVOKE (מסדי נתונים בניב GoogleSQL)
- הצהרות GRANT ו-REVOKE (מסדי נתונים בניב PostgreSQL)