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é avec les 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 devez choisir 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 des virgules. 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 contient des documents dont l'ID utilisateur est l'ID du 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 des virgules. 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 des virgules. 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 (par exemple, 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 des données. L'extension ne supprime 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 sont 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é sont supprimées.
  • Stockage : si un chemin d'accès à un répertoire est spécifié, tous les fichiers et sous-répertoires sont supprimés.

Par chemin d'accès

Lorsque vous configurez les chemins d'accès Cloud Firestore, Realtime Database et Cloud Storage, vous pouvez définir une variable UID dans les chemins d'accès 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 d'accès spécifiés. Par exemple :

  • Chemin(s) d'accès Cloud Firestore : users/{UID},admins/{UID}
  • Chemin(s) d'accès Realtime Database : likes/{UID}
  • Chemin(s) d'accè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 à l'UID de l'utilisateur, la collection entière est supprimée (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 correspond à l'UID de l'utilisateur.
  3. Enfin, pour chaque document : a. Si la profondeur de recherche actuelle (voir ci-dessous) est inférieure ou égale à la profondeur de 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 de profondeur de recherche configurable (par défaut, elle est de 3). Le parcours n'est exécuté que si la profondeur de recherche actuelle est inférieure ou égale à la profondeur de recherche configurée. La profondeur de recherche actuelle est basée sur la profondeur de la collection actuelle ou de la collection parente 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.