Utiliser l'extension Supprimer les données utilisateur

L'extension Delete User Data (delete-user-data) vous permet de supprimer les données d'un utilisateur lorsque celui-ci est supprimé de votre projet Firebase. Vous pouvez configurer cette extension pour supprimer les données utilisateur de tout ou partie des éléments suivants : Cloud Firestore, Realtime Database ou Cloud Storage. Chaque déclencheur de l'extension permettant de supprimer des données est associé au UserId de l'utilisateur.

Cette extension est utile pour respecter la confidentialité des données des utilisateurs et répondre aux exigences de conformité. Toutefois, son utilisation ne garantit pas la conformité aux réglementations gouvernementales et sectorielles.

Prérequis

Installer l'extension

Pour installer l'extension, suivez les étapes de la page Installer l'extension Firebase. En résumé, effectuez l'une des opérations suivantes :

  • Console Firebase : cliquez sur le bouton suivant :

    Installer l'extension Delete User Data

  • CLI : exécutez la commande suivante :

    firebase ext:install firebase/delete-user-data --project=projectId-or-alias

Lors de l'installation de l'extension, vous serez invité à spécifier un certain nombre de paramètres de configuration :

  • Emplacement Cloud Functions :

    Sélectionnez l'emplacement où vous souhaitez déployer les fonctions créées pour cette extension. En général, vous choisissez un emplacement proche de votre base de données. Pour obtenir de l'aide sur la sélection d'un emplacement, consultez le guide de sélection d'un emplacement.

  • Chemins Cloud Firestore :

    Quels chemins de votre instance Cloud Firestore contiennent des données utilisateur ? Laissez ce champ vide si vous n'utilisez pas Cloud Firestore. Saisissez les chemins complets, séparés par une virgule. Vous pouvez représenter l'ID utilisateur de l'utilisateur supprimé avec {UID}. Par exemple, si vous avez les collections users et admins, et que chaque collection comporte des documents dont l'ID utilisateur est l'ID de document, vous pouvez saisir users/{UID},admins/{UID}.

  • Mode de suppression Cloud Firestore :

    (Ne s'applique que si vous utilisez le paramètre Cloud Firestore paths.) Comment souhaitez-vous supprimer les documents Cloud Firestore ? Pour également supprimer les documents des sous-collections, définissez ce paramètre sur recursive.

  • Instance Realtime Database :

    De quelle instance Realtime Database souhaitez-vous supprimer les données utilisateur ?

  • Emplacement Realtime Database :

    (Ne s'applique que si vous avez fourni le paramètre Realtime Database instance.) De quel emplacement Realtime Database souhaitez-vous supprimer les données utilisateur ?

  • Chemins Realtime Database :

    Quels chemins de votre instance Realtime Database contiennent des données utilisateur ? Laissez ce champ vide si vous n'utilisez pas Realtime Database. Saisissez les chemins complets, séparés par une virgule. Vous pouvez représenter l'ID utilisateur de l'utilisateur supprimé avec {UID}. Exemple : users/{UID},admins/{UID}.

  • Chemins Cloud Storage :

    Où stockez-vous les données utilisateur dans Google Cloud Storage ? Laissez ce champ vide si vous n'utilisez pas Cloud Storage. Saisissez les chemins complets vers les fichiers ou les répertoires de vos buckets de stockage, séparés par une virgule. Utilisez {UID} pour représenter l'ID utilisateur de l'utilisateur supprimé et {DEFAULT} pour représenter votre bucket de stockage par défaut.

    Voici quelques exemples :

    • Pour supprimer tous les fichiers de votre bucket par défaut avec le schéma de nommage de fichier {UID}-pic.png, saisissez {DEFAULT}/{UID}-pic.png.
    • Pour également supprimer tous les fichiers d'un autre bucket appelé my-app-logs avec le schéma de nommage de fichier {UID}-logs.txt, saisissez {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt.
    • Pour également supprimer un répertoire libellé avec un ID utilisateur et tous ses fichiers (comme media/{UID}), saisissez {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}.

Découvrir les données à supprimer

Cette extension utilise plusieurs mécanismes pour découvrir les données à supprimer. Ces mécanismes doivent être explicitement configurés pour que l'extension puisse supprimer les données. L'extension ne supprimera que les données explicitement configurées pour être supprimées en fonction des mécanismes fournis.

Tenez compte des différences de comportement suivantes entre chaque service :

  • Cloud Firestore : le comportement par défaut consiste à supprimer un document de manière superficielle (les sous-collections ne seront pas supprimées). Pour supprimer de manière récursive toutes les sous-collections d'un document, définissez l'option "Mode de suppression Cloud Firestore" sur "Récursif".
  • Realtime Database : toutes les données du nœud spécifié seront supprimées.
  • Stockage : si un chemin d'accès à un répertoire est spécifié, tous les fichiers et sous-répertoires seront supprimés.

Par chemin

Lorsque vous configurez les chemins Cloud Firestore, Realtime Database et Cloud Storage, vous pouvez définir une variable UID dans les chemins qui sera remplacée par l'UID de l'utilisateur authentifié. Lorsqu'un utilisateur est supprimé, l'extension supprime toutes les données associées à cet UID dans les chemins spécifiés, par exemple :

  • Chemin(s) Cloud Firestore : users/{UID},admins/{UID}
  • Chemin(s) Realtime Database : likes/{UID}
  • Chemin(s) Cloud Storage : {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Découverte automatique (Cloud Firestore)

Pour permettre à l'extension de découvrir automatiquement les documents Firestore à supprimer, définissez le paramètre de configuration "Activer la découverte automatique" sur "Oui".

La découverte automatique fonctionne en parcourant automatiquement la base de données pour trouver les collections et les documents qui doivent être supprimés en fonction de votre configuration. L'extension identifie ces collections et documents à l'aide de la méthodologie suivante :

  1. Tout d'abord, l'extension recherche toutes les collections racines dans la base de données. Si l'ID d'une collection correspond à celui de l'UID de l'utilisateur, l'ensemble de la collection est supprimé (la suppression est récursive ou superficielle, selon la configuration de l'extension pour le "Mode de suppression Cloud Firestore").
  2. Ensuite, si l'ID de la collection ne correspond pas, l'extension tente d'identifier et de supprimer un document si son ID de document correspond à celui de l'UID de l'utilisateur.
  3. Enfin, pour chaque document : a. Si l'étendue de la recherche actuelle (voir ci-dessous) est inférieure ou égale à l'étendue de la recherche configurée, le processus est répété pour toutes les sous-collections du document actuel. b. Si des champs de recherche ont été configurés, l'extension vérifie si les champs fournis correspondent à l'UID de l'utilisateur. Si une correspondance est trouvée, le document est supprimé.

Étendue de la recherche

L'extension propose une valeur d'étendue de la recherche configurable (par défaut, elle est de 3). Le parcours ne sera exécuté que si la profondeur de recherche actuelle est inférieure ou égale à la profondeur de recherche configurée. L'étendue de la recherche actuelle est basée sur la profondeur de la collection parente actuelle ou des documents, par exemple.

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

Cette extension ne supprime PAS automatiquement les UID stockés dans des tableaux ou des cartes, et elle ne recherche pas les données associées à un ID utilisateur stockées dans des sous-collections profondément imbriquées au-delà de la profondeur spécifiée ci-dessus.