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