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

בעזרת Cloud Firestore Security Rules תוכלו להתמקד ביצירת חוויית משתמש נהדרת בלי לנהל תשתית או לכתוב קוד לאימות ולאישור בצד השרת.

כללי האבטחה מספקים בקרת גישה ואימות נתונים בפורמט פשוט אך יעיל. כדי ליצור מערכות גישה מבוססות-משתמשים ומבוססות-תפקידים ששומרות על אבטחת הנתונים של המשתמשים, צריך להשתמש באימות Firebase עם Cloud Firestore Security Rules.

כללי אבטחה בגרסה 2

החל ממאי 2019, גרסה 2 של כללי האבטחה של Cloud Firestore זמינה עכשיו. בגרסה 2 של הכללים יש שינוי בהתנהגות של סמלי אסימון כלליים (wildcards) רפרסיביים {name=**}. אם אתם מתכננים להשתמש בשאילתות של קבוצות אוספים, עליכם להשתמש בגרסה 2. כדי להביע הסכמה לגרסה 2, צריך להגדיר את rules_version = '2'; כשורה הראשונה בכללי האבטחה:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

כתיבת כללים

תצטרכו לכתוב ולנהל את Cloud Firestore Security Rules בהתאם למודל הנתונים שתיצרו למסד הנתונים שמוגדר כברירת מחדל ולכל מסד נתונים נוסף בפרויקט.

כל Cloud Firestore Security Rules מורכב ממשפטי match שמזהים מסמכים במסד הנתונים ומביטויים allow ששולטים בגישה למסמכים האלה:

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

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

בהמשך מפורטות כמה דוגמאות לקבוצות של כללים בסיסיים. הכללים האלה תקפים, אבל לא מומלצים לאפליקציות ייצור:

נדרש אימות

// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

דחייה של הכול

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

הפעלת התאמה אישית של מודעות בכל הארצות/האזורים

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

הנתיב {document=**} שנעשה בו שימוש בדוגמאות שלמעלה תואם לכל מסמך במסד הנתונים כולו. במדריך בנושא מבנה של כללי אבטחה מוסבר איך להתאים נתיבים ספציפיים של נתונים ולעבוד עם נתונים היררכיים.

בדיקת הכללים

Cloud Firestore מספק סימולטור של כללים שבעזרתו אפשר לבדוק את קבוצת הכללים. אפשר לגשת לסימולטור מהכרטיסייה Rules בקטע Cloud Firestore במסוף Firebase.

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

פריסה של כללים

כדי להתחיל להשתמש ב-Cloud Firestore מהאפליקציה לנייד, תצטרכו לפרוס כללי אבטחה. אפשר לפרוס כללים במסוף Firebase, באמצעות ה-CLI של Firebase או באמצעות ה-API ל-REST לניהול Cloud Firestore.

יכול להיות שיחלפו עד דקה לפני שעדכונים ב-Cloud Firestore Security Rules ישפיעו על שאילתות ועל מאזינים חדשים. עם זאת, יכול להיות שיחלפו עד 10 דקות עד שהשינויים יתעדכנו במלואם וישפיעו על המאזינים הפעילים.

שימוש במסוף Firebase

כדי להגדיר ולפרוס את קבוצת הכללים הראשונה למסד הנתונים שמוגדר כברירת מחדל בפרויקט, פותחים את הכרטיסייה Rules בקטע Cloud Firestore במסוף Firebase.

כותבים את הכללים בעורך אונליין ולוחצים על פרסום.

שימוש ב-Firebase CLI

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

// Set up Firestore in your project directory, creates a .rules file
firebase init firestore

// Edit the generated .rules file to your desired security rules
// ...

// Deploy rules for all configured databases
firebase deploy --only firestore

שיפור האבטחה של Cloud Storage

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

השלבים הבאים