הנחיה ל-AI: כתיבת כללי אבטחה של Firebase

ההנחיה הזו יכולה לעזור לעוזר הדיגיטלי מבוסס-AI, כמו Gemini CLI, ליצור ולשפר את Firebase Security Rules עבור האפליקציה שלכם. אתם יכולים להשתמש בהנחיה כדי לנסח Rules לתרחישי שימוש נפוצים, כמו מתן גישה ספציפית למשתמש, הטמעה של הרשאות מבוססות-תפקיד ואימות נתונים.

ההנחיה הזו מתמקדת ביצירת Rules עבור:

  • Cloud Firestore: אבטחת אוספים ומסמכים על סמך הלוגיקה של האפליקציה.
  • Cloud Storage for Firebase: אימות הרשאות הגישה לקבצים המאוחסנים.

ההנחיה הזו יכולה לעזור לכם להתחיל עם אבטחה חזקה, אבל תמיד צריך לבדוק את Rules ביסודיות לפני שפורסים אותו בסביבת הייצור. מידע נוסף על בדיקת Rules זמין במאמר תחילת העבודה עם Firebase Security Rules: בדיקת הכללים.

דרישות מוקדמות

מגבלות

אנחנו פועלים לשיפור חוויית השימוש, ולכן רשימת המגבלות הזו עשויה להשתנות. כדאי לחזור לכאן לעיתים קרובות כדי לבדוק אם יש עדכונים.

  • ‫Gemini ב-Firebase לא יכול ליצור Firebase Security Rules. להשתמש בעוזר AI חלופי, כמו Gemini CLI.
  • הפרומפט נועד ליצור Firebase Security Rules עבור Cloud Firestore וCloud Storage for Firebase. עדיין אי אפשר ליצור Rules עבור Firebase Realtime Database.
  • Firebase Security Rules לא מופעלות כשניגשים למסד הנתונים או למאגר (bucket) משרת או מסביבת קצה עורפית אחרת, למשל כשמשתמשים ב-Firebase Admin SDK. אם אתם משתמשים ב-Admin SDK, אתם אחראים לניהול ההרשאות ולאימות הנתונים בקוד של ה-Backend.

שימוש בהנחיה

  1. כדי ליצור את הכללים והבדיקות, אפשר להשתמש בתוסף Gemini CLIהניסיוני של Firebase Security Rules.

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

    כדי להתקין את התוסף ולהשתמש בו:

    1. מתקינים את התוסף Gemini CLI:

      gemini extensions install https://github.com/firebase/snippets-rules
      
    2. פתיחת Gemini CLI.

      gemini
      
    1. מתיקיית הבסיס של הפרויקט, מריצים את התוסף כדי ליצור כללים עבור Cloud Firestore:

      /firebase-rules:firestore Generate rules using PROJECT ID PROJECT_ID
      

      או ליצור כללים עבור Cloud Storage:

      /firebase-rules:storage Generate rules using PROJECT ID PROJECT_ID and BUCKET NAME BUCKET_NAME
      

    התוסף יוצר ספרייה בשם rules_test עבור Cloud Firestore או ספרייה בשם storage_rules_test עבור Cloud Storage בתיקיית השורש של הפרויקט. הספרייה החדשה הזו מכילה את קובץ .rules שנוצר, וגם פרויקט Node.js עם בדיקות יחידות.

  2. בודקים את תוצאות האימות והבדיקה של הכללים:

    • אימות התחביר – אחרי יצירת הכללים, Gemini CLI מאמת באופן אוטומטי את התחביר באמצעות הפקודה firebase_validate_security_rules משרת ה-MCP של Firebase.
    • בדיקות יחידה – אחרי אימות התחביר, Gemini CLI מנסה להריץ את בדיקות היחידה שנוצרו באמצעות Firebase Local Emulator Suite. כדי להריץ את הבדיקות, צריך להריץ את Firebase Local Emulator Suite במסוף נפרד.

    אם הבדיקות לא מופעלות אוטומטית, מפעילים את Firebase Local Emulator Suite במסוף נפרד ואז משתמשים באחת מהאפשרויות הבאות כדי להפעיל את הבדיקות:

    *   Instruct Gemini CLI to run tests:
        ```none
        Firebase Emulator Suite is running in a separate terminal. Please
        execute the tests.
        ```
    *   Run tests manually by following the instructions in the `README.md`
        file in the `rules_test` or `storage_rules_test` directory.
    
  3. כשמרוצים מהתוצאה של Rules שנוצר, משתמשים בפקודת ה-CLI הבאה Firebase כדי לפרוס את Rules.

    Cloud Firestore

    firebase deploy --only firestore:rules

    Cloud Storage

    firebase deploy --only storage

משאבים נוספים

  • כדי לקבל עזרה נוספת בנושא אבטחה, אפשר גם להשתמש בתוסף האבטחה ל-Gemini CLI, תוסף קוד פתוח שמנתח שינויים בקוד כדי לזהות סיכוני אבטחה ונקודות חולשה.