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é assurent 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 envisagez d'utiliser des requêtes de groupe de collecte . Vous devez vous inscrire à la version 2 en définissant 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

Vous rédigerez et gérerez des règles de sécurité Cloud Firestore adaptées au modèle de données que vous créez pour la base de données par défaut et chaque base de données supplémentaire de votre projet.

Toutes les règles de sécurité Cloud Firestore se composent d'instructions match , qui identifient les documents de votre base de données et allow les 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 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 apprendre à 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 depuis l' onglet Règles de la section Cloud Firestore de la console Firebase.

Le simulateur de règles vous permet de simuler des lectures, écritures et 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 provenant de différents fournisseurs. Les requêtes simulées s'exécutent sur l'ensemble de règles dans votre éditeur, et non sur votre ensemble de règles actuellement déployé.

Déploiement de règles

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, à l'aide de la CLI Firebase ou avec l'API REST de gestion Cloud Firestore.

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 et leur impact sur les auditeurs actifs peuvent prendre jusqu'à 10 minutes.

Utiliser la console Firebase

Pour configurer et déployer votre premier ensemble de règles, pour la base de données par défaut de votre projet, 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 la CLI Firebase

Vous pouvez également déployer des règles à l'aide de la CLI Firebase . L'utilisation de la CLI 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 rules for all configured databases
firebase deploy --only firestore

Améliorer la sécurité du stockage cloud

Vos applications bénéficieront des fonctionnalités robustes de base de données de Cloud Firestore et des fonctionnalités de stockage et de gestion de fichiers de Cloud Storage. Utilisés ensemble, ces produits renforcent également la sécurité des applications, puisque Cloud Firestore peut capturer les exigences d'autorisation utilisables par les règles de sécurité Firebase pour les deux produits. Pour en savoir plus, consultez le guide de Cloud Storage .

Prochaines étapes