Logowanie kontrolne Bazy danych czasu rzeczywistego Firebase

W tym dokumencie opisujemy logowanie kontrolne Bazy danych czasu rzeczywistego Firebase oraz metody generować logi kontrolne, szczegółowe informacje o logach kontrolnych generowanych przez poszczególne metody oraz które metody nie generują logów kontrolnych (jeśli w ogóle). Google Cloud generuje dzienników kontrolnych, które rejestrują działania administracyjne i dotyczące dostępu w obrębie zasobów Google Cloud. Więcej informacji: Omówienie logów kontrolnych Cloud.

Uwagi

Dodatkowe informacje o polach protoPayload.metadata dotyczących operacji DATA_READ i DATA_WRITEznajdziesz w dokumentacji referencyjnej.

Nazwa usługi

Logi kontrolne Bazy danych czasu rzeczywistego Firebase używają nazwy usługi firebasedatabase.googleapis.com.

Metody według typu uprawnienia

.

Metody, które sprawdzają DATA_READ, DATA_WRITE i Uprawnienia (ADMIN_READ) generują logi sklasyfikowane jako Logi kontrolne dostępu do danych. Metody sprawdzające uprawnienia do aplikacji ADMIN_WRITE generują logi sklasyfikowane jako Dzienniki kontrolne aktywności administratora.

Typ uprawnienia Metody
ADMIN_READ google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
ADMIN_WRITE google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
DATA_READ google.firebase.database.v1.RealtimeDatabase.Connect
google.firebase.database.v1.RealtimeDatabase.Disconnect
google.firebase.database.v1.RealtimeDatabase.Listen
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
google.firebase.database.v1.RealtimeDatabase.Read
google.firebase.database.v1.RealtimeDatabase.Unlisten
DATA_WRITE google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
google.firebase.database.v1.RealtimeDatabase.Update
google.firebase.database.v1.RealtimeDatabase.Write

Logi kontrolne każdego interfejsu API

Aby dowiedzieć się, jak i które uprawnienia są oceniane w przypadku każdej metody, zapoznaj się z dokumentacją Cloud Identity and Access Management w Bazie danych czasu rzeczywistego Firebase.

google.firebase.database.v1.RealtimeDatabase

Ta sekcja zawiera szczegółowe informacje na temat logów kontrolnych powiązanych z metody należące do google.firebase.database.v1.RealtimeDatabase.

Connect

  • Metoda: google.firebase.database.v1.RealtimeDatabase.Connect
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.connect - DATA_READ
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"

Disconnect

  • Metoda: google.firebase.database.v1.RealtimeDatabase.Disconnect
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.connect - DATA_READ
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"

Listen

  • Metoda: google.firebase.database.v1.RealtimeDatabase.Listen
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.get - DATA_READ
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"

OnDisconnectCancel

  • Metoda: google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.cancel - DATA_READ
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"

OnDisconnectPut

  • Metoda: google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.update - DATA_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"

OnDisconnectUpdate

  • Metoda: google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.update - DATA_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"

Read

  • Metoda: google.firebase.database.v1.RealtimeDatabase.Read
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.get - DATA_READ
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"

RunOnDisconnect

  • Metoda: google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.update - DATA_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"

Unlisten

  • Metoda: google.firebase.database.v1.RealtimeDatabase.Unlisten
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.cancel - DATA_READ
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"

Update

  • Metoda: google.firebase.database.v1.RealtimeDatabase.Update
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.get - DATA_READ
    • firebasedatabase.data.get - DATA_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"

Write

  • Metoda: google.firebase.database.v1.RealtimeDatabase.Write
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.data.get - DATA_READ
    • firebasedatabase.data.get - DATA_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"

google.firebase.database.v1beta.RealtimeDatabaseService

Ta sekcja zawiera szczegółowe informacje na temat logów kontrolnych powiązanych z metody należące do google.firebase.database.v1beta.RealtimeDatabaseService.

