Erste Schritte mit Sicherheitsregeln

Die Firestore-Sicherheitsregeln unterstützen Sie bei der Gestaltung einer möglichst benutzerfreundlichen Oberfläche, denn Sie müssen keine Infrastruktur verwalten oder serverseitigen Authentifizierungs- und Autorisierungscode schreiben.

Die Sicherheitsregel stellen die Zugriffssteuerung und die Datenvalidierung in einem einfachen, aber leistungsstarken Format bereit. Verwenden Sie Firebase Authentication mit den Firestore-Sicherheitsregeln, um nutzer- und rollenbasierte Zugriffssysteme zum Schutz der Nutzerdaten zu erstellen.

Sicherheitsregeln Version 2

Seit Mai 2019 ist Version 2 der Firestore-Sicherheitsregeln verfügbar. In Version 2 der Sicherheitsregeln wird das Verhalten von rekursiven Platzhaltern {name=**} verändert. Sie müssen Version 2 verwenden, wenn Sie Sammlungsgruppenabfragen verwenden möchten. Sie müssen Version 2 aktivieren, indem Sie rules_version = '2'; als erste Zeile in Ihren Sicherheitsregeln festlegen:

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

Regeln schreiben

Sie schreiben und verwalten Firestore-Sicherheitsregeln, die auf das Datenmodell zugeschnitten sind, das Sie für die Standarddatenbank und jede zusätzliche Datenbank in Ihrem Projekt erstellen.

Alle Firestore-Sicherheitsregeln bestehen aus match-Anweisungen, mit denen Dokumente in Ihrer Datenbank identifiziert werden, und allow-Ausdrücken, über die der Zugriff auf diese Dokumente gesteuert wird:

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

Jede Datenbankanfrage aus einer Firestore-Mobil-/Webclientbibliothek wird anhand Ihrer Sicherheitsregeln ausgewertet, bevor Daten gelesen oder geschrieben werden. Wenn die Regeln den Zugriff auf einen der angegebenen Dokumentpfade verweigern, schlägt die gesamte Anfrage fehl.

Im Folgenden finden Sie einige Beispiele für grundlegende Regelsätze. Obwohl diese Regeln gültig sind, werden sie für Produktionsanwendungen nicht empfohlen:

Auth erforderlich

// 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;
    }
  }
}

Alle ablehnen

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

Alle zulassen

// 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;
    }
  }
}

Der in den obigen Beispielen verwendete Pfad {document=**} entspricht jedem Dokument in der gesamten Datenbank. Fahren Sie mit dem Leitfaden Sicherheitsregeln strukturieren fort, um zu erfahren, wie Sie bestimmte Datenpfade zuordnen und mit hierarchischen Daten arbeiten können.

Regeln testen

Firestore bietet einen Regelsimulator, mit dem Sie Ihren Regelsatz testen können. Sie können sowohl in der Google Cloud Console als auch in der Firebase Console auf den Simulator zugreifen.

Mit dem Regelsimulator können Sie authentifizierte und nicht authentifizierte Lese-, Schreib- und Löschvorgänge simulieren. Wenn Sie eine authentifizierte Anfrage simulieren, können Sie Authentifizierungstokens von verschiedenen Anbietern erstellen und in der Vorschau anzeigen lassen. Simulierte Anfragen werden anhand des Regelsatzes in Ihrem Editor und nicht anhand des bereitgestellten Regelsatzes ausgeführt.

Regeln in der Google Cloud Console testen

Der Regelsimulator in der Google Cloud Console ist für Firestore im nativen Modus sowohl in der Standard- als auch in der Enterprise-Version verfügbar.

Erforderliche Berechtigungen

Zum Testen von Sicherheitsregeln in der Google Cloud -Konsole benötigen Sie die folgende IAM-Berechtigung:

  • firebaserules.rulesets.test

So simulieren Sie eine Datenbankanfrage in der Google Cloud -Console:

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
  2. Klicken Sie auf die ID der Datenbank, die Sie testen möchten.
  3. Klicken Sie im Navigationsmenü auf Sicherheit.
  4. Klicken Sie auf den Tab Simulator.
  5. Wählen Sie in der Drop-down-Liste Simulationstyp einen Vorgangstyp aus: get, create, update oder delete.
  6. Geben Sie im Feld Speicherort den Dokumentpfad ein, den Sie testen möchten, z. B. users/user_123.
  7. Optional: Klicken Sie für create- und update-Anfragen auf Dokument erstellen, um die Nutzlast des Mock-Dokuments zu konfigurieren.
  8. Optional: Wenn Sie eine authentifizierte Anfrage simulieren möchten, aktivieren Sie Authentifizierung, wählen Sie einen Authentifizierungsanbieter aus (z. B. google.com oder Anonym) und konfigurieren Sie die Token-Payload-Felder.
  9. Klicken Sie auf Ausführen.

