בקרת גישה מפורטת ב-Spanner משלבת את היתרונות של ניהול זהויות והרשאות גישה (IAM) עם בקרת גישה המבוססת על תפקידים (RBAC) ב-SQL. באמצעות בקרת גישה מפורטת (FGAC), אתם מגדירים תפקידים במסד הנתונים, נותנים הרשאות לתפקידים ויוצרים כללי מדיניות של IAM כדי לתת הרשאות לתפקידים במסד הנתונים לישויות מורשות ב-IAM. בדף הזה מוסבר איך להשתמש בבקרת גישה מפורטת ב-Spanner למסדי נתונים בניב GoogleSQL ולמסדי נתונים בניב PostgreSQL.
כאדמין, עליך להפעיל בקרת גישה מפורטת (FGAC) עבור ישויות מורשות ספציפיות ב-IAM. ישויות מורשות שמופעלת בהן בקרת גישה מפורטת (FGAC) ("משתמשים עם בקרת גישה מפורטת") צריכות לקבל תפקיד במסד הנתונים כדי לגשת למשאבים של Spanner.
הגישה למשאבים של משתמשים שאין להם בקרת גישה פרטנית מנוהלת על ידי תפקידים ברמת מסד הנתונים ב-IAM. בקרת גישה מפורטת (FGAC) תואמת באופן מלא לבקרת הגישה הקיימת של IAM ברמת מסד הנתונים, והן יכולות להתקיים זו לצד זו. אתם יכולים להשתמש בו כדי לגשת לאובייקטים ספציפיים במסד הנתונים. כדי לשלוט בגישה למסד הנתונים כולו, משתמשים בתפקידי IAM.
בעזרת בקרת גישה פרטנית, אתם יכולים לשלוט בגישה לטבלאות, לעמודות, לתצוגות ולסנכרון שינויים בזרמי נתונים.
כדי לנהל בקרת גישה פרטנית, משתמשים בהצהרות ה-DDL הבאות:
- הצהרות
CREATEו-DROPליצירה ולביטול של תפקידים במסד הנתונים. תפקידים במסד נתונים הם אוספים של הרשאות. אפשר ליצור עד 100 תפקידים במסד נתונים. הצהרות
GRANTו-REVOKEכדי להעניק ולבטל הרשאות לתפקידים במסד הנתונים. ההרשאות כוללות אתSELECT,INSERT,UPDATE,DELETEו-EXECUTE. שמות ההרשאות תואמים להצהרות ה-SQL בעלות השמות הדומים. לדוגמה, תפקיד עם ההרשאהINSERTיכול להריץ את הצהרת ה-SQLINSERTבטבלאות שצוינו בהצהרהGRANT.הצהרות ה-DDL הבאות מעניקות את ההרשאה
SELECTבטבלהemployeesלתפקידhr_repבמסד הנתונים.GoogleSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO ROLE hr_rep;PostgreSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO hr_rep;למידע נוסף על הרשאות, ראו הפניית הרשאות לבקרת גישה ברמת פירוט גבוהה.
הצהרות
GRANTלהקצאת תפקידים לתפקידים אחרים כדי ליצור היררכיות של תפקידים, עם ירושה של הרשאות.
תרחישים לדוגמה
הנה כמה דוגמאות לתרחישים לדוגמה של בקרת גישה פרטנית:
- מערכת מידע של משאבי אנוש שכוללת תפקידים של ניתוח נתוני תגמול על מכירות, ניהול מכירות וניתוח נתוני משאבי אנוש, שלכל אחד מהם יש רמות גישה שונות לנתונים. לדוגמה, מנתחי תגמולים ומנהלי מכירות לא צריכים לראות מספרי תעודות זהות.
- אפליקציה לשיתוף נסיעות עם חשבונות שירות והרשאות שונים לנוסעים ולנהגים.
- פנקס חשבונות שמאפשר פעולות
SELECTו-INSERT, אבל לא פעולותUPDATEו-DELETE.
משאבי Spanner וההרשאות שלהם
ברשימה הבאה מפורטים המשאבים של Spanner והרשאות הגישה המפורטות שאפשר לתת להם.
- סכימות
- אפשר להעניק את ההרשאה
USAGEבסכימות לתפקידים ספציפיים במסד הנתונים. בסכימה שהיא לא ברירת המחדל, לתפקידים במסד הנתונים צריכה להיות הרשאתUSAGEכדי לגשת לאובייקטים במסד הנתונים. בדיקת ההרשאות נראית כך:
האם יש לך USAGE בסכימה?
לא: דחיית הגישה.
כן: האם יש לך גם את ההרשאות המתאימות בטבלה?
לא: דחיית הגישה.
כן: אתם יכולים לגשת לטבלה.
- Tables
- אתם יכולים להעניק את ההרשאות
SELECT,INSERT,UPDATEו-DELETEבטבלאות לתפקידים במסד הנתונים. בטבלאות משולבות, הרשאה שניתנה בטבלת ההורה לא מועברת לטבלת הצאצא. - Columns
- אפשר להעניק את ההרשאות
SELECT,INSERTו-UPDATEלקבוצת משנה של עמודות בטבלה. ההרשאה תקפה רק לעמודות האלה.DELETEלא מותרת ברמת העמודה. - תצוגות
- אפשר להעניק הרשאת
SELECTבתצוגה. רקSELECTנתמך בתצוגות. ב-Spanner יש תמיכה גם בתצוגות עם זכויות של המפעיל וגם בתצוגות עם זכויות של המגדיר. אם יוצרים תצוגה עם הרשאות של מפעיל, כדי לשלוח שאילתה לתצוגה, לתפקיד או למשתמש במסד הנתונים צריכה להיות הרשאתSELECTבתצוגה, וגם הרשאתSELECTבאובייקטים הבסיסיים שאליהם מפנים בתצוגה. אם יוצרים תצוגה עם זכויות של מגדיר, כדי לשלוח שאילתה לתצוגה, לתפקיד או למשתמש במסד הנתונים נדרשת רק ההרשאהSELECTבתצוגה. מידע נוסף זמין במאמר סקירה כללית על תצוגות. - סנכרון שינויים בזרמי נתונים
- אפשר להעניק את ההרשאה
SELECTעל סנכרון שינויים בזרמי נתונים. צריך גם להעניק את ההרשאהEXECUTEלפונקציית הקריאה שמשויכת לסנכרון שינויים בזרמי נתונים. מידע נוסף זמין במאמר בקרת גישה מפורטת לשינויים בזרמי נתונים. - רצפים
- אפשר להעניק
SELECTוUPDATEעל רצפים. מידע נוסף זמין במאמר בקרת גישה מפורטת לרצפים. - מודלים
- אפשר להעניק את ההרשאה
EXECUTEבמודלים. מידע נוסף זמין במאמר בקרת גישה מפורטת למודלים.
תפקידים במערכת בקרת גישה פרטנית
בבקרת גישה פרטנית יש תפקידי מערכת מוגדרים מראש לכל מסד נתונים. בדומה לתפקידים במסד הנתונים שמוגדרים על ידי המשתמש, תפקידי המערכת יכולים לשלוט בגישה למשאבי Spanner.
לדוגמה, משתמש עם בקרת גישה מפורטת (FGAC) צריך לקבל את תפקיד המערכת spanner_sys_reader כדי לגשת ל-Key Visualizer, ואת תפקיד המערכת spanner_info_reader כדי לראות תוצאות לא מסוננות כשהוא שולח שאילתות לטבלאות INFORMATION_SCHEMA.
מידע נוסף זמין במאמר תפקידי מערכת לבקרת גישה מפורטת (FGAC).
היררכיות וירושה של תפקידים במסד הנתונים
אתם יכולים ליצור היררכיות של תפקידים במסד הנתונים, שבהן תפקידי צאצא יורשים את ההרשאות של תפקידי הורה. תפקידי הצאצא נקראים חברים בתפקיד ההורה.
לדוגמה, נבחן את ההצהרות הבאות של GRANT:
GoogleSQL
GRANT SELECT ON TABLE employees TO ROLE pii_access;
GRANT ROLE pii_access TO ROLE hr_manager, hr_director;
PostgreSQL
GRANT SELECT ON TABLE employees TO pii_access;
GRANT pii_access TO hr_manager, hr_director;
hr_manager ו-hr_director הם חברים בתפקיד pii_access, והם מקבלים בירושה את ההרשאה SELECT בטבלה employees.

גם ל-hr_manager ול-hr_director יכולים להיות חברים, והחברים האלה יקבלו בירושה את ההרשאה SELECT ב-employees.
אין מגבלות על עומק היררכיית התפקידים, אבל ביצועי השאילתות עלולים להיפגע במבנים עמוקים ורחבים של היררכיית תפקידים.
גיבוי ושחזור
גיבויים של Spanner כוללים הגדרות של תפקידים במסד הנתונים. כשמשחזרים מסד נתונים מגיבוי, התפקידים במסד הנתונים נוצרים מחדש עם ההרשאות שניתנו להם. עם זאת, כללי מדיניות IAM לא נכללים בגיבויים של מסדי נתונים, ולכן צריך להקצות מחדש את הגישה לתפקידים במסד הנתונים לחשבונות הראשיים במסד הנתונים ששוחזר.
סקירה כללית על הגדרת בקרת גישה פרטנית
אלה השלבים הכלליים שצריך לבצע כדי להתחיל לאבטח נתונים באמצעות בקרת גישה מפורטת (FGAC). לפרטים נוספים, קראו את המאמר הגדרת בקרת גישה מפורטת (FGAC).
כדי לבצע את המשימות האלה, צריך לקבל את התפקידים roles/spanner.admin או roles/spanner.databaseAdmin ב-IAM.
- יוצרים תפקידים במסד הנתונים ומקצים להם הרשאות.
- אופציונלי: אפשר ליצור היררכיות של תפקידים עם ירושה על ידי הקצאת תפקידים לתפקידים אחרים.
- מבצעים את השלבים הבאים לכל חשבון משתמש שרוצים להגדיר לו בקרת גישה ברמת פירוט גבוהה:
- מפעילים בקרת גישה פרטנית לחשבון הראשי.
לאחר מכן, לחשבון הראשי מוענק באופן אוטומטי התפקיד
publicבמסד הנתונים, שאין לו הרשאות כברירת מחדל. זו פעולה חד-פעמית לכל חשבון משתמש. - מקצים לחשבון המשתמש הרשאות IAM בתפקיד אחד או יותר במסד הנתונים.
- אחרי שחשבון המשתמש מקבל את כל התפקידים הנדרשים במסד הנתונים, אם יש לו תפקידי IAM ברמת מסד הנתונים, כדאי לבטל את התפקידים ברמת מסד הנתונים כדי שבקרת הגישה של חשבון המשתמש תנוהל בשיטה אחת בלבד.
- מפעילים בקרת גישה פרטנית לחשבון הראשי.
לאחר מכן, לחשבון הראשי מוענק באופן אוטומטי התפקיד
מגבלות
- פעולות ייצוא לא מייצאות תפקידים והרשאות של מסד נתונים, ופעולות ייבוא לא יכולות לייבא אותם. אחרי שהייבוא מסתיים, צריך להגדיר באופן ידני את התפקידים וההרשאות.
- הכרטיסייה Data בדף TABLE במסוף Google Cloud לא זמינה למשתמשים עם בקרת גישה מפורטת (FGAC).