כללי אבטחה לפעולות בצינור
כללי פעולות של צינור עיבוד נתונים מאפשרים להתאים את יכולות הסינון של מנוע הכללים הקיים. פעולות של צינור עיבוד נתונים מציעות מגוון רחב של תכונות, אבל מנוע הכללים מוגבל לזיהוי מסננים פשוטים כדי להבטיח את האפשרות להשלים את השאילתה ואת האבטחה.
דרישות לגבי מהדורה ומצב
המסמך הזה רלוונטי למהדורת Firestore Enterprise במצב Native.
ביטויי סינון נתמכים
כדי ששאילתה תוגבל על ידי הכללים שלכם, היא צריכה להשתמש באופרטורים סטנדרטיים להשוואה מול קבועים. מנוע הכללים מזהה את סוגי המסננים הבאים:
- שוויון ואי-שוויון:
eq,neq. - השוואות:
gt,gte,lt,lte. - חברות:
in,arrayContains.
הנה כמה דוגמאות:
where(eq("foo", 2))where(lt("foo", 2))documents("/user/1", "/user/2").where(...)
מאפייני הבקשה
אתם יכולים להמשיך להשתמש באובייקט request כדי לאמת את ההזדהות ולשאול את ההקשר, אבל חלק מהמאפיינים שזמינים בשאילתות רגילות לא נתמכים בצינורות.
מאפיינים נתמכים
המנוע החדש ממשיך לתמוך במאפיינים הבאים:
-
request.auth: גישה לנתוני uid ואסימון של משתמשים. -
request.method: מזהה את הפעולה (לדוגמה,get, list). -
request.path: הנתיב של המשאב שאליו מתבצעת גישה. -
request.time: חותמת הזמן בצד השרת של הבקשה.
מאפיינים שלא נתמכים
לא ניתן להשתמש במאפיינים request.query כמו limit, offset ו-orderBy בבדיקות של כללי צינורות, כי קשה לקבוע את הערכים האלה בשאילתות מרובות שלבים.
טיפול בשלב בצינור עיבוד נתונים והרשאות
יש שלבים שונים בצינור שמתאימים לפעולות ספציפיות ומפורטות בכללי האבטחה:
- הרשאות
allow list: מופעלות על ידי שלביcollection(),collectionGroup()ו-database(). allow getהרשאות: מופעל על ידי השלבdocuments(), שמתייחסים אליו באופן דומה לפעולתgetאצווה.- שלבים של שינוי שדות: הכללים פועלים רק על נתונים מאוחסנים ולא על ערכים נגזרים. אם צינור הנתונים כולל שלבים שמשנים שדות (לדוגמה,
AddFields,ReplaceWith,Select), מנוע הכללים מפסיק להחיל אילוצי סינון אחרי השלב הזה. - שלב Literals: השלב
literals()לא קורא מהמסד הנתונים, אבל יכול לגרום לעלויות. כדי למנוע שימוש לרעה, צריך לשלב אותו עם שלב אחר (כמוcollection()) שאפשר לאמת באמצעות כללים.