Unsichere Regeln korrigieren

In diesem Leitfaden erfahren Sie mehr über häufige Sicherheitslücken in Cloud Firestore Security Rules-Konfigurationen, wie Sie Ihre eigenen Regeln überprüfen und besser schützen und wie Sie Ihre Änderungen testen, bevor Sie sie bereitstellen.

Wenn Sie KI-Unterstützung wünschen, kopieren Sie den Prompt unten in Ihren KI-Coding-Agenten (z. B. Gemini in Android Studio, Antigravity, Claude Code, Codex und Cursor). Sie können den Prompt anpassen und mit Ihrem Agenten iterieren. Ausführliche Informationen zur Installation finden Sie unter Firebase-Agenten-Skills.

Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me write, validate, and deploy Firebase Security Rules to protect my app's Firestore data.

Wenn Sie eine Benachrichtigung erhalten, dass Ihre Cloud Firestore-Datenbank nicht ordnungsgemäß gesichert ist, können Sie die Sicherheitslücken beheben, indem Sie Ihre Cloud Firestore Security Rules ändern und testen.

Rufen Sie in der Firebase Console den Tab "Regeln" auf, um Ihre vorhandenen Sicherheitsregeln anzusehen.

Cloud Firestore Security Rules verstehen

Cloud Firestore Security Rules schützen Ihre Daten vor böswilligen Nutzern. Die Standardregeln für alle Cloud Firestore-Instanzen, die in der Firebase Console erstellt werden, verweigern allen Nutzern den Zugriff. Damit Sie Ihre Anwendung entwickeln und auf Ihre Datenbank zugreifen können, müssen Sie diese Regeln ändern und möglicherweise allen Nutzern in einer Entwicklungsumgebung uneingeschränkten Zugriff gewähren. Bevor Sie Ihre Anwendung in einer Produktionsumgebung bereitstellen, sollten Sie sich jedoch die Zeit nehmen, Ihre Regeln entsprechend zu konfigurieren und Ihre Daten zu schützen.

Wenn Sie Ihre App entwickeln und verschiedene Konfigurationen für Ihre Regeln testen, können Sie den Cloud Firestore-Emulator verwenden, um Ihre App in einer lokalen Entwicklungsumgebung auszuführen.

Häufige Szenarien mit unsicheren Regeln

Die Cloud Firestore Security Rules, die Sie möglicherweise standardmäßig oder bei der ersten Entwicklung Ihrer App mit Cloud Firestore eingerichtet haben, sollten vor der Bereitstellung Ihrer App überprüft und aktualisiert werden. Achten Sie darauf, die Daten Ihrer Nutzer ordnungsgemäß zu schützen, indem Sie die folgenden häufigen Fehler vermeiden.

Unbeschränkter Zugriff

Beim Einrichten von Cloud Firestore haben Sie möglicherweise Regeln festgelegt, die während der Entwicklung einen offenen Zugriff ermöglichen. Eventuell gehen Sie auch davon aus, dass Sie die einzige Person sind, die Ihre Anwendung nutzt. Allerdings ist sie nach dem Bereitstellen im Internet verfügbar. Wenn Sie Nutzer nicht authentifizieren und keine Sicherheitsregeln konfigurieren, kann jeder, der Ihre Projekt-ID errät, die Daten stehlen, ändern oder löschen.

Nicht empfohlen: Alle Nutzer haben Lese- und Schreibzugriff.
// 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;
    }
  }
}
Lösung: Legen Sie Regeln fest, die den Lese- und Schreibzugriff beschränken.

Erstellen Sie Regeln, die für Ihre Datenhierarchie sinnvoll sind. Eine der gängigsten Lösungen für diese Unsicherheit ist die nutzerbasierte Sicherheit mit Firebase Authentication. Weitere Informationen zum Authentifizieren von Nutzern mit Regeln

Nur Eigentümer

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow only authenticated content owners access
    match /some_collection/{document} {
      // Allow reads and deletion if the current user owns the existing document
      allow read, delete: if request.auth.uid == resource.data.author_uid;
      // Allow creation if the current user owns the new document
      allow create: if request.auth.uid == request.resource.data.author_uid;
      // Allow updates by the owner, and prevent change of ownership
      allow update: if request.auth.uid == request.resource.data.author_uid
                    && request.auth.uid == resource.data.author_uid;

    }
  }
}
  

Gemischter öffentlicher und privater Zugriff

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow public read access, but only content owners can write
    match /some_collection/{document} {
      // Allow public reads
      allow read: if true
      // Allow creation if the current user owns the new document
      allow create: if request.auth.uid == request.resource.data.author_uid;
      // Allow updates by the owner, and prevent change of ownership
      allow update: if request.auth.uid == request.resource.data.author_uid
                    && request.auth.uid == resource.data.author_uid;
      // Allow deletion if the current user owns the existing document
      allow delete: if request.auth.uid == resource.data.author_uid;
    }
  }
}
  

Zugriff für jeden authentifizierten Nutzer

Manchmal wird in Cloud Firestore Security Rules geprüft, ob ein Nutzer angemeldet ist, der Zugriff wird jedoch nicht weiter auf Grundlage dieser Authentifizierung eingeschränkt. Wenn eine Ihrer Regeln auth != null enthält, bestätigen Sie, dass alle angemeldeten Nutzer Zugriff auf die Daten haben sollen.

Nicht empfohlen: Jeder angemeldete Nutzer hat Lese- und Schreibzugriff auf Ihre gesamte Datenbank.
service cloud.firestore {
  match /databases/{database}/documents {
    match /some_collection/{document} {
      allow read, write: if request.auth != null;
    }
  }
}
Lösung: Grenzen Sie den Zugriff mithilfe von Sicherheitsbedingungen ein.

Wenn Sie die Authentifizierung prüfen lassen, können Sie auch eines der Authentifizierungsattribute verwenden, um den Zugriff für bestimmte Nutzer und bestimmte Datensätze weiter einzuschränken. Weitere Informationen finden Sie unter Sicherheitsbedingungen hinzufügen und rollenbasierter Zugriff.

Rollenbasierter Zugriff

service cloud.firestore {
  match /databases/{database}/documents {
    // Assign roles to all users and refine access based on user roles
    match /some_collection/{document} {
     allow read: if request.auth != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Reader"
     allow write: if request.auth != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Writer"

     // Note: Checking for roles in your database using `get` (as in the code
     // above) or `exists` carry standard charges for read operations.
    }
  }
}

Attributbasierter Zugriff

// Give each user in your database a particular attribute
// and set it to true/false
// Then, use that attribute to grant access to subsets of data
// For example, an "admin" attribute set
// to "true" grants write access to data

service cloud.firestore {
  match /databases/{database}/documents {
    match /collection/{document} {
      allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true;
      allow read: true;
    }
  }
}
  

Gemischter öffentlicher und privater Zugriff

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow public read access, but only content owners can write
    match /some_collection/{document} {
      allow read: if true
      allow write: if request.auth.uid == request.resource.data.author_uid
    }
  }
}
  

Zugriff für nicht bestätigte E‑Mail-Adressen

Manchmal prüft Cloud Firestore Security Rules, ob die E-Mail-Adresse eines Nutzers zu einer bestimmten Domain gehört. Das ist zwar im Allgemeinen eine gute Praxis, aber E-Mail-Adressen werden bei der Anmeldung nicht immer überprüft, bis der Nutzer nach Erhalt einer Bestätigungs-E-Mail einen zusätzlichen Schritt ausführt. Prüfen Sie, ob die E-Mail-Adresse tatsächlich dem Nutzer gehört.

Nicht empfohlen: Jeder Nutzer kann sich mit einer beliebigen E‑Mail-Adresse anmelden.
service cloud.firestore {
  match /databases/{database}/documents {
    // Allow access based on email domain
    match /some_collection/{document} {
     allow read: if request.auth != null
                 && request.auth.email.endsWith('@example.com')
    }
  }
}
Lösung: Beschränken Sie den Zugriff auf bestätigte E‑Mail-Adressen.

E‑Mail-Adressen bestätigen

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow access based on email domain
    match /some_collection/{document} {
     allow read: if request.auth != null
                 && request.auth.email_verified
                 && request.auth.email.endsWith('@example.com')
    }
  }
}

Geschlossener Zugriff

Ein weiterer gängiger Ansatz während der Entwicklung Ihrer Anwendung besteht darin, Ihre Daten zu sperren. In der Regel bedeutet dies, dass Sie den Lese- und Schreibzugriff für alle Nutzer folgendermaßen gesperrt haben:

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

Die Firebase Admin SDKs und Cloud Functions haben aber weiterhin Zugriff auf Ihre Datenbank. Verwenden Sie diese Regeln, wenn Sie Cloud Firestore als reines Server-Backend in Verbindung mit dem Firebase Admin SDK verwenden möchten. Dies ist zwar sicher, Sie müssen aber testen, ob die Clients Ihrer Anwendung Daten ordnungsgemäß abrufen können.

Weitere Informationen zu Cloud Firestore Security Rules und ihrer Funktionsweise finden Sie unter Erste Schritte mit Cloud Firestore Security Rules.

In Cloud Firestore Security Rules nachsehen

Wenn Sie das Verhalten Ihrer App prüfen und Ihre Cloud Firestore Security Rules-Konfigurationen verifizieren möchten, verwenden Sie den Cloud Firestore-Emulator. Mit dem Cloud Firestore-Emulator können Sie Unit-Tests in einer lokalen Umgebung ausführen und automatisieren, bevor Sie Änderungen bereitstellen.

Mit dem Rules Playground-Tool können Sie Ihre aktualisierten Cloud Firestore Security Rules in der Firebase Console schnell testen.

  1. Klicken Sie zum Öffnen von Regel-Playground auf dem Tab Regeln auf Regel-Playground.
  2. Wählen Sie in den Einstellungen zu Regel-Playground Optionen für Ihren Test aus, wie z. B. die folgenden:
    • Lese- oder Schreibvorgänge testen
    • Unter Standort einen bestimmten Standort in Ihrer Datenbank als Pfad
    • Authentifizierungstyp — nicht authentifizierter Nutzer, authentifizierter anonymer Nutzer oder eine bestimmte Nutzer-ID
    • Dokumentspezifische Daten, auf die Ihre Regeln speziell verweisen (z. B. wenn für Ihre Regeln das Vorhandensein eines bestimmten Felds erforderlich ist, bevor ein Schreibvorgang erlaubt wird)
  3. Klicken Sie auf Ausführen und sehen Sie sich die Ergebnisse im Banner über dem Fenster mit den Regeln an.