באופן מסורתי, אבטחה היא אחד החלקים המורכבים ביותר בפיתוח אפליקציות. ברוב האפליקציות, המפתחים צריכים ליצור ולהפעיל שרת שמטפל באימות (מי המשתמש) ובהרשאה (מה המשתמש יכול לעשות). קשה להגדיר אימות והרשאה, קשה עוד יותר להגדיר אותם בצורה נכונה, והם חיוניים להצלחת המוצר.
בדומה לאופן שבו 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 מחייבת 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.
מידע נוסף על אבטחת הנתונים באמצעות כללי אבטחה