סקירה כללית על בקרת גישה פרטנית

בקרת הגישה הפרטנית ב-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 יכול להריץ את הצהרת ה-SQL‏ INSERT בטבלאות שמצוינות בהצהרת 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.

  1. ליצור תפקידים במסד הנתונים ולהעניק הרשאות לתפקידים.
  2. אופציונלי: אפשר ליצור היררכיות של תפקידים עם ירושה על ידי הקצאת תפקידים לתפקידים אחרים.
  3. מבצעים את השלבים הבאים לכל גורם (principal) שרוצים להגדיר לו הרשאות גישה ברמת גרנולריות גבוהה:
    1. הפעלת בקרת גישה פרטנית עבור הגורם המורשה. לאחר מכן מוענק לחשבון הראשי באופן אוטומטי תפקיד מסד הנתונים public, שאין לו הרשאות כברירת מחדל. זוהי פעולה חד-פעמית לכל גורם ראשי.
    2. מעניקים לישות המורשית הרשאות IAM בתפקיד אחד או יותר במסד הנתונים.
    3. אחרי שמקצים לחשבון המשתמש את כל התפקידים הנדרשים במסד הנתונים, אם לחשבון המשתמש יש תפקידים ב-IAM ברמת מסד הנתונים, כדאי לבטל את התפקידים ברמת מסד הנתונים כדי שניהול בקרת הגישה של חשבון המשתמש יתבצע רק בשיטה אחת.

מגבלות

  • פעולות ייצוא לא מייצאות תפקידים והרשאות במסד הנתונים, ופעולות ייבוא לא יכולות לייבא אותם. אחרי השלמת הייבוא, צריך להגדיר את התפקידים וההרשאות באופן ידני.
  • הכרטיסייה Data בדף TABLE במסוף Google Cloud לא זמינה למשתמשים עם בקרת גישה ברמת גרנולריות גבוהה.

המאמרים הבאים