בדף הזה מוסבר איך בקרת גישה מפורטת (FGAC) פועלת עם סנכרון שינויים בזרמי נתונים ב-Spanner, במסדי נתונים בניב GoogleSQL ובמסדי נתונים בניב PostgreSQL.
כדי לאפשר למשתמשים עם בקרת גישה מפורטת (FGAC) לקרוא נתונים של סנכרון שינויים בזרמי נתונים, צריך להשתמש בהרשאות הבאות. שני המענקים נדרשים.
מעניקים את ההרשאה
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לפונקציית הקריאה שנוצרת באופן אוטומטי לסנכרון שינויים בזרמי נתונים. אתם משתמשים בפונקציית הקריאה כדי לקרוא רשומות של סנכרון שינויים בזרמי נתונים.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בסנכרון שינויים בזרמי נתונים שעוקב אחרי כל הטבלאות, מקבל ההרשאה יכול לראות שינויים בנתונים בכל הטבלאות שיתווספו בעתיד.