CreateDatabaseInstance

  • Metoda: google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
  • Typ dziennika kontrolnego: Aktywność administratora
  • Uprawnienia:
    • firebasedatabase.instances.create - ADMIN_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"

DeleteDatabaseInstance

  • Metoda: google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
  • Typ dziennika kontrolnego: Aktywność administratora
  • Uprawnienia:
    • firebasedatabase.instances.delete - ADMIN_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"

DisableDatabaseInstance

  • Metoda: google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
  • Typ dziennika kontrolnego: Aktywność administratora
  • Uprawnienia:
    • firebasedatabase.instances.disable - ADMIN_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"

GetDatabaseInstance

  • Metoda: google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.instances.get - ADMIN_READ
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"

ListDatabaseInstances

  • Metoda: google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
  • Typ dziennika kontrolnego: Dostęp do danych
  • Uprawnienia:
    • firebasedatabase.instances.list - ADMIN_READ
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"

ReenableDatabaseInstance

  • Metoda: google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
  • Typ dziennika kontrolnego: Aktywność administratora
  • Uprawnienia:
    • firebasedatabase.instances.reenable - ADMIN_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"

UndeleteDatabaseInstance

  • Metoda: google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
  • Typ dziennika kontrolnego: Aktywność administratora
  • Uprawnienia:
    • firebasedatabase.instances.undelete - ADMIN_WRITE
  • Metoda jest długo trwającą lub przesyłaną transmisją: Nr
  • Filtruj dla tej metody: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"

Sprawdź informacje dotyczące uwierzytelniania

Wpisy w dzienniku kontrolnym zawierają informacje na temat tożsamości, która wykonała zarejestrowaną operację. Aby zidentyfikować żądanie sprawdź te pola obiektu AuditLog:

  • Nawiązywanie połączeń w czasie rzeczywistym. Operacje Connect w Bazie danych czasu rzeczywistego nie loguje danych uwierzytelniania, bo Baza danych czasu rzeczywistego uwierzytelnia się po nawiązano połączenie. Dlatego Connect nie ma danych uwierzytelniających. Obiekt AuthenticationInfo zawiera obiekt zastępczy principalEmail o wartości audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com

  • Uwierzytelnianie Google. Operacje w bazie danych czasu rzeczywistego wykorzystujące standardowe usługi Google Uwierzytelnianie, np. ruch z pakietu Firebase Admin SDK lub żądań REST uwierzytelnionych za pomocą standardowego tokena OAuth, mają obiekt AuthenticationInfo zawierający rzeczywiste dane logowania, e-mail.

  • Uwierzytelnianie Firebase. Operacje w bazie danych czasu rzeczywistego korzystające z uwierzytelniania Firebase miały obiekt AuthenticationInfo, który zawiera wartość principalEmail o wartości audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com To samo dotyczy sytuacji, w której wdrożysz własne rozwiązanie do uwierzytelniania, generując kod niestandardowe tokeny JWT.

    • Jeśli do uwierzytelniania innej firmy został użyty token sieciowy JSON (JWT), Pole thirdPartyPrincipal zawiera nagłówek i ładunek tokena. Dla: np. logi kontrolne żądań uwierzytelnionych za pomocą Uwierzytelniania Firebase zawierać token uwierzytelniania Firebase tego żądania.
  • Bez uwierzytelniania. Operacje w bazie danych czasu rzeczywistego, które nie korzystają z żadnych mają obiekt AuthenticationInfo zawierający principalEmail ma wartość audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com Instancja Bazy danych czasu rzeczywistego z otwartymi regułami zabezpieczeń może spełniać takie żądania. Śr zalecamy, aby wszyscy użytkownicy prawidłowo zabezpieczyli swoje bazy danych.

  • Starsze tokeny obiektów tajnych. Operacje w Bazie danych czasu rzeczywistego przy użyciu starszych tokenów zawiera obiekt AuthenticationInfo zawierający obiekt zastępczy principalEmail z audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. W przypadku tokena JWT z podpisem tajnym thirdPartyPrincipal zawiera nagłówki JWT i ładunek.

