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
Vous devez utiliser Firebase Authentication pour gérer vos utilisateurs.
Cette extension ne supprime les données que de Cloud Firestore, Realtime Database et Cloud Storage. Si vous stockez des données utilisateur ailleurs, vous devez également supprimer les données utilisateur de ces sources lorsque vous supprimez des utilisateurs.
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:
Console Firebase:cliquez sur le bouton suivant:
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 ê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 collectionsusers
etadmins
, et que chaque collection contient des documents dont l'ID de document est l'ID utilisateur, vous pouvez saisirusers/{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 surrecursive
.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}
.
- Pour supprimer tous les fichiers de votre bucket par défaut portant le schéma de nommage
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:
- 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").
- 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.
- 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.