Im Auswertungsbereich wird angezeigt, ob die Anfrage zugelassen oder abgelehnt wurde. Außerdem sind detaillierte Berichtspositionen für jede ausgewertete Bedingung und Hervorhebungen auf Zeilenebene im Code-Editor zu sehen.

Regeln in der Firebase Console testen

Wenn Sie Regeln in der Firebase Console testen möchten, rufen Sie Datenbanken und Speicher > Firestore > Tab Regeln auf. Klicken Sie auf Regel-Playground, um die Simulatoreinstellungen zu öffnen, wählen Sie die gewünschten Simulationsoptionen aus und klicken Sie dann auf Ausführen.

Regeln bereitstellen

Bevor Sie Firestore in Ihrer mobilen App verwenden können, müssen Sie Sicherheitsregeln bereitstellen. Sie können Regeln in der Firebase Console, in der Google Cloud Console, mit der Firebase CLI oder mit der Firestore Management REST API bereitstellen.

Es kann bis zu einer Minute dauern, bis Aktualisierungen von Firestore-Sicherheitsregeln für neue Abfragen und Listener wirksam werden. Es kann jedoch bis zu zehn Minuten dauern, bis die Änderungen vollständig umgesetzt sind und für alle aktiven Listener gelten.

Firebase Console verwenden

Öffnen Sie in der Firebase Console für die Standarddatenbank in Ihrem Projekt den Tab Datenbanken und Speicher > Firestore > Regeln, um Ihre ersten Regeln einzurichten und bereitzustellen.

Wenn Sie mehrere Datenbanken für Ihr Projekt erstellen, können Sie für jede Datenbank Firestore-Sicherheitsregeln bereitstellen. Verwenden Sie in der Firebase Console die Datenbankauswahl, um zwischen der Standarddatenbank und zusätzlichen Datenbanken zu wechseln.

Schreiben Sie Ihre Regeln im Onlineeditor und klicken Sie dann auf Veröffentlichen.

Verwenden Sie die Google Cloud Console.

Sie können Firestore-Sicherheitsregeln direkt in derGoogle Cloud Console verwalten und bereitstellen. Der Regeleditor ist für Firestore im nativen Modus sowohl in der Standard- als auch in der Enterprise-Version verfügbar.

Erforderliche Berechtigungen

Zum Verwalten und Bereitstellen von Sicherheitsregeln in der Google Cloud -Konsole benötigen Sie die folgenden IAM-Berechtigungen:

  • firebaserules.releases.create
  • firebaserules.releases.delete
  • firebaserules.releases.update
  • firebaserules.rulesets.create
  • firebaserules.rulesets.delete
  • firebaserules.rulesets.list
  • firebaserules.rulesets.test (erforderlich für die Verwendung des Regelsimulators)

So stellen Sie Regeln in der Google Cloud Console bereit:

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
  2. Klicken Sie auf die ID der Datenbank, die Sie verwalten möchten.
  3. Klicken Sie im Navigationsmenü auf Sicherheit.
  4. Klicken Sie auf den Tab Firestore-Regeln.
  5. Rufen Sie Ihre Regeln im Regeleditor auf. Wenn Sie ein Regelset bearbeiten möchten, klicken Sie auf Neues Regelset oder Regelset klonen und nehmen Sie dann die gewünschten Änderungen vor.
  6. Klicken Sie auf Veröffentlichen, um die Änderungen bereitzustellen.

Sie können sich auch frühere Regelsätze in der Zeitachse ansehen und sie klonen oder wiederherstellen.

Firebase CLI verwenden

Sie können Regeln auch mithilfe von Firebase CLI bereitstellen. Mithilfe der Befehlszeile können Sie Ihre Regeln mit Ihrem Anwendungscode einer Versionsverwaltung unterwerfen und Regeln im Rahmen des bestehenden Bereitstellungsprozesses bereitstellen.

// 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

Tipp