בדף הזה מוסבר איך בקרת גישה פרטנית פועלת עם סנכרון שינויים בזרמי נתונים ב-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:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES - מסדי נתונים בניב PostgreSQL:
information_schema.change_stream_privileges
השורות בתצוגות האלה מסוננות על סמך ההרשאות הנוכחיות של תפקיד מסד הנתונים בזרמי שינויים. כך אפשר לוודא שישויות מורשות יכולות לראות רק את התפקידים, ההרשאות וסנכרון שינויים בזרמי נתונים שיש להם גישה אליהם.
סינון שורות חל גם על התצוגות הבאות שקשורות לזרמי שינויים:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMSINFORMATION_SCHEMA.CHANGE_STREAM_TABLESINFORMATION_SCHEMA.CHANGE_STREAM_COLUMNSINFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
תפקיד המערכת spanner_info_reader והמשתמשים שמשויכים אליו תמיד רואים INFORMATION_SCHEMA ללא סינון.
PostgreSQL
information_schema.change_streamsinformation_schema.change_stream_tablesinformation_schema.change_stream_columnsinformation_schema.change_stream_options
תפקיד המערכת spanner_info_reader והחברים בו רואים information_schema ללא סינון.
סינון שורות חל גם על תצוגות המטא-נתונים הבאות של פונקציות קריאה של סנכרון שינויים בזרמי נתונים:
GoogleSQL
PostgreSQL
נקודות שחשוב לדעת
סנכרון שינויים בזרמי נתונים משתמש במסד נתונים של מטא-נתונים כדי לשמור על מצב פנימי. מסד הנתונים של המטא-נתונים יכול להיות זהה למסד הנתונים של האפליקציה או שונה ממנו. מומלץ להשתמש במסד נתונים אחר. עם זאת, למשתמשים עם בקרת גישה ברמת דיוק גבוהה, מסד הנתונים של המטא-נתונים לא יכול להיות זהה למסד הנתונים של האפליקציה. הסיבה לכך היא שהחשבון הראשי ב-IAM שמריץ את משימת Dataflow צריך גישת קריאה או כתיבה ברמת מסד הנתונים של מסד הנתונים של המטא-נתונים. הפעולה הזו תבטל את ההרשאות של בקרת הגישה הפרטנית שהוגדרו למסד הנתונים של האפליקציה.
מידע נוסף זמין במאמר שימוש במסד נתונים נפרד של מטא-נתונים.
מכיוון שזרם השינויים מכיל עותק נפרד של הנתונים מהטבלאות ומהעמודות שבמעקב, צריך להיזהר כשמעניקים למשתמשים גישה לזרם השינויים. משתמשים עם הרשאת קריאה בזרם השינויים יכולים לראות שינויים בנתונים מהטבלאות והעמודות שבמעקב, גם אם אין להם הרשאות
SELECTבטבלאות ובעמודות. למרות שגמיש יותר להגדיר אמצעי בקרה נפרדים בזרמי שינויים ובטבלאות ובעמודות שלהם, יש סיכון פוטנציאלי, ולכן חשוב לוודא שאתם מגדירים את התפקידים וההרשאות במסד הנתונים בהתאם. לדוגמה, כשמבטלים את ההרשאהSELECTבטבלה מתפקיד מסוים, כדאי לשקול אם לבטל גם את ההרשאהSELECTבזרם השינויים ולבטל את ההרשאהEXECUTEבפונקציית הקריאה המשויכת.אם מעניקים הרשאת
SELECTבזרם שינויים שעוקב אחרי כל הטבלאות, מקבל ההרשאה יכול לראות שינויים בנתונים של כל טבלה שנוספה בעתיד.
המאמרים הבאים
- סקירה כללית של סנכרון שינויים בזרמי נתונים
- יצירה וניהול של סנכרון שינויים בזרמי נתונים
- סקירה כללית על בקרת גישה פרטנית