1. Les Fondamentaux des Règles Firestore
Chaque requête de lecture ou d'écriture doit satisfaire des conditions booléennes strictes basées sur le jeton d'authentification (request.auth) et les données envoyées (request.resource.data) :
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function estAuthentifie() {
return request.auth != null;
}
function estProprietaire(userId) {
return estAuthentifie() && request.auth.uid == userId;
}
match /users/{userId} {
allow read: if estAuthentifie();
allow write: if estProprietaire(userId);
}
}
}
2. Contrôle d'Accès par Rôles (RBAC) avec les Custom Claims
N'effectuez pas de lectures de base de données pour vérifier les droits d'administration. Intégrez directement des Custom Claims dans le token JWT d'authentification (ex : request.auth.token.role == 'admin') pour une vérification instantanée sans surcoût.
3. Sécurisation des Fichiers sur Firebase Storage
Protégez vos serveurs contre les uploads malveillants en limitant la taille des fichiers et les formats MIME autorisés :
match /b/{bucket}/o {
match /avatars/{userId}/{fileName} {
allow write: if request.auth.uid == userId
&& request.resource.size < 5 * 1024 * 1024
&& request.resource.contentType.matches('image/(jpeg|png|webp)');
}
}
4. Tests Automatisés avec la Suite d'Émulateurs Firebase
Validez vos règles de sécurité grâce à la suite de tests @firebase/rules-unit-testing afin de tester tous les scénarios d'attaque avant la mise en production.