Audit-Protokollierung der Firebase-Echtzeitdatenbank

Auf dieser Seite werden die von Firebase als Teil von Cloud Audit Logs erstellten Audit-Logs beschrieben.

Überblick

Firebase-Dienste schreiben Audit-Protokolle, um Ihnen bei der Beantwortung der Fragen zu helfen: „Wer hat was, wo und wann getan?“. Dabei handelt es sich um Cloud-Audit-Logs, die als Teil des Google Cloud-Projekts bereitgestellt werden, das mit Ihrem Firebase-Projekt verbunden ist .

Ihre Firebase-Projekte enthalten jeweils nur die Audit-Logs für Ressourcen, die sich direkt im Projekt befinden.

Eine allgemeine Übersicht über Cloud-Audit-Logs finden Sie unter Übersicht über Cloud-Audit-Logs . Weitere Informationen zum Audit-Log-Format finden Sie unter Audit-Logs verstehen .

Verfügbare Audit-Protokolle

Die folgenden Arten von Audit-Protokollen sind für Firebase Realtime Database verfügbar:

  • Überwachungsprotokolle für Administratoraktivitäten

    Beinhaltet „Administrator-Schreibvorgänge“, die Metadaten oder Konfigurationsinformationen schreiben.

    Sie können die Überwachungsprotokolle für Administratoraktivitäten nicht deaktivieren.

  • Überwachungsprotokolle für den Datenzugriff

    Beinhaltet „Administrator-Lese“-Vorgänge, die Metadaten oder Konfigurationsinformationen lesen. Umfasst auch „Datenlese-“ und „Datenschreibvorgänge“, die vom Benutzer bereitgestellte Daten lesen oder schreiben.

    Um Datenzugriffs-Überwachungsprotokolle zu erhalten, müssen Sie diese explizit aktivieren.

Ausführlichere Beschreibungen der Audit-Log-Typen finden Sie unter Arten von Audit-Logs .

Geprüfte Operationen

Im Folgenden wird zusammengefasst, welche API-Vorgänge den einzelnen Überwachungsprotokolltypen in der Firebase Realtime Database entsprechen:

Kategorie der Überwachungsprotokolle Firebase-Echtzeitdatenbankoperationen
Überwachungsprotokolle für Administratoraktivitäten (ADMIN_WRITE)
  • Datenbankinstanz erstellen
  • Datenbankinstanz löschen
  • DisableDatabaseInstance
  • ReenableDatabaseInstance
Datenzugriffs-Audit-Protokolle (ADMIN_READ)
  • GetDatabaseInstance
  • ListDatabaseInstances
Datenzugriffs-Audit-Protokolle (DATA_READ oder DATA_WRITE)
  • Verbinden
  • Trennen
  • RunOnDisconnect
  • Update (mit Vorbedingung) (für Transaktionsvorgänge). Siehe zugehörige Precondition und WriteMetadata .
Datenzugriffs-Audit-Protokolle (DATA_READ)
Datenzugriffs-Audit-Protokolle (DATA_WRITE)
  • Schreiben
  • Aktualisieren. Siehe zugehörige WriteMetadata .
  • OnDisconnectPut
  • OnDisconnectUpdate. Siehe zugehörige WriteMetadata .
  • OnDisconnectCancel

Informationen zur Audit-Authentifizierung

