Règles de base de données
- Documents officiels
- Comment accorder l’accès uniquement aux utilisateurs authentifiés
- Comment autoriser la lecture d’un élément spécifique d’un groupe, mais empêcher la liste des membres du groupe
- Les règles par défaut
- Comment rendre vos fichiers lisibles et inscriptibles publiquement
- Comment désactiver l’accès en lecture et en écriture
- Comment configurer les règles
Sur cette page
- Documents officiels
- Comment accorder l’accès uniquement aux utilisateurs authentifiés
- Comment autoriser la lecture d’un élément spécifique d’un groupe, mais empêcher la liste des membres du groupe
- Les règles par défaut
- Comment rendre vos fichiers lisibles et inscriptibles publiquement
- Comment désactiver l’accès en lecture et en écriture
- Comment configurer les règles
Avec Firebase Realtime Database, vos règles de base de données constituent votre sécurité côté serveur. Vous devez être très prudent et savoir qui a accès à votre base de données. Il est important que personne n’ait accès à vos données qui ne le devrait pas.
Par défaut, les règles Firebase Realtime Database permettent à tout utilisateur authentifié de lire et d’écrire toutes les données, ce n’est probablement pas ce que vous voulez que votre application fasse.
Jetez un œil aux exemples ci-dessous pour différents scénarios.
La base de données en temps réel Firebase fournit un langage de règles flexible basé sur des expressions avec une syntaxe de type JavaScript pour définir facilement comment vos données doivent être structurées, comment elles doivent être indexées et quand vos données peuvent être lues et écrites. Combiné à nos services d’authentification, vous pouvez définir qui a accès à quelles données et protéger les informations personnelles de vos utilisateurs contre tout accès non autorisé.
Par défaut, vos règles de base de données nécessitent l’authentification Firebase et n’accordent des autorisations complètes de lecture et d’écriture qu’aux utilisateurs authentifiés. Les règles par défaut garantissent que votre base de données n’est pas accessible à n’importe qui avant que vous n’ayez la possibilité de configurer i
Documents officiels
https://firebase.google.com/docs/database/security/quickstart
Comment accorder l’accès uniquement aux utilisateurs authentifiés
Voici un exemple de règle qui donne à chaque utilisateur authentifié un nœud personnel à /users/$user_id
où $user_id est l’ID de l’utilisateur obtenu via Authentication.
// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
"rules": {
"users": {
"$user_id": {
".read": "$user_id === auth.uid",
".write": "$user_id === auth.uid"
}
}
}
}
Comment autoriser la lecture d’un élément spécifique d’un groupe, mais empêcher la liste des membres du groupe
Il est courant de créer des groupes d’éléments en créant des nœuds de valeur simples avec l’ID d’élément comme clé. Par exemple, nous pouvons ajouter un utilisateur au groupe “administrateurs” en créant un nœud à /administrators/$user_id
avec une valeur true
. Nous voulons que personne ne sache qui sont les administrateurs, pour des raisons de sécurité, mais nous voulons toujours vérifier si un utilisateur authentifié est administrateur. Avec ces règles, nous pouvons faire exactement cela :
{
"rules": {
"administrators": {
// No one can list administrators
".read": "false",
"$uid": {
// Authenticated user can check if they are in this group
".read": "$uid === auth.uid",
// Administrators can write
".write": "data.parent().child(auth.uid).val() === true",
// Allow only add or delete, no duplicates
".validate": "!data.exists() || !newData.exists() || newData.isBoolean()",
}
}
}
}
Les règles par défaut
Les règles par défaut nécessitent une authentification. Ils permettent un accès complet en lecture et en écriture aux utilisateurs authentifiés de votre application. Ils sont utiles si vous souhaitez que les données soient ouvertes à tous les utilisateurs de votre application, mais que vous ne voulez pas qu’elles soient ouvertes au monde entier.
// These rules require authentication
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
Comment rendre vos fichiers lisibles et inscriptibles publiquement
Définissez simplement :
// These rules give anyone, even people who are not users of your app,
// read and write access to your database
{
"rules": {
".read": true,
".write": true
}
}
Cela peut être utile pendant le développement, mais faites attention car ce niveau d’accès signifie que n’importe qui peut lire ou écrire dans votre base de données.
Comment désactiver l’accès en lecture et en écriture
Vous pouvez définir des règles privées pour désactiver l’accès en lecture et en écriture à votre base de données par les utilisateurs. Avec ces règles, ** vous ne pouvez accéder à la base de données que si vous disposez de privilèges d’administrateur (que vous pouvez obtenir en accédant à la base de données via la console Firebase ou en [vous connectant depuis un serveur](https://firebase.google.com/ docs/database/server/start))**.
// These rules don't allow anyone read or write access to your database
{
"rules": {
".read": false,
".write": false
}
}
Comment configurer les règles
- Allez dans la console Firebase.
- Choisissez votre projet
- Cliquez sur la section Base de données à gauche, puis sélectionnez l’onglet Règles.
Si vous souhaitez tester vos règles de sécurité avant de les mettre en production, vous pouvez simuler des opérations dans la console à l’aide du bouton Simuler en haut à droite de l’éditeur de règles.