Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Premiers pas avec les règles de sécurité Cloud Firestore

Avec les règles de sécurité Cloud Firestore, vous pouvez vous concentrer sur la création d'une expérience utilisateur exceptionnelle sans avoir à gérer l'infrastructure ou à écrire un code d'authentification et d'autorisation côté serveur.

Les règles de sécurité fournissent le contrôle d'accès et la validation des données dans un format simple mais expressif. Pour créer des systèmes d'accès basés sur les utilisateurs et les rôles qui protègent les données de vos utilisateurs, vous devez utiliser l' authentification Firebase avec les règles de sécurité Cloud Firestore.

Règles de sécurité version 2

Depuis mai 2019, la version 2 des règles de sécurité Cloud Firestore est désormais disponible. La version 2 des règles modifie le comportement des caractères génériques récursifs {name=**} . Vous devez utiliser la version 2 si vous prévoyez d'utiliser des requêtes de groupe de collecte . Vous devez vous rules_version = '2'; à la version 2 en faisant rules_version = '2'; la première ligne de vos règles de sécurité :

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

Règles d'écriture

Toutes les règles de sécurité Cloud Firestore consistent en des déclarations de match , qui identifient les documents dans votre base de données, et allow expressions, qui contrôlent l'accès à ces documents :

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

Chaque requête de base de données d'une bibliothèque cliente mobile/web Cloud Firestore est évaluée par rapport à vos règles de sécurité avant de lire ou d'écrire des données. Si les règles refusent l'accès à l'un des chemins de document spécifiés, la demande entière échoue.

Vous trouverez ci-dessous quelques exemples d'ensembles de règles de base. Bien que ces règles soient valides, elles ne sont pas recommandées pour les applications de production :

Authentification requise

// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Nier tous

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Autorise tout

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

Le chemin {document=**} utilisé dans les exemples ci-dessus correspond à n'importe quel document de la base de données entière. Continuez avec le guide de structuration des règles de sécurité pour apprendre à faire correspondre des chemins de données spécifiques et à utiliser des données hiérarchiques.

Règles de test

Cloud Firestore fournit un simulateur de règles que vous pouvez utiliser pour tester votre ensemble de règles. Vous pouvez accéder au simulateur à partir de l' onglet Règles de la section Cloud Firestore de la console Firebase.

Le simulateur de règles vous permet de simuler des lectures, des écritures et des suppressions authentifiées et non authentifiées. Lorsque vous simulez une demande authentifiée, vous pouvez créer et prévisualiser des jetons d'authentification de différents fournisseurs. Les requêtes simulées s'exécutent par rapport à l'ensemble de règles de votre éditeur, et non à votre ensemble de règles actuellement déployé.

Déploiement des règles

Avant de pouvoir commencer à utiliser Cloud Firestore à partir de votre application mobile, vous devez déployer des règles de sécurité. Vous pouvez déployer des règles dans la console Firebase ou à l'aide de la CLI Firebase.

Les mises à jour des règles de sécurité Cloud Firestore peuvent prendre jusqu'à une minute pour affecter les nouvelles requêtes et les nouveaux écouteurs. Cependant, la propagation complète des modifications peut prendre jusqu'à 10 minutes et affecter tous les auditeurs actifs.

Utiliser la console Firebase

Pour configurer et déployer votre premier ensemble de règles, ouvrez l' onglet Règles dans la section Cloud Firestore de la console Firebase.

Écrivez vos règles dans l'éditeur en ligne, puis cliquez sur Publier .

Utiliser l'interface de ligne de commande Firebase

Vous pouvez également déployer des règles à l'aide de la CLI Firebase . L'utilisation de la CLI vous permet de garder vos règles sous contrôle de version avec votre code d'application et de déployer des règles dans le cadre de votre processus de déploiement existant.

// Set up Firestore in your project directory, creates a .rules file
firebase init firestore

// Edit the generated .rules file to your desired security rules
// ...

// Deploy your .rules file
firebase deploy --only firestore:rules

Prochaines étapes