Audit-Protokolleinträge enthalten Informationen über die Identität, die den protokollierten Vorgang ausgeführt hat. Um einen Anforderungsaufrufer zu identifizieren, sehen Sie sich die folgenden Felder im AuditLog-Objekt an:

  • Aufbau von Echtzeitverbindungen. Bei Realtime Database Connect Vorgängen werden keine Authentifizierungsdaten protokolliert, da Realtime Database die Authentifizierung durchführt, nachdem eine Verbindung hergestellt wurde. Daher verfügt Connect über keine Authentifizierungsinformationen. Das AuthenticationInfo Objekt enthält den Platzhalter principalEmail von audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com .

  • Google-Authentifizierung. Echtzeitdatenbankvorgänge, die die Standard-Google-Authentifizierung verwenden, wie z. B. Datenverkehr vom Firebase Admin SDK oder mit einem Standard-OAuth-Token authentifizierte REST-Anfragen, verfügen über ein AuthenticationInfo Objekt, das die eigentliche E-Mail-Anmeldeinformationen enthält.

  • Firebase-Authentifizierung. Echtzeitdatenbankvorgänge, die die Firebase-Authentifizierung verwenden, verfügen über ein AuthenticationInfo Objekt, das den principalEmail Wert audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com enthält. Das Gleiche gilt, wenn Sie Ihre eigene Authentifizierungslösung implementieren, indem Sie benutzerdefinierte JWTs erstellen.

    • Wenn ein JSON-Web-Token (JWT) für die Authentifizierung durch Dritte verwendet wurde, enthält das Feld thirdPartyPrincipal den Header und die Nutzlast des Tokens. Audit-Protokolle für mit Firebase Authentication authentifizierte Anfragen enthalten beispielsweise das Firebase-Authentifizierungstoken dieser Anfrage.
  • Keine Authentifikation. Echtzeitdatenbankvorgänge, die keine Authentifizierung verwenden, verfügen über ein AuthenticationInfo Objekt, das den principalEmail Wert audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com enthält. Eine Echtzeitdatenbankinstanz mit offenen Sicherheitsregeln kann solche Anforderungen gewähren . Wir empfehlen allen Benutzern, ihre Datenbanken ordnungsgemäß zu sichern.

  • Legacy-Geheimnis-Token. Echtzeitdatenbankvorgänge mit Legacy-Tokens verfügen über ein AuthenticationInfo Objekt, das den Platzhalter principalEmail von audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com enthält. Für mit Geheimnissen signierte JWT enthält thirdPartyPrincipal die JWT-Header und Nutzdaten.

Überprüfen Sie die Auswertungen der Firebase-Sicherheitsregeln

Cloud-Audit-Protokolle können verwendet werden, um Anfragen zu identifizieren, die möglicherweise von Regeländerungen betroffen sind.

Im AuthorizationInfo- Objekt kann authorization.permission einer der folgenden sein:

  • firebasedatabase.data.get : Lesezugriff für den in resource angegebenen Pfad gewährt.
  • firebasedatabase.data.update : Schreibzugriff für den in resource angegebenen Pfad gewährt.
  • firebasedatabase.data.connect : Platzhalter für Connect und Disconnect . Für die Verbindung mit einer Echtzeitdatenbankinstanz ist keine Autorisierung erforderlich.
  • firebasedatabase.data.cancel : Wird für Unlisten und OnDisconnectCancel verwendet. Für das Widerrufen oder Abbrechen eines zuvor autorisierten Vorgangs ist keine zusätzliche Autorisierung erforderlich.

Korrelieren Sie Cloud-Audit-Protokolle mit den Ergebnissen des Echtzeitdatenbank-Profilers

Mit dem Realtime Database-Profiler in Kombination mit der Realtime Database-Audit-Protokollierung können Sie eine detaillierte Leistungsanalyse der Realtime Database durchführen. Jedes Werkzeug hat seine Stärken.

Cloud-Audit-Protokollierung Echtzeit-Datenbankprofiler
  • Prüft den Zugriff auf Datenbanken
  • Erfasst kontinuierlich alle Anfragen
  • Ermöglicht eine nachträgliche Abfrage
  • Enthält detaillierte Informationen zum Authentifizierungstoken
  • Es fallen Nutzungskosten an
  • Wird zur Leistungsanalyse verwendet
  • Bietet nützliche Tools zur Hotspot-Identifizierung und damit zur Leistungsoptimierung
  • Kann listener-broadcast messen, was aufgrund des potenziellen Datenvolumens nicht in Audit-Protokollen verfügbar ist
  • Leicht und in Echtzeit, daher gut für Live-Lasttests geeignet. Es kann einige Minuten dauern, bis Audit-Log-Einträge angezeigt werden.

Der Inhalt des Audit-Protokolls entspricht den Profiler-Metriken, wie unten gezeigt.