Kontroluj oceny reguł zabezpieczeń Firebase

Logi kontrolne Cloud można wykorzystać do identyfikowania żądań, które mogą potencjalnie potencjalnie , na które mają wpływ zmiany w Regułach.

W obiekcie AuthorizationInfo authorization.permission może mieć jedną z tych wartości:

  • firebasedatabase.data.get: uprawnienia do odczytu przyznane w ścieżce określonej w resource
  • firebasedatabase.data.update: przyznano uprawnienia do zapisu w ścieżce określonej w resource
  • firebasedatabase.data.connect: obiekt zastępczy dla Connect i Disconnect. Nawiązanie połączenia z instancją Bazy danych czasu rzeczywistego nie jest wymagane.
  • firebasedatabase.data.cancel: używany w celach Unlisten i OnDisconnectCancel. Anulowanie lub anulowanie wcześniej autoryzowanej operacji nie wymaga żadnych dodatkowych autoryzacji.

Korelowanie logów kontrolnych Cloud z wynikami narzędzia do profilowania Bazy danych czasu rzeczywistego

Możesz przeprowadzić szczegółową analizę wydajności Bazy danych czasu rzeczywistego za pomocą Program profilujący Bazy danych czasu rzeczywistego w połączeniu z Logowanie kontrolne Bazy danych czasu rzeczywistego. Każde narzędzie ma swoje mocne strony.

Cloud Audit Logging Program profilujący Bazy danych czasu rzeczywistego
  • Kontroluje dostęp do baz danych
  • Stale rejestruje wszystkie żądania
  • Umożliwia wykonywanie zapytań wstecznych
  • Zawiera szczegółowe informacje o tokenie uwierzytelniania
  • Wiąże się z kosztem wykorzystania
  • Dane służą do analizy skuteczności.
  • Udostępnia przydatne narzędzia do identyfikowania hotspotów i zwiększania wydajności. optymalizacja
  • Umożliwia pomiar listener-broadcast, który jest niedostępny w logach kontrolnych ze względu na potencjalną ilość danych
  • Jest lekki i działa w czasie rzeczywistym, co ułatwia testowanie obciążenia w czasie rzeczywistym. Kontrola wpisy logu mogą się pojawić dopiero po kilku minutach.

Zawartość logu kontrolnego odpowiada wskaźnikom programu profilującego, jak pokazano poniżej.

Nazwa operacji w logu kontrolnym Wartości specjalne w:
RealtimeDatabaseAuditMetadata
Nazwa operacji programu profilującego
Połącz RequestType to REALTIME połączenie równoczesne
Odłącz RequestType to REALTIME równoczesne rozłączanie
Odczyt RequestType to REALTIME odczyt w czasie rzeczywistym
Odczyt RequestType to REST przeczytane w spoczynku
Zapis RequestType to REALTIME zapis w czasie rzeczywistym
Zapis RequestType to REST reszta-zapis
Zaktualizuj RequestType – występuje: REALTIME.
Sprawdź: PreconditionType.
aktualizacja w czasie rzeczywistym
transakcja w czasie rzeczywistym
Zaktualizuj RequestType – występuje: REST.
Sprawdź: PreconditionType.
aktualizacja-reszta
pozostała transakcja
ListenerListen (Słuchaj) RequestType to REALTIME Słuchaj
Nie odsłuchuj RequestType to REALTIME Słuchacz
OnOdłączPut RequestType to REALTIME on-disconnect-put
OnOdłączUpdate RequestType to REALTIME aktualizacja przy rozłączeniu
OnRozłączAnuluj RequestType to REALTIME anulowanie przy rozłączeniu
Uruchomienie odłączenia RequestType to REALTIME działanie po rozłączeniu