Utiliser l'extension Supprimer les données utilisateur

L'extension Supprimer les données utilisateur (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 l'un ou de l'ensemble des éléments suivants: Cloud Firestore, Realtime Database ou Cloud Storage. Chaque déclencheur de l'extension pour supprimer des données est associé à l'UserId de l'utilisateur.

Cette extension est utile pour respecter la vie privée des utilisateurs et répondre aux exigences de conformité. Toutefois, l'utilisation de cette extension ne garantit pas le respect des réglementations sectorielles et gouvernementales.

Prérequis

Installer l'extension

Pour installer l'extension, suivez la procédure décrite sur la page Installer l'extension Firebase. En résumé, effectuez l'une des opérations suivantes:

Lors de l'installation de l'extension, vous êtes 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. Vous souhaitez généralement un emplacement à proximité de votre base de données. Si vous avez besoin d'aide pour choisir un emplacement, consultez le guide de sélection de l'emplacement.

  • Chemins d'accès à 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 remplacer l'ID utilisateur de l'utilisateur supprimé par {UID}. Par exemple, si vous avez les collections users et admins, et que chaque collection contient des documents dont l'ID de document est l'ID utilisateur, vous pouvez saisir users/{UID},admins/{UID}.

  • Mode de suppression de Cloud Firestore:

    (applicable uniquement si vous utilisez le paramètre Cloud Firestore paths.) Comment voulez-vous supprimer des documents Cloud Firestore ? Pour supprimer également les documents des sous-collections, définissez ce paramètre sur recursive.

  • Instance Realtime Database:

    À partir de quelle instance Realtime Database souhaitez-vous supprimer les données utilisateur ?

  • Emplacement de 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 d'accès à 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 d'accès 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 d'accès à 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 d'accès complets aux fichiers ou aux répertoires de vos buckets Storage, en les séparant par une virgule. Utilisez {UID} pour représenter l'ID utilisateur de l'utilisateur supprimé et {DEFAULT} pour représenter votre bucket Storage par défaut.

    Voici une série d'exemples:

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

Détecter les données à supprimer

Cette extension utilise plusieurs mécanismes pour identifier 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 qui sont 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 de façon superficielle un document (les sous-collections ne seront pas supprimées). Pour supprimer de manière récursive toutes les sous-collections d'un document, définissez le "Mode de suppression Cloud Firestore" l'option "Récursive".
  • 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 d'accès

Lors de la configuration de Cloud Firestore, Realtime Database et Chemins d'accès Cloud Storage, il est possible de 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 donné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étecter automatiquement les documents Firestore à supprimer, définissez le paramètre de configuration "Enable auto discovery" (Activer la détection automatique) sur "Yes" (Oui).

La découverte automatique consiste à balayer automatiquement la base de données pour trouver les collections et les documents à supprimer en fonction de votre configuration. L'extension identifie ces collections et documents selon 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, la collection entière est supprimée (la suppression peut être récursive ou superficielle, en fonction de la configuration de l'extension pour le "mode de suppression Cloud Firestore").
  2. Ensuite, si l'ID de collection ne correspond pas, l'extension tentera d'identifier et de supprimer un document si son ID de document 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'identifiant unique de l'utilisateur. Si une correspondance est trouvée, le document sera supprimé.

Étendue de la recherche

L'extension propose une valeur configurable pour la profondeur de recherche (3 par défaut). Le balayage ne sera 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 celle 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 identifiants uniques stockés dans des tableaux ou des cartes. De plus, elle ne recherche pas les données associées à l'identifiant d'utilisateur stockées dans des sous-collections profondément imbriquées au-delà de la profondeur spécifiée ci-dessus.