Name des Audit-Logging-Vorgangs Besondere Werte in
RealtimeDatabaseAuditMetadata
Name des Profiler-Vorgangs
Verbinden RequestType ist REALTIME gleichzeitige Verbindung
Trennen RequestType ist REALTIME gleichzeitige Trennung
Lesen RequestType ist REALTIME Echtzeit-Lesen
Lesen RequestType ist REST Rest-Lesen
Schreiben RequestType ist REALTIME Echtzeit-Schreiben
Schreiben RequestType ist REST Rest-Schreiben
Aktualisieren RequestType ist REALTIME .
Überprüfen Sie PreconditionType .
Echtzeit-Update
Echtzeit-Transaktion
Aktualisieren RequestType ist REST .
Überprüfen Sie PreconditionType .
Rest-Update
Rest-Transaktion
ListenerListen RequestType ist REALTIME Zuhörer-zuhören
ListenerUnlisten RequestType ist REALTIME Zuhörer-nicht zuhören
OnDisconnectPut RequestType ist REALTIME on-disconnect-put
OnDisconnectUpdate RequestType ist REALTIME On-Disconnect-Update
OnDisconnectCancel RequestType ist REALTIME on-disconnect-cancel
RunOnDisconnect RequestType ist REALTIME Nachlauf-Trennung

Audit-Log-Format

Audit-Log-Einträge umfassen die folgenden Objekte:

  • Der Protokolleintrag selbst, der ein Objekt vom Typ LogEntry ist. Zu den nützlichen Feldern gehören:

    • Der logName enthält die Ressourcen-ID und den Audit-Log-Typ.
    • Die resource enthält das Ziel des überwachten Vorgangs.
    • Der timestamp enthält den Zeitpunkt des geprüften Vorgangs.
    • Die protoPayload enthält die geprüften Informationen.
  • Die Audit-Protokollierungsdaten, bei denen es sich um ein AuditLog Objekt handelt, das im Feld protoPayload des Protokolleintrags gespeichert ist.

  • Optionale dienstspezifische Prüfinformationen, bei denen es sich um ein dienstspezifisches Objekt handelt. Bei älteren Integrationen wird dieses Objekt im Feld serviceData des AuditLog Objekts gespeichert. Neuere Integrationen verwenden das metadata .

Informationen zu anderen Feldern in diesen Objekten und deren Interpretation finden Sie unter „Überwachungsprotokolle verstehen“ .

Weitere Informationen zu Feldern in protoPayload.metadata für DATA_READ und DATA_WRITE Vorgänge finden Sie in der Referenzdokumentation .

Protokollname

Ressourcennamen von Cloud-Audit-Logs geben an, welches Firebase-Projekt oder eine andere Google Cloud-Entität die Audit-Logs besitzt und ob das Protokoll Audit-Logging-Daten zu Administratoraktivitäten, Datenzugriff, verweigerten Richtlinien oder Systemereignissen enthält. Im Folgenden werden beispielsweise Protokollnamen für Überwachungsprotokolle für Administratoraktivitäten auf Projektebene und für die Überwachungsprotokolle zum Datenzugriff einer Organisation angezeigt. Die Variablen bezeichnen Firebase-Projekt- und Organisationskennungen.

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

Dienstname

Audit-Logs der Firebase-Echtzeitdatenbank verwenden den Dienstnamen firebasedatabase.googleapis.com .

Eine vollständige Liste aller Cloud Logging API-Dienstnamen und ihres entsprechenden überwachten Ressourcentyps finden Sie unter Dienste zu Ressourcen zuordnen .

Ressourcentypen

Audit-Logs der Firebase-Echtzeitdatenbank verwenden für alle Audit-Logs den Ressourcentyp audited_resource .

Eine Liste aller von Cloud Logging überwachten Ressourcentypen und beschreibende Informationen finden Sie unter Überwachte Ressourcentypen .

Aktivieren Sie die Audit-Protokollierung

Überwachungsprotokolle für Administratoraktivitäten sind immer aktiviert. Sie können sie nicht deaktivieren.

Überwachungsprotokolle zum Datenzugriff sind standardmäßig deaktiviert und werden nur geschrieben, wenn sie explizit aktiviert sind (Ausnahme sind Überwachungsprotokolle zum Datenzugriff für BigQuery, die nicht deaktiviert werden können).

Die Überwachungsprotokolle zum Datenzugriff für die Echtzeitdatenbank werden durch Aktivieren von DATA_READ und/oder DATA_WRITE in der GCP-Konsole umgeschaltet. Zwischen dem Zeitpunkt, zu dem Protokolle in der GCP Console aktiviert/deaktiviert werden, und dem Zeitpunkt, zu dem die Protokollzustellung beginnt bzw. endet, kann eine Verzögerung von bis zu einer Stunde liegen.

