תחילת העבודה עם כללי אבטחה של Cloud Storage

באפליקציות רגילות, המפתחים צריכים ליצור ולתחזק שרתים רבים שמבצעים אימות, הרשאה ואימות נתונים, וגם את הלוגיקה העסקית של המפתח. אפליקציות שמשתמשות בהרשאה Cloud Storage for Firebase משתמשות Firebase Authentication ו-Firebase Security Rules עבור Cloud Storage לצורך טיפול ללא שרת (serverless) אימות, הרשאה ואימות נתונים.

שימוש ב-Cloud Storage וב-Cloud Storage Security Rules מאפשר לך להתמקד לבניית חוויית משתמש מעולה, ללא צורך בניהול תשתית או כתיבת קוד אימות והרשאה מורכב בצד השרת!

סקירה כללית

Cloud Storage Security Rules משמש כדי לקבוע למי יש גישת קריאה וכתיבה הקבצים שמאוחסנים ב-Cloud Storage, וגם את המבנה של הקבצים אילו מטא-נתונים הם מכילים. סוג הכלל הבסיסי הוא כלל allow, שמאפשר פעולות read ו-write אם מתקיים תנאי שצוין באופן אופציונלי. הנה כמה דוגמאות לכללים:

// Rules can optionally specify a condition
allow write: if <condition>;

כללים שמייצגים match נתיבי קבצים Cloud Storage הפניות. כללים יכול match לנתיב קובץ אחד או יותר, ויותר מכלל אחד יכול match את הקובץ בנתיב נתון request:

// Rules match specific paths
match /images/profilePhoto.png {
  allow write: if <condition>;
}

match /images/croppedProfilePhoto.png {
  allow write: if <other_condition>;
}

ההקשר של הערכת הכללים נחשף גם דרך request וגם אובייקטים מסוג resource, שמספקים מידע כמו ההקשר של האימות (request.auth) וגודל האובייקט הקיים (resource.size).

// Rules can specify conditions that consider the request context
match /images/profilePhoto.png {
  allow write: if request.auth != null && request.resource.size < 5 * 1024 * 1024;
}

מידע נוסף על Cloud Storage Security Rules זמין הקטע קבצים מאובטחים.

כללים לדוגמה

קודם צריך לציין ב-Cloud Storage Security Rules את service (במקרה שלנו firebase.storage) ואת הקטגוריה Cloud Storage (דרך match /b/{bucket}/o) שבה מתבצעת הערכת הכללים. כללי ברירת המחדל מחייבים שימוש ב-Firebase Authentication, אבל ריכזנו כאן כמה דוגמאות לכללים נפוצים אחרים עם בקרת גישה שונה.

ברירת מחדל

// Only authenticated users can read or write to the folder
service firebase.storage {
  match /b/{bucket}/o {
    match /someFolder/{fileName} {
      allow read, write: if request.auth != null;
    }
  }
}

גלוי לכולם

// Anyone can read or write to the folder, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded via App Engine public.
service firebase.storage {
  match /b/{bucket}/o {
    match /someFolder/{fileName} {
      allow read, write;
    }
  }
}

משתמש

// Grants a user access to a node matching their user ID
service firebase.storage {
  match /b/{bucket}/o {
    // Files look like: "user/<UID>/file.txt"
    match /user/{userId}/{fileName} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

פרטי

// Access to files through Cloud Storage for Firebase is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

במהלך הפיתוח, ניתן להשתמש בכללים הציבוריים במקום ברירת המחדל כדי להגדיר את הקבצים שלך כקריאים וקריאים באופן ציבורי. זה מאוד שימושי עבור ליצור את האב טיפוס, כי אפשר להתחיל בלי להגדיר את Firebase Authentication. עם זאת, מכיוון ש-Cloud Storage משתף קטגוריה עם ברירת המחדל App Engine באפליקציה, הכלל הזה מאפשר גם להשתמש בנתונים שהאפליקציה משתמשת בהם ציבוריים גם כן.

כללי משתמשים מאפשרים לך לתת לכל אחד מהמשתמשים המאומתים שלך מידע אישי משלהם אחסון קבצים. אפשר גם לנעול את הקבצים לגמרי באמצעות האפשרות אבל חשוב לזכור שהמשתמשים לא יוכלו לקרוא או לכתוב מידע עד Cloud Storage עם הכללים האלה. יכול להיות שלמשתמשים שגולשים בקבצים דרך אפליקציית App Engine או דרך ממשקי ה-API של Google Cloud Storage עדיין תהיה גישה.

עריכת הכללים

באמצעות Cloud Storage אפשר לערוך בקלות את Cloud Storage Security Rules דרך הכרטיסייה כללים בקטע 'אחסון' במסוף Firebase. בכרטיסייה כללים אפשר להציג ולערוך במהירות ובקלות את כללים. כדי להפעיל את הכללים האלה צריך ללחוץ על פרסום או לשמור את הקובץ. (ctrl/cmd + s). הכללים מועלים מיד אל Cloud Storage אבל עשויות לחלוף עד חמש דקות עד שיהפכו לפעילים.

אפשר להשתמש ב- CLI Firebase גם כדי לפרוס כללים. אם בוחרים Storage כשמריצים את firebase init, קובץ storage.rules עם עותק של המערכת תיצור את כללי ברירת המחדל בספריית הפרויקט. אפשר לפרוס את הכללים האלה באמצעות הפקודה firebase deploy. אם יש לכם כמה קטגוריות בפרויקט, תוכלו להשתמש ביעדי פריסה כדי לפרוס כללים לכל הקטגוריות בבת אחת מאותה תיקיית פרויקט.

כדי להבין איך פועלת אבטחה מבוססת-קבצים, הקטע קבצים מאובטחים, או הסבר על המשתמש מבוססת-אבטחה של אבטחת משתמשים .