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 Überwachungsprotokolle, um Ihnen bei der Beantwortung der Fragen zu helfen: „Wer hat was, wo und wann getan?“. Dies sind 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 Überwachungsprotokolle für Ressourcen, die sich direkt im Projekt befinden.

Eine allgemeine Übersicht über Cloud-Audit-Logs finden Sie unter Übersicht über Cloud-Audit- Logs . Ein tieferes Verständnis des Überwachungsprotokollformats finden Sie unter Grundlegendes zu Überwachungsprotokollen .

Verfügbare Überwachungsprotokolle

Die folgenden Arten von Überwachungsprotokollen sind für die Firebase-Echtzeitdatenbank verfügbar:

  • Überwachungsprotokolle für Administratoraktivitäten

    Umfasst „Admin Write“-Vorgänge, die Metadaten oder Konfigurationsinformationen schreiben.

    Audit-Logs für Administratoraktivitäten können nicht deaktiviert werden.

  • Überwachungsprotokolle zum Datenzugriff

    Umfasst „Admin Read“-Vorgänge, die Metadaten oder Konfigurationsinformationen lesen. Umfasst auch "Datenlesen"- und "Datenschreiben"-Operationen, die vom Benutzer bereitgestellte Daten lesen oder schreiben.

    Um Überwachungsprotokolle zum Datenzugriff zu erhalten, müssen Sie diese explizit aktivieren.

Ausführlichere Beschreibungen der Überwachungsprotokolltypen finden Sie unter Typen von Überwachungsprotokollen .

Geprüfter Betrieb

Im Folgenden wird zusammengefasst, welche API-Vorgänge den einzelnen Prüfprotokolltypen in der Firebase-Echtzeitdatenbank entsprechen:

Kategorie der Überwachungsprotokolle Operationen der Firebase-Echtzeitdatenbank
Überwachungsprotokolle für Administratoraktivitäten (ADMIN_WRITE)
  • CreateDatabaseInstance
  • Datenbankinstanz löschen
  • DisableDatabaseInstance
  • Reaktivieren Sie die Datenbankinstanz
Überwachungsprotokolle für den Datenzugriff (ADMIN_READ)
  • GetDatabaseInstance
  • ListDatabaseInstances
Datenzugriffs-Audit-Logs (DATA_READ oder DATA_WRITE)
  • Anschließen
  • Trennen
  • RunOnDisconnect
  • Aktualisieren (mit Vorbedingung) (für Transaktionsvorgänge). Siehe zugehörige Precondition und WriteMetadata .
Datenzugriffs-Audit-Logs (DATA_READ)
Datenzugriffs-Audit-Logs (DATA_WRITE)
  • Schreiben
  • Aktualisieren. Siehe zugehörige WriteMetadata .
  • OnDisconnectPut
  • OnDisconnectUpdate. Siehe zugehörige WriteMetadata .
  • OnDisconnectCancel

Audit-Authentifizierungsinformationen

Überwachungsprotokolleinträ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 innerhalb des AuditLog-Objekts an:

  • Aufbau von Echtzeitverbindungen. Realtime Database Connect -Operationen protokollieren keine Authentifizierungsdaten, da Realtime Database sich authentifiziert, nachdem eine Verbindung hergestellt wurde. Daher hat Connect keine Authentifizierungsinformationen. Das AuthenticationInfo -Objekt enthält einen Platzhalter principalEmail von audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com .

  • Google-Authentifizierung. Echtzeit-Datenbankvorgänge, die die standardmäßige Google-Authentifizierung verwenden, wie z. B. Datenverkehr vom Firebase Admin SDK oder REST-Anforderungen, die mit einem standardmäßigen OAuth-Token authentifiziert werden , verfügen über ein AuthenticationInfo -Objekt, das die eigentliche Anmeldeinformationen-E-Mail enthält.

  • Firebase-Authentifizierung. Echtzeitdatenbankvorgänge, die die Firebase-Authentifizierung verwenden, verfügen über ein AuthenticationInfo -Objekt, das einen principalEmail -Wert von 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 Drittanbieter-Authentifizierung verwendet wurde, enthält das Feld „ thirdPartyPrincipal “ den Header und die Nutzdaten des Tokens. Audit-Logs für Anfragen, die mit der Firebase-Authentifizierung authentifiziert wurden, enthalten beispielsweise das Firebase-Authentifizierungstoken dieser Anfrage.
  • Keine Authentifikation. Realtime Database-Operationen, die keine Authentifizierung verwenden, haben ein AuthenticationInfo -Objekt, das einen principalEmail -Wert von audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com enthält. Eine Realtime Database-Instanz mit offenen Sicherheitsregeln kann solche Anforderungen gewähren . Wir empfehlen allen Benutzern, ihre Datenbanken ordnungsgemäß zu sichern.

  • Legacy-Geheimnis-Token. Echtzeit-Datenbankoperationen, die Legacy-Token verwenden, haben ein AuthenticationInfo -Objekt, das einen 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.

