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

בקרת הגישה הפרטנית ב-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.

לדוגמה, למשתמש עם בקרת גישה ברמת דיוק גבוהה צריך להיות תפקיד המערכת spanner_sys_reader כדי לגשת ל-Key Visualizer, ותפקיד המערכת spanner_info_reader כדי לראות תוצאות לא מסוננות כשמבצעים שאילתה בטבלאות INFORMATION_SCHEMA.

מידע נוסף מופיע במאמר בנושא תפקידים במערכת בקרת גישה ברמת פירוט גבוהה.

היררכיות וירושה של תפקידים במסד נתונים

אפשר ליצור היררכיות של תפקידים במסד נתונים, שבהן תפקידי צאצא מקבלים בירושה את ההרשאות של תפקידי הורה. תפקידי צאצא נקראים חברים בתפקיד ההורה.

לדוגמה, נניח את ההצהרות הבאות של 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 לא זמינה למשתמשים עם בקרת גישה מפורטת.

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