בעבר, אבטחה הייתה אחד מהחלקים המורכבים ביותר בפיתוח אפליקציות. ברוב האפליקציות, המפתחים צריכים ליצור ולהפעיל שרת שמטפל באימות (מי המשתמש) ובהרשאה (מה המשתמש יכול לעשות). קשה להגדיר אימות והרשאה, קשה יותר לבצע אותם בצורה נכונה והם קריטיים להצלחת המוצר.
בדומה לאופן שבו Firebase Authentication מאפשר לאמת בקלות את המשתמשים, Firebase Security Rules ב-Cloud Storage מאפשר להעניק הרשאות למשתמשים ולאמת בקשות בקלות. Cloud Storage Security Rules מנהלת את המורכבות בשבילכם, ומאפשרת לכם לציין הרשאות שמבוססות על נתיב. בכמה שורות קוד בלבד, אפשר לכתוב כללי הרשאה שמגבילים את הבקשות ל-Cloud Storage למשתמש מסוים או מגבילים את גודל ההעלאה.
ב-Firebase Realtime Database יש תכונה דומה שנקראת Firebase Realtime Database Security Rules
אימות
חשוב לדעת מי המשתמשים שלכם כשאתם מפתחים אפליקציה, ו-Firebase Authentication מספק פתרון מאובטח וקל לשימוש לאימות בצד הלקוח בלבד. Firebase Security Rules עבור Cloud Storage מקושר ל-Firebase Authentication
לצורך אבטחה מבוססת-משתמשים. כשמשתמש מאומת באמצעות Firebase Authentication, המשתנה request.auth
ב-Cloud Storage Security Rules הופך לאובייקט שמכיל את המזהה הייחודי של המשתמש (request.auth.uid
) ואת כל שאר פרטי המשתמש באסימון (request.auth.token
). כשהמשתמש לא מאומת, הערך של request.auth
הוא null
. כך אפשר לשלוט באופן מאובטח בגישה לנתונים ברמת המשתמש. מידע נוסף זמין בקטע אימות.
הרשאה
זיהוי המשתמש הוא רק חלק מאבטחה. אחרי שתדעו מי הם, תצטרכו למצוא דרך לשלוט בגישה שלהם לקבצים ב-Cloud Storage.
באמצעות Cloud Storage אפשר לציין כללי הרשאה לכל קובץ ולכל נתיב שקיימים בשרתים שלנו, ולקבוע את הגישה לקבצים באפליקציה שלכם. לדוגמה, כדי לבצע פעולות read
או write
בכל הקבצים, נדרש Firebase Authentication כברירת מחדל: Cloud Storage Security Rules
service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth != null; } } }
כדי לערוך את הכללים האלה, בוחרים אפליקציית Firebase במסוף Firebase ומעיינים בכרטיסייה Rules
בקטע Storage (אחסון).
אימות נתונים
אפשר להשתמש ב-Firebase Security Rules ל-Cloud Storage גם לאימות נתונים, כולל אימות של שם הקובץ והנתיב, וגם מאפיינים של מטא-נתונים של קבצים כמו contentType
ו-size
.
service firebase.storage { match /b/{bucket}/o { match /images/{imageId} { // Only allow uploads of any image file that's less than 5MB allow write: if request.resource.size < 5 * 1024 * 1024 && request.resource.contentType.matches('image/.*'); } } }
השלבים הבאים
איך מתחילים לתכנן את פיתוח הכללים לקטגוריות Cloud Storage
מידע נוסף על אבטחת הנתונים באמצעות כללי אבטחה.