Prüfen Sie die Auswertungen der Firebase-Sicherheitsregeln

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

Im Objekt „ AuthorizationInfo “ kann „ authorization.permission “ Folgendes sein:

  • firebasedatabase.data.get : Lesezugriff auf den in resource angegebenen Pfad gewährt.
  • firebasedatabase.data.update : Schreibzugriff auf den in resource angegebenen Pfad gewährt.
  • firebasedatabase.data.connect : Platzhalter für Connect und Disconnect . Keine Autorisierung erforderlich, um eine Verbindung zu einer Realtime Database-Instanz herzustellen.
  • firebasedatabase.data.cancel : Wird für Unlisten und OnDisconnectCancel . Das Widerrufen oder Stornieren eines zuvor autorisierten Vorgangs erfordert keine zusätzliche Autorisierung.

Korrelieren Sie Cloud-Audit-Logs mit Profiler-Ergebnissen von Realtime Database

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

Cloud-Audit-Logging Echtzeit-Datenbankprofiler
  • Überprüft den Zugriff auf Datenbanken
  • Erfasst kontinuierlich alle Anfragen
  • Ermöglicht nachträgliches Abfragen
  • Enthält detaillierte Informationen zum Authentifizierungstoken
  • Es fallen Nutzungskosten an
  • Wird für die Leistungsanalyse verwendet
  • Bietet nützliche Tools zur Hotspot-Identifizierung und damit zur Leistungsoptimierung
  • Kann Listener-Broadcast messen, der aufgrund des potenziellen Datenvolumens nicht in Audit-Protokollen verfügbar ist
  • Leicht und in Echtzeit, was es gut für Live-Lasttests macht. Es kann einige Minuten dauern, bis Audit-Log-Einträge angezeigt werden.

Der Inhalt des Überwachungsprotokolls entspricht den Profiler-Metriken, wie unten gezeigt.

Name des Überwachungsprotokollierungsvorgangs Sonderwerte in
RealtimeDatabaseAuditMetadata
Name des Profiler-Vorgangs
Anschließen RequestType ist REALTIME concurrent-connect
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 Ruhe 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
ZuhörerZuhörer 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 Run-on-Disconnect

Audit-Log-Format

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

  • Der Protokolleintrag selbst, der ein Objekt vom Typ LogEntry ist. Nützliche Felder umfassen die folgenden:

    • Der logName enthält die Ressourcen-ID und den Überwachungsprotokolltyp.
    • Die resource enthält das Ziel der geprüften Operation.
    • Der timestamp enthält die Uhrzeit des geprüften Vorgangs.
    • Die protoPayload enthält die geprüften Informationen.
  • Die Überwachungsprotokolldaten, bei denen es sich um ein AuditLog -Objekt handelt, das im protoPayload -Feld des Protokolleintrags enthalten ist.

  • Optionale dienstspezifische Prüfinformationen, die ein dienstspezifisches Objekt sind. Bei älteren Integrationen wird dieses Objekt im serviceData -Feld 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 sind in der Referenzdokumentation verfügbar.

Protokollname

Die Namen der Cloud-Audit-Logs-Ressourcen geben das Firebase-Projekt oder eine andere Google Cloud-Entität an, die Eigentümer der Audit-Logs sind, und geben an, ob das Log Audit-Logging-Daten zur Administratoraktivität, zum Datenzugriff, zur verweigerten Richtlinie oder zu Systemereignissen enthält. Im Folgenden werden beispielsweise Protokollnamen für Überwachungsprotokolle zur Administratoraktivität auf Projektebene und die Überwachungsprotokolle für den 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

Firebase Realtime Database-Überwachungsprotokolle verwenden den firebasedatabase.googleapis.com .

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

Ressourcentypen

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

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

Aktivieren Sie die Überwachungsprotokollierung

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

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

