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

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

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

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

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

  • התוסף הזה מוחק נתונים רק מ-Cloud Firestore, מ-מסד נתונים בזמן אמת ומ-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 instance). מאיפה ב-מסד נתונים בזמן אמת רוצים למחוק את נתוני המשתמשים?

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

    אילו נתיבים במופע של מסד נתונים בזמן אמת מכילים נתוני משתמש? אם אתם לא משתמשים ב-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 (רקורסיבי).
  • ‫מסד נתונים בזמן אמת: כל הנתונים בצומת שצוין יימחקו.
  • אחסון: אם מציינים נתיב של ספרייה, כל הקבצים ותיקיות המשנה יימחקו.

לפי נתיב

כשמגדירים את הנתיבים של Cloud Firestore, ‏ מסד נתונים בזמן אמת ו-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

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