Check out what’s new from Firebase at Google I/O 2022. 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 du 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 Firebase Authentication 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 envisagez d'utiliser des requêtes de groupe de collections . Vous devez vous inscrire à 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 demande de base de données provenant d'une bibliothèque client 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 requête 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 savoir comment faire correspondre des chemins de données spécifiques et travailler avec 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 sur l'ensemble de règles de votre éditeur, et non sur l'ensemble de règles actuellement déployé.

Règles de déploiement

Avant de pouvoir commencer à utiliser Cloud Firestore depuis votre application mobile, vous devrez 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, cela peut prendre jusqu'à 10 minutes pour propager complètement les modifications 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.

Rédigez 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 l'interface de ligne de commande vous permet de conserver 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