Anweisungen zum Aktivieren einiger oder aller Ihrer Datenzugriffs-Überwachungsprotokolle finden Sie unter Konfigurieren von Datenzugriffsprotokollen .

Berechtigungen und Rollen

Cloud IAM- Berechtigungen und -Rollen bestimmen Ihre Fähigkeit, auf Audit-Log-Daten in Google Cloud-Ressourcen zuzugreifen.

Berücksichtigen Sie Folgendes, wenn Sie entscheiden, welche protokollierungsspezifischen Berechtigungen und Rollen für Ihren Anwendungsfall gelten:

  • Mit der Rolle „Protokollbetrachter“ ( roles/logging.viewer ) erhalten Sie schreibgeschützten Zugriff auf die Überwachungsprotokolle „Administratoraktivität“, „Richtlinie verweigert“ und „Systemereignis“. Wenn Sie nur über diese Rolle verfügen, können Sie keine Datenzugriffs-Audit-Protokolle anzeigen, die sich im _Default Bucket befinden.

  • Die Rolle „Private Logs Viewer“ (roles/logging.privateLogViewer ) umfasst die in roles/logging.viewer enthaltenen Berechtigungen sowie die Möglichkeit, Datenzugriffs-Überwachungsprotokolle im _Default Bucket zu lesen.

    Beachten Sie, dass, wenn diese privaten Protokolle in benutzerdefinierten Buckets gespeichert werden, jeder Benutzer, der über Berechtigungen zum Lesen von Protokollen in diesen Buckets verfügt, die privaten Protokolle lesen kann. Weitere Informationen zu Protokoll-Buckets finden Sie unter Routing- und Speicherübersicht .

Weitere Informationen zu den Cloud IAM-Berechtigungen und -Rollen, die für Audit-Log-Daten gelten, finden Sie unter Zugriffskontrolle .

Protokolle anzeigen

Um Audit-Logs zu finden und anzuzeigen, müssen Sie die Kennung des Firebase-Projekts, Ordners oder der Organisation kennen, für die Sie Audit-Logging-Informationen anzeigen möchten. Sie können außerdem andere indizierte LogEntry Felder angeben, z. B. resource.type ; Weitere Informationen finden Sie unter Protokolleinträge schnell finden .

Im Folgenden sind die Namen der Überwachungsprotokolle aufgeführt. Sie enthalten Variablen für die Bezeichner des Firebase-Projekts, -Ordners oder der Firebase-Organisation:

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

Sie können Audit-Logs in Cloud Logging mit der GCP Console, dem gcloud Befehlszeilentool oder der Logging API anzeigen.

Konsole

Sie können den Logs Explorer in der GCP Console verwenden, um Ihre Audit-Log-Einträge für Ihr Firebase-Projekt, Ihren Firebase-Ordner oder Ihre Firebase-Organisation abzurufen:

  1. Gehen Sie in der GCP-Konsole zur Seite Protokollierung > Protokoll-Explorer .

    Gehen Sie zur Seite „Logs Explorer“.

  2. Wählen Sie auf der Seite „Logs Explorer“ ein vorhandenes Firebase-Projekt, einen Ordner oder eine Organisation aus.

  3. Gehen Sie im Bereich „Abfrage-Generator“ wie folgt vor:

    • Wählen Sie unter Ressourcentyp die Google Cloud-Ressource aus, deren Audit-Logs Sie sehen möchten.

    • Wählen Sie unter Protokollname den Überwachungsprotokolltyp aus, den Sie sehen möchten:

      • Wählen Sie für Audit-Protokolle zur Admin-Aktivität die Option Aktivität aus.
      • Wählen Sie für Datenzugriffs-Überwachungsprotokolle data_access aus.
      • Wählen Sie für Systemereignis-Überwachungsprotokolle system_event aus.
      • Wählen Sie für Überwachungsprotokolle „Richtlinie verweigert“ die Option „Richtlinie“ aus.

    Wenn diese Optionen nicht angezeigt werden, sind im Firebase-Projekt, Ordner oder in der Organisation keine Überwachungsprotokolle dieses Typs verfügbar.

    Weitere Einzelheiten zum Abfragen mit dem Protokoll-Explorer finden Sie unter Erstellen von Protokollabfragen .

