בקרת גישה פרטנית לסנכרון שינויים בזרמי נתונים

בדף הזה מוסבר איך בקרת גישה פרטנית פועלת עם סנכרון שינויים בזרמי נתונים ב-Spanner עבור מסדי נתונים בניב GoogleSQL ומסדי נתונים בניב PostgreSQL.

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

  • הענקת הרשאה SELECT בזרם השינויים.

    GoogleSQL

    GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE ROLE_NAME;

    PostgreSQL

    GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE_NAME;
  • נותנים הרשאה EXECUTE בפונקציית הקריאה שנוצרת באופן אוטומטי עבור ה-change stream. משתמשים בפונקציית הקריאה כדי לקרוא רשומות של שינויים.

    GoogleSQL

    GRANT EXECUTE ON TABLE FUNCTION READ_FUNCTION_NAME TO ROLE ROLE_NAME;

    PostgreSQL

    GRANT EXECUTE ON FUNCTION READ_FUNCTION_NAME TO ROLE_NAME;

    מידע על מוסכמות למתן שמות לפונקציות קריאה של שינוי נתונים ועל פורמט המידע שמוחזר על ידי הפונקציות האלה זמין בנושאים הבאים:

INFORMATION_SCHEMA צפיות בסנכרון שינויים בזרמי נתונים

בתצוגות הבאות מוצגים תפקידים במסד הנתונים ופרטי הרשאות של מקורות נתונים לשינויים:

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

סינון שורות חל גם על התצוגות הבאות שקשורות לזרמי שינויים:

GoogleSQL

תפקיד המערכת spanner_info_reader והמשתמשים שמשויכים אליו תמיד רואים INFORMATION_SCHEMA ללא סינון.

PostgreSQL

תפקיד המערכת spanner_info_reader והחברים בו רואים information_schema ללא סינון.

סינון שורות חל גם על תצוגות המטא-נתונים הבאות של פונקציות קריאה של סנכרון שינויים בזרמי נתונים:

נקודות שחשוב לדעת

  • סנכרון שינויים בזרמי נתונים משתמש במסד נתונים של מטא-נתונים כדי לשמור על מצב פנימי. מסד הנתונים של המטא-נתונים יכול להיות זהה למסד הנתונים של האפליקציה או שונה ממנו. מומלץ להשתמש במסד נתונים אחר. עם זאת, למשתמשים עם בקרת גישה ברמת דיוק גבוהה, מסד הנתונים של המטא-נתונים לא יכול להיות זהה למסד הנתונים של האפליקציה. הסיבה לכך היא שהחשבון הראשי ב-IAM שמריץ את משימת Dataflow צריך גישת קריאה או כתיבה ברמת מסד הנתונים של מסד הנתונים של המטא-נתונים. הפעולה הזו תבטל את ההרשאות של בקרת הגישה הפרטנית שהוגדרו למסד הנתונים של האפליקציה.

    מידע נוסף זמין במאמר שימוש במסד נתונים נפרד של מטא-נתונים.

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

  • אם מעניקים הרשאת SELECT בזרם שינויים שעוקב אחרי כל הטבלאות, מקבל ההרשאה יכול לראות שינויים בנתונים של כל טבלה שנוספה בעתיד.

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