Audit-Logs zum Datenzugriff für Realtime Database werden durch Aktivieren von DATA_READ und/oder DATA_WRITE in der GCP Console umgeschaltet. Zwischen dem Aktivieren/Deaktivieren von Protokollen in der GCP Console und dem Beginn bzw. Ende der Übermittlung von Protokollen kann es zu einer Verzögerung von bis zu einer Stunde kommen.

Anweisungen zum Aktivieren einiger oder aller Audit-Protokolle zum Datenzugriff finden Sie unter Datenzugriffsprotokolle konfigurieren .

Berechtigungen und Rollen

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

Berücksichtigen Sie bei der Entscheidung, welche protokollierungsspezifischen Berechtigungen und Rollen für Ihren Anwendungsfall gelten, Folgendes:

  • Die Rolle „Protokollbetrachter“ ( roles/logging.viewer ) gewährt Ihnen schreibgeschützten Zugriff auf die Prüfprotokolle „Admin-Aktivität“, „Richtlinie verweigert“ und „Systemereignis“. Wenn Sie nur diese Rolle haben, können Sie keine Datenzugriffs-Audit-Logs 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, Audit-Logs zum Datenzugriff im Bucket _Default 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 Log-Buckets finden Sie unter Übersicht über Routing und Speicherung .

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

Protokolle anzeigen

Um Überwachungsprotokolle zu finden und anzuzeigen, müssen Sie die Kennung des Firebase-Projekts, -Ordners oder der Organisation kennen, für die Sie Überwachungsprotokollinformationen anzeigen möchten. Sie können weitere indizierte LogEntry Felder angeben, wie beispielsweise resource.type ; Einzelheiten finden Sie unter Protokolleinträge schnell finden .

Im Folgenden sind die Audit-Log-Namen aufgeführt; Sie enthalten Variablen für die Kennungen des Firebase-Projekts, -Ordners oder der 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 ansehen.

Konsole

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

  1. Rufen Sie in der GCP Console die Seite Logging > Logs Explorer auf.

    Rufen Sie die Seite Log-Explorer auf

  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 Prüfprotokolle Sie anzeigen möchten.

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

      • Wählen Sie für Überwachungsprotokolle zur Administratoraktivität die Option activity aus .
      • Wählen Sie für Audit-Logs zum Datenzugriff data_access aus .
      • Wählen Sie für Systemereignis- Prüfprotokolle system_event aus .
      • Wählen Sie für Policy Denied-Audit-Logs die Option policy aus.

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

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

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 Audit-Log-Einträge auf Firebase-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 Überwachungsprotokolleinträ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, ersetzen Sie den entsprechenden Überwachungsprotokollnamen auf Projektebene, Ordnerebene oder Organisationsebene oder Kennungen, 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 die Protokollierungs-API zum Anzeigen Ihrer Überwachungsprotokolleinträge zu verwenden:

  1. Wechseln Sie in der Dokumentation zur Methode entries.list zum Abschnitt Testen Sie diese API .

  2. Fügen Sie Folgendes in den Textteil „Request“ des Formulars „Try this API “ ein. Wenn Sie auf dieses vorab ausgefüllte Formular klicken, wird der Anfragetext automatisch ausgefüllt, aber Sie müssen in jedem der Protokollnamen eine gültige PROJECT_ID .

    {
      "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 Informationen dazu, wie Sie die wichtigsten Informationen darin finden, finden Sie unter Beispiel eines Audit-Log-Eintrags .

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 Audit-Protokolle möglicherweise weiterleiten sollten:

  • Um Überwachungsprotokolle länger aufzubewahren oder leistungsfähigere Suchfunktionen zu nutzen, können Sie Kopien Ihrer Überwachungsprotokolle an Google Cloud Storage, BigQuery oder Google Cloud Pub/Sub weiterleiten. Mit Cloud Pub/Sub können Sie zu anderen Anwendungen, anderen Repositories und zu Drittanbietern weiterleiten.

  • Um Ihre Überwachungsprotokolle in einer 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 Überwachungsprotokolle zum Datenzugriff Ihre Firebase-Projekte über Ihre Protokollzuteilungen hinausschieben, können Sie Senken erstellen, die die Überwachungsprotokolle zum Datenzugriff von der Protokollierung ausschließen.

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

Preisgestaltung

Audit-Logs für Administratoraktivitäten und Audit-Logs für Systemereignisse sind kostenlos.

Audit-Logs für den Datenzugriff und Audit-Logs für abgelehnte Richtlinien sind kostenpflichtig.

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