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_WRITE
znajdziesz 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. DlategoConnect
nie ma danych uwierzytelniających. ObiektAuthenticationInfo
zawiera obiekt zastępczyprincipalEmail
o wartościaudit-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ściaudit-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.
- Jeśli do uwierzytelniania innej firmy został użyty token sieciowy JSON (JWT),
Pole
Bez uwierzytelniania. Operacje w bazie danych czasu rzeczywistego, które nie korzystają z żadnych mają obiekt
AuthenticationInfo
zawierającyprincipalEmail
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ępczyprincipalEmail
zaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. W przypadku tokena JWT z podpisem tajnymthirdPartyPrincipal
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 wresource
firebasedatabase.data.update
: przyznano uprawnienia do zapisu w ścieżce określonej wresource
firebasedatabase.data.connect
: obiekt zastępczy dlaConnect
iDisconnect
. Nawiązanie połączenia z instancją Bazy danych czasu rzeczywistego nie jest wymagane.firebasedatabase.data.cancel
: używany w celachUnlisten
iOnDisconnectCancel
. 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 |
---|---|
|
|
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 |