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

Avec les règles de sécurité Firestore, 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 les règles de sécurité Firestore.

Règles de sécurité version 2

La version 2 des règles de sécurité 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 écrirez et gérerez des règles de sécurité Firestore adaptées au modèle de données que vous créez pour la base de données par défaut et pour chaque base de données supplémentaire de votre projet.

Toutes les règles de sécurité de Firestore sont constituées de correspondances match identifiant des 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 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

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 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 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 de l'API REST de gestion Firestore.

La mise à jour des règles de sécurité Firestore s'applique aux nouvelles requêtes et aux nouveaux écouteurs en moins d'une minute. 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, ouvrez l'onglet Règles dans la section Firestore de la console Firebase pour la base de données par défaut de votre projet.

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

Étapes suivantes