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