שימוש בתוסף 'מחיקת נתוני משתמשים'

התוסף Delete User Data (מחיקת נתוני משתמשים) (delete-user-data) מאפשר לכם למחוק את הנתונים של משתמש מסוים כשמוחקים אותו מפרויקט Firebase. אתם יכולים להגדיר את התוסף הזה כך שימחק נתוני משתמשים מכל אחד מהשירותים הבאים או מכולם: Cloud Firestore,‏ Realtime Database או Cloud Storage. כל הפעלה של התוסף למחיקת נתונים משויכת למזהה המשתמש UserId.

התוסף הזה שימושי לשמירה על פרטיות המשתמשים ולעמידה בדרישות התאימות. עם זאת, השימוש בתוסף הזה לא מבטיח עמידה בתקנות של הממשלה ובתקנות של התעשייה.

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

  • כדי לנהל את המשתמשים, צריך להשתמש באימות ב-Firebase.

  • התוסף הזה מוחק נתונים רק מ-Cloud Firestore, מ-Realtime Database ומ-Cloud Storage. אם אתם מאחסנים נתוני משתמשים במקומות אחרים, אתם צריכים למחוק את נתוני המשתמשים גם מהמקורות האלה כשאתם מוחקים משתמשים.

התקנת התוסף

כדי להתקין את התוסף, פועלים לפי השלבים בדף Install Firebase Extension (התקנת תוסף של Firebase). לסיכום, מבצעים אחת מהפעולות הבאות:

במהלך ההתקנה של התוסף, תתבקשו לציין מספר פרמטרים של הגדרה:

  • המיקום של Cloud Functions:

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

  • נתיבי Cloud Firestore:

    אילו נתיבים במופע Cloud Firestore מכילים נתוני משתמשים? אם אתם לא משתמשים ב-Cloud Firestore, משאירים את השדה ריק. מזינים את הנתיבים המלאים, מופרדים בפסיקים. אפשר לייצג את מזהה המשתמש של המשתמש שנמחק באמצעות {UID}. לדוגמה, אם יש לכם את האוספים users ו-admins, ובכל אוסף יש מסמכים עם מזהה המשתמש כמזהה המסמך, תוכלו להזין users/{UID},admins/{UID}.

  • מצב מחיקה של Cloud Firestore:

    (רלוונטי רק אם משתמשים בפרמטר Cloud Firestore paths). איך רוצים למחוק מסמכים ב-Cloud Firestore? כדי למחוק גם מסמכים באוספי משנה, מגדירים את הפרמטר הזה לערך recursive.

  • מופע של מסד נתונים בזמן אמת:

    מאיזה מופע של Realtime Database רוצים למחוק את נתוני המשתמש?

  • המיקום של Realtime Database:

    (רלוונטי רק אם סיפקתם את הפרמטר Realtime Database instance). מאיזה מיקום ב-Realtime Database רוצים למחוק את נתוני המשתמש?

  • נתיבים במסד נתונים בזמן אמת:

    אילו נתיבים במופע של Realtime Database מכילים נתוני משתמשים? אם אתם לא משתמשים ב-Realtime Database, משאירים את השדה ריק. מזינים את הנתיבים המלאים, מופרדים בפסיקים. אפשר לייצג את מזהה המשתמש של המשתמש שנמחק באמצעות {UID}. לדוגמה: users/{UID},admins/{UID}

  • נתיבים ב-Cloud Storage:

    איפה ב-Google Cloud Storage מאוחסנים נתוני המשתמשים? אם אתם לא משתמשים ב-Cloud Storage, משאירים את השדה ריק. מזינים את הנתיבים המלאים לקבצים או לספריות בדלי Storage, כשהם מופרדים בפסיקים. משתמשים ב-{UID} כדי לייצג את מזהה המשתמש של המשתמש שנמחק, וב-{DEFAULT} כדי לייצג את דלי האחסון שמוגדר כברירת מחדל.

    הנה כמה דוגמאות:

    • כדי למחוק את כל הקבצים בדלי ברירת המחדל עם סכימת שמות הקבצים {UID}-pic.png, מזינים {DEFAULT}/{UID}-pic.png.
    • כדי למחוק גם את כל הקבצים בקטגוריה אחרת בשם my-app-logs עם סכימת מתן השמות {UID}-logs.txt, מזינים {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt.
    • כדי גם למחוק ספרייה עם תווית של מזהה משתמש ואת כל הקבצים שלה (כמו media/{UID}), מזינים {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}.

גילוי נתונים למחיקה

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

חשוב לשים לב להבדלים הבאים בהתנהגות של כל שירות:

  • Cloud Firestore: התנהגות ברירת המחדל היא מחיקה שטחית של מסמך (אוספי משנה לא יימחקו). כדי למחוק באופן רקורסיבי את כל אוספי המשנה של מסמך, מגדירים את האפשרות Cloud Firestore delete mode (מצב מחיקה ב-Cloud Firestore) ל-Recursive (רקורסיבי).
  • Realtime Database: כל הנתונים בצומת שצוין יימחקו.
  • אחסון: אם מציינים נתיב של ספרייה, כל הקבצים ותיקיות המשנה יימחקו.

לפי נתיב

כשמגדירים את הנתיבים של Cloud Firestore, ‏ Realtime Database ו-Cloud Storage, אפשר להגדיר משתנה UID בנתיבים שיוחלף ב-UID של המשתמש המאומת. כשמשתמש נמחק, התוסף מוחק את כל הנתונים שמשויכים למזהה המשתמש הזה בנתיבים שצוינו, למשל:

  • נתיבים ב-Cloud Firestore: users/{UID},admins/{UID}
  • נתיבים במסד נתונים בזמן אמת: likes/{UID}
  • נתיבים ב-Cloud Storage:‏ {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

גילוי אוטומטי (Cloud Firestore)

כדי שהתוסף יזהה באופן אוטומטי מסמכי Firestore למחיקה, צריך להגדיר את פרמטר ההגדרה Enable auto discovery (הפעלת זיהוי אוטומטי) לערך Yes (כן).

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

  1. קודם כל, התוסף מוצא את כל אוספי הבסיס במסד הנתונים. אם מזהה האוסף תואם למזהה המשתמש (UID), האוסף כולו נמחק (המחיקה היא רקורסיבית או שטחית, בהתאם להגדרת התוסף של 'מצב מחיקה ב-Cloud Firestore').
  2. שנית, אם מזהה האוסף לא תואם, התוסף ינסה לזהות ולמחוק מסמך אם מזהה המסמך שלו תואם ל-UID של המשתמש.
  3. לבסוף, לכל מסמך: א. אם עומק החיפוש הנוכחי (ראו בהמשך) קטן מעומק החיפוש שהוגדר או שווה לו, התהליך יחזור על עצמו עבור כל אוספי המשנה של המסמך הנוכחי. ב. אם הוגדרו שדות חיפוש, התוסף יבדוק אם השדות שסופקו תואמים למזהה המשתמש (UID). אם נמצאת התאמה, המסמך יימחק.

עומק החיפוש

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

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

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