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

Avec Cloud Firestore Security Rules, vous pouvez vous concentrer sur l'expérience utilisateur sans avoir à gérer l'infrastructure ni à écrire le code d'authentification et d'autorisation côté serveur.

Les règles de sécurité assurent le contrôle des accès et la validation des données à l'aide d'un format simple et expressif. Pour créer des systèmes où les accès sont basés sur les utilisateurs et sur les rôles afin de sécuriser les données utilisateurs, vous devez utiliser conjointement Firebase Authentication avec Cloud Firestore Security Rules.

Règles de sécurité version 2

La version 2 des règles de sécurité Cloud Firestore est disponible depuis mai 2019. Elle modifie le comportement des caractères génériques récursifs {name=**}. Vous devez utiliser cette version si vous prévoyez d'utiliser des requêtes de groupe de collections. Pour activer la version 2, mettez rules_version = '2'; sur la première ligne de vos règles de sécurité:

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

Écrire des règles

Vous allez écrire et gérer des Cloud Firestore Security Rules adaptés 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.

Tous les Cloud Firestore Security Rules sont constitués d'instructions match qui identifient les documents de votre base de données et d'expressions allow 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 cliente mobile/Web Cloud Firestore est évaluée à l'aide des règles de sécurité avant toute lecture ou écriture de données. Si ces règles refusent l'accès à l'un des chemins de document spécifiés, la requête entière échoue.

Voici quelques règles de base à titre d'exemple. Ces règles sont valides mais elles ne sont pas recommandées pour des 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;
    }
  }
}

Tout refuser

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

Allow all (Tout autoriser)

// 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. Consultez le guide Structurer les règles de sécurité pour apprendre à faire correspondre des chemins de données spécifiques et à travailler avec des données hiérarchiques.

Tester des règles

Cloud Firestore inclut un simulateur de règles que vous pouvez utiliser pour tester votre ensemble de règles. Vous pouvez accéder au simulateur à l'aide de l'onglet Règles dans 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 requête authentifiée, vous pouvez créer et prévisualiser des jetons d'authentification émis par différents fournisseurs. Les requêtes simulées sont évaluées à l'aide de l'ensemble de règles de l'éditeur. L'ensemble de règles actuellement déployé n'est pas utilisé.

Déployer des règles

Avant de pouvoir utiliser Cloud Firestore depuis votre application mobile, vous devez 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.

La mise à jour de Cloud Firestore Security Rules peut prendre jusqu'à une minute pour affecter les nouvelles requêtes et les nouveaux écouteurs. Toutefois, la propagation complète des modifications sur tous les écouteurs actifs peut 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.

Rédigez les 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. Si vous utilisez l'interface de ligne de commande, vous pouvez bénéficier du contrôle de version pour conserver vos règles comme le code de votre application et pour les déployer dans le cadre du 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

Renforcer la sécurité pour Cloud Storage

Vos applications bénéficieront des fonctionnalités de base de données robustes 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, car 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.

Étapes suivantes