בקרת הגישה הפרטנית ב-Spanner משלבת את היתרונות של ניהול זהויות והרשאות גישה (IAM) עם בקרת גישה מבוססת-תפקידים ב-SQL. באמצעות בקרת גישה פרטנית, אתם מגדירים תפקידים במסד הנתונים, מעניקים הרשאות לתפקידים ויוצרים מדיניות IAM כדי להעניק הרשאות לתפקידים במסד הנתונים לחשבונות משתמשים ב-IAM. בדף הזה מוסבר איך להשתמש בבקרת גישה ברמת גרנולריות גבוהה עם Spanner למסדי נתונים של GoogleSQL ולמסדי נתונים של PostgreSQL.
אדמינים צריכים להפעיל בקרת גישה מפורטת עבור כל אחד מהמשתמשים ב-IAM. משתמשים שמוגדרת להם בקרת גישה פרטנית (נקראים גם 'משתמשים עם בקרת גישה פרטנית') צריכים לקבל תפקיד במסד הנתונים כדי לגשת למשאבי Spanner.
הגישה למשאבים של משתמשים שלא הוגדרה להם בקרת גישה פרטנית מנוהלת על ידי תפקידים ברמת מסד הנתונים ב-IAM. בקרת גישה פרטנית תואמת באופן מלא לבקרת גישה קיימת ברמת מסד הנתונים של 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.
לדוגמה, כדי שלמשתמש עם בקרת גישה ברמת גרנולריות גבוהה תהיה גישה ל-Key Visualizer, צריך להקצות לו את תפקיד המערכת spanner_sys_reader. כדי שהוא יוכל לראות תוצאות לא מסוננות כשהוא שולח שאילתות לטבלאות INFORMATION_SCHEMA, צריך להקצות לו את תפקיד המערכת spanner_info_reader.
מידע נוסף מופיע במאמר בנושא תפקידים במערכת בקרת גישה ברמת פירוט גבוהה.
היררכיות של תפקידים במסד נתונים וירושה
אתם יכולים ליצור היררכיות של תפקידים במסד הנתונים, שבהן תפקידי צאצא מקבלים בירושה את ההרשאות של תפקידי הורה. תפקידי צאצא נקראים חברים בתפקיד ההורה.
לדוגמה, נבחן את ההצהרות הבאות של 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 לא נכללת בגיבויים של מסדי נתונים, ולכן צריך להעניק מחדש גישה לתפקידים במסד הנתונים לגורמים המורשים במסד הנתונים המשוחזר.
סקירה כללית על הגדרת בקרת גישה פרטנית
אלה השלבים הכלליים שצריך לבצע כדי להתחיל לאבטח נתונים באמצעות בקרת גישה ברמת גרנולריות גבוהה. פרטים נוספים זמינים במאמר בנושא הגדרת בקרת גישה ברמת דיוק גבוהה.
כדי לבצע את המשימות האלה, צריך לקבל את תפקידי ה-IAM roles/spanner.admin או roles/spanner.databaseAdmin.
- ליצור תפקידים במסד הנתונים ולהעניק הרשאות לתפקידים.
- אופציונלי: אפשר ליצור היררכיות של תפקידים עם ירושה על ידי הקצאת תפקידים לתפקידים אחרים.
- מבצעים את השלבים הבאים לכל גורם (principal) שרוצים להגדיר לו הרשאות גישה ברמת גרנולריות גבוהה:
- הפעלת בקרת גישה פרטנית עבור הגורם המורשה.
לאחר מכן מוענק לחשבון הראשי באופן אוטומטי תפקיד מסד הנתונים
public, שאין לו הרשאות כברירת מחדל. זוהי פעולה חד-פעמית לכל גורם ראשי. - מעניקים לישות המורשית הרשאות IAM בתפקיד אחד או יותר במסד הנתונים.
- אחרי שמקצים לחשבון המשתמש את כל התפקידים הנדרשים במסד הנתונים, אם לחשבון המשתמש יש תפקידים ב-IAM ברמת מסד הנתונים, כדאי לבטל את התפקידים ברמת מסד הנתונים כדי שניהול בקרת הגישה של חשבון המשתמש יתבצע רק בשיטה אחת.
- הפעלת בקרת גישה פרטנית עבור הגורם המורשה.
לאחר מכן מוענק לחשבון הראשי באופן אוטומטי תפקיד מסד הנתונים
מגבלות
- פעולות ייצוא לא מייצאות תפקידים והרשאות במסד הנתונים, ופעולות ייבוא לא יכולות לייבא אותם. אחרי השלמת הייבוא, צריך להגדיר את התפקידים וההרשאות באופן ידני.
- הכרטיסייה Data בדף TABLE במסוף Google Cloud לא זמינה למשתמשים עם בקרת גישה ברמת גרנולריות גבוהה.
המאמרים הבאים
- גישה למסד נתונים עם בקרת גישה פרטנית
- בקרת גישה פרטנית לסנכרון שינויים בזרמי נתונים
- הגדרת בקרת גישה פרטנית
- הפניה להרשאות של בקרת גישה פרטנית
- תפקידים במערכת בקרת גישה פרטנית
- דוחות של GoogleSQL
GRANTושלREVOKE - הצהרות של
GRANTו-REVOKEב-PostgreSQL - בקרת גישה פרטנית לרצפים
- בקרת גישה פרטנית למודלים