gcloud

Das gcloud -Befehlszeilentool bietet eine Befehlszeilenschnittstelle zur Cloud Logging API. Geben Sie in jedem der Protokollnamen eine gültige PROJECT_ID , FOLDER_ID oder ORGANIZATION_ID an.

Führen Sie den folgenden Befehl aus, um Ihre Firebase-Prüfprotokolleinträge auf Projektebene zu lesen:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID

Führen Sie den folgenden Befehl aus, um Ihre Überwachungsprotokolleinträge auf Ordnerebene zu lesen:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID

Führen Sie den folgenden Befehl aus, um Ihre Audit-Log-Einträge auf Organisationsebene zu lesen:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID

Weitere Informationen zur Verwendung des gcloud Tools finden Sie unter Protokolleinträge lesen .

API

Ersetzen Sie beim Erstellen Ihrer Abfragen die Variablen durch gültige Werte und ersetzen Sie sie durch den entsprechenden Namen oder die entsprechenden Kennungen des Überwachungsprotokolls auf Projekt-, Ordner- oder Organisationsebene, wie in den Überwachungsprotokollnamen aufgeführt. Wenn Ihre Abfrage beispielsweise eine PROJECT_ID enthält, muss sich die von Ihnen angegebene Projektkennung auf das aktuell ausgewählte Firebase-Projekt beziehen.

Gehen Sie wie folgt vor, um mit der Protokollierungs-API Ihre Audit-Protokolleinträge anzuzeigen:

  1. Gehen Sie zum Abschnitt „Diese API ausprobieren“ in der Dokumentation für die Methode entries.list .

  2. Fügen Sie Folgendes in den Anforderungstextteil des Formulars „Diese API testen“ ein. Wenn Sie auf dieses vorab ausgefüllte Formular klicken, wird der Anforderungstext automatisch ausgefüllt. Sie müssen jedoch in jedem Protokollnamen eine gültige PROJECT_ID angeben.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Klicken Sie auf Ausführen .

Weitere Einzelheiten zum Abfragen finden Sie unter Protokollierungsabfragesprache .

Ein Beispiel für einen Audit-Log-Eintrag und wie Sie die wichtigsten Informationen darin finden, finden Sie unter Beispiel für einen Audit-Log-Eintrag .

Prüfprotokolle weiterleiten

Sie können Überwachungsprotokolle auf die gleiche Weise an unterstützte Ziele weiterleiten wie andere Arten von Protokollen. Hier sind einige Gründe, warum Sie Ihre Überwachungsprotokolle möglicherweise weiterleiten möchten:

  • Um Audit-Logs über einen längeren Zeitraum aufzubewahren oder leistungsfähigere Suchfunktionen zu nutzen, können Sie Kopien Ihrer Audit-Logs an Google Cloud Storage, BigQuery oder Google Cloud Pub/Sub weiterleiten. Mit Cloud Pub/Sub können Sie an andere Anwendungen, andere Repositorys und an Dritte weiterleiten.

  • Um Ihre Audit-Protokolle in der gesamten Organisation zu verwalten, können Sie aggregierte Senken erstellen, die Protokolle von beliebigen oder allen Firebase-Projekten in der Organisation weiterleiten können.

  • Wenn Ihre aktivierten Datenzugriffs-Überwachungsprotokolle Ihre Firebase-Projekte über Ihre Protokollkontingente hinausschieben, können Sie Senken erstellen, die die Datenzugriffs-Überwachungsprotokolle von der Protokollierung ausschließen.

Anweisungen zum Weiterleiten von Protokollen finden Sie unter Konfigurieren von Senken .

Preisgestaltung

Überwachungsprotokolle für Administratoraktivitäten und Systemereignis-Überwachungsprotokolle sind kostenlos.

Überwachungsprotokolle für den Datenzugriff und Überwachungsprotokolle zum Verweigern von Richtlinien sind kostenpflichtig.

Weitere Informationen zu den Preisen für Cloud Logging finden Sie in den Preisen für die Operations Suite von Google Cloud: Cloud Logging .