בעבר, אבטחה הייתה אחד מהחלקים המורכבים ביותר בפיתוח אפליקציות. ברוב האפליקציות, המפתחים צריכים ליצור ולהפעיל שרת שמטפל באימות (מי המשתמש) ובהרשאה (מה המשתמש יכול לעשות). קשה להגדיר אימות והרשאה, קשה יותר לבצע אותם בצורה נכונה והם קריטיים להצלחת המוצר.
בדומה לאופן שבו 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
. כך תוכלו לשלוט באופן מאובטח בגישה לנתונים לפי משתמש. מידע נוסף מופיע בקטע Authentication.
הרשאה
זיהוי המשתמש הוא רק חלק מאבטחה. אחרי שתדעו מי הם, תצטרכו למצוא דרך לשלוט בגישה שלהם לקבצים ב-Cloud Storage.
Cloud Storage מאפשר לכם לציין כללי הרשאה לכל קובץ ולנתיב שנמצאים בשרתים שלנו וקובעים את הגישה לקבצים באפליקציה. לדוגמה, ברירת המחדל של Cloud Storage Security Rules דורשת Firebase Authentication כדי לבצע פעולות read
או write
בכל הקבצים:
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.
מידע נוסף על אבטחת הנתונים באמצעות כללי אבטחה.