הסבר על כללי אבטחה של Firebase ל-Cloud Storage

באופן מסורתי, אבטחה היא אחד החלקים המורכבים ביותר בפיתוח אפליקציות. ברוב האפליקציות, המפתחים צריכים ליצור ולהפעיל שרת שמטפל באימות (מי המשתמש) ובהרשאה (מה המשתמש יכול לעשות). קשה להגדיר אימות והרשאה, קשה יותר להגדיר אותם בצורה נכונה, והם חיוניים להצלחת המוצר.

בדומה לאופן שבו 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/.*');
    }
  }
}

השלבים הבאים