באופן מסורתי, אבטחה היא אחד החלקים המורכבים ביותר בפיתוח אפליקציות. ברוב האפליקציות, המפתחים צריכים ליצור ולהפעיל שרת שמטפל באימות (מי המשתמש) ובהרשאה (מה המשתמש יכול לעשות). קשה להגדיר אימות והרשאה, קשה יותר להגדיר אותם בצורה נכונה, והם חיוניים להצלחת המוצר.
בדומה לאופן שבו 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 for Cloud Storage קשור ל-Firebase Authentication
for user based security. כשמשתמש מאומת באמצעות Firebase Authentication, המשתנה request.auth
ב-Cloud Storage Security Rules הופך לאובייקט שמכיל את המזהה הייחודי של המשתמש (request.auth.uid
) ואת כל פרטי המשתמש האחרים באסימון (request.auth.token
). אם המשתמש לא מאומת, הערך של request.auth
הוא null
. כך תוכלו לשלוט באופן מאובטח בגישה לנתונים ברמת המשתמש. מידע נוסף זמין בקטע אימות.
הרשאה
זיהוי המשתמש הוא רק חלק מהאבטחה. אחרי שתדעו מי הם, תצטרכו דרך לשלוט בגישה שלהם לקבצים ב-Cloud Storage.
Cloud Storage מאפשרת לכם לציין כללי הרשאה לכל קובץ ולכל נתיב, שנשמרים בשרתים שלנו וקובעים את הגישה לקבצים באפליקציה. לדוגמה, ברירת המחדל Cloud Storage Security Rules require Firebase Authentication כדי לבצע פעולות read
או write
על כל הקבצים:
service firebase.storage { match /b/{bucket}/o { match /someFolder/{fileName} { 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 הדליים.
מידע נוסף על אבטחת הנתונים באמצעות כללי אבטחה