בעזרת Cloud Firestore Security Rules תוכלו להתמקד בפיתוח חוויית משתמש מעולה בלי שתצטרכו לנהל את התשתית או לכתוב קוד הרשאה ואימות בצד השרת.
כללי אבטחה מספקים בקרת גישה ואימות נתונים בפורמט פשוט אך מובן. כדי ליצור מערכות גישה מבוססות-משתמשים ומבוססות-תפקידים ששומרות על אבטחת הנתונים של המשתמשים, צריך להשתמש באימות Firebase עם Cloud Firestore Security Rules.
כללי אבטחה גרסה 2
החל ממאי 2019, גרסה 2 של כללי האבטחה של Cloud Firestore זמינה עכשיו. בגרסה 2 של הכללים יש שינוי בהתנהגות של סמלי Wildcard רפרסיביים {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 מספק סימולטור של כללים שבעזרתו אפשר לבדוק את קבוצת הכללים. אפשר לגשת לסימולטור מהכרטיסייה כללים בקטע Cloud Firestore במסוף Firebase.
סימולטור הכללים מאפשר לדמות קריאה, כתיבה ומחיקה מאומתות ולא מאומתות. כשאתם מדמים בקשה מאומתת, אתם יכולים ליצור טוקנים של אימות מספקים שונים ולהציג תצוגה מקדימה שלהם. בקשות סימולציה פועלות מול קבוצת הכללים בעורך, ולא מול קבוצת הכללים הנוכחית שנפרסה.
פריסה של כללים
כדי להתחיל להשתמש ב-Cloud Firestore מהאפליקציה לנייד, צריך לפרוס כללי אבטחה. אפשר לפרוס כללים במסוף Firebase, באמצעות ה-CLI של Firebase או באמצעות ה-API ל-REST של Cloud Firestore.
יכול להיות שיחלפו עד דקה לפני שעדכונים ב-Cloud Firestore Security Rules ישפיעו על שאילתות ועל מאזינים חדשים. עם זאת, יכול להיות שיחלפו עד 10 דקות עד שהשינויים יוטמעו באופן מלא וישפיעו על כל המאזינים הפעילים.
שימוש במסוף Firebase
כדי להגדיר ולפרוס את קבוצת הכללים הראשונה של מסד הנתונים שמוגדר כברירת מחדל בפרויקט, פותחים את הכרטיסייה Rules בקטע Cloud Firestore במסוף Firebase.
כותבים את הכללים בכלי לעריכת אונליין ולוחצים על פרסום.
שימוש ב-CLI של Firebase
אפשר לפרוס כללים גם באמצעות 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.
השלבים הבאים
- כך מגדירים את המבנה של כללי אבטחה.
- כותבים תנאים מותאמים אישית של כללי אבטחה.
- מקורות מידע בנושא כללי אבטחה