Ta strona zawiera opis dzienników kontrolnych utworzonych przez Firebase w ramach Cloud Audit Logs .
Przegląd
Usługi Firebase zapisują dzienniki kontrolne, które pomogą Ci odpowiedzieć na pytania „Kto, co, gdzie i kiedy zrobił?”. Są to dzienniki kontrolne Cloud udostępniane w ramach projektu Google Cloud połączonego z Twoim projektem Firebase .
Każdy z Twoich projektów Firebase zawiera tylko dzienniki kontrolne zasobów, które znajdują się bezpośrednio w projekcie.
Aby zapoznać się z ogólnym omówieniem dzienników kontrolnych Cloud, zobacz Omówienie dzienników kontrolnych Cloud . Więcej informacji na temat formatu dziennika kontroli można znaleźć w artykule Omówienie dzienników kontroli .
Dostępne dzienniki kontroli
W Bazie danych czasu rzeczywistego Firebase dostępne są następujące typy dzienników kontrolnych:
Dzienniki audytu aktywności administratora
Obejmuje operacje „zapisu administratora”, które zapisują metadane lub informacje konfiguracyjne.
Nie można wyłączyć dzienników kontrolnych aktywności administratora.
Dzienniki kontroli dostępu do danych
Obejmuje operacje „odczytu administratora”, które odczytują metadane lub informacje o konfiguracji. Obejmuje również operacje „odczytu danych” i „zapisu danych”, które służą do odczytu lub zapisu danych dostarczonych przez użytkownika.
Aby otrzymywać dzienniki inspekcji dostępu do danych, musisz je jawnie włączyć.
Aby uzyskać pełniejsze opisy typów dzienników kontroli, zobacz Typy dzienników kontroli .
Audytowane operacje
Poniżej podsumowano, które operacje interfejsu API odpowiadają poszczególnym typom dziennika kontroli w Bazie danych czasu rzeczywistego Firebase:
Kategoria dzienników audytu | Operacje bazy danych czasu rzeczywistego Firebase |
---|---|
Dzienniki kontroli aktywności administratora (ADMIN_WRITE) |
|
Dzienniki kontroli dostępu do danych (ADMIN_READ) |
|
Dzienniki kontroli dostępu do danych (DATA_READ lub DATA_WRITE) |
|
Dzienniki kontroli dostępu do danych (DATA_READ) |
|
Dzienniki kontroli dostępu do danych (DATA_WRITE) |
|
Audyt informacji uwierzytelniających
Wpisy dziennika inspekcji zawierają informacje o tożsamości, która wykonała zarejestrowaną operację. Aby zidentyfikować osobę wywołującą żądanie, zobacz następujące pola w obiekcie AuditLog:
Nawiązywanie połączeń w czasie rzeczywistym. Operacje
Connect
z bazą danych czasu rzeczywistego nie rejestrują danych uwierzytelniających, ponieważ baza danych czasu rzeczywistego uwierzytelnia się po nawiązaniu połączenia. DlategoConnect
nie ma informacji uwierzytelniających. ObiektAuthenticationInfo
zawiera zastępczy adresprincipalEmail
audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Uwierzytelnianie Google. Operacje bazy danych czasu rzeczywistego korzystające ze standardowego uwierzytelniania Google, takie jak ruch z Firebase Admin SDK lub żądania REST uwierzytelnione za pomocą standardowego tokena OAuth , mają obiekt
AuthenticationInfo
, który zawiera rzeczywisty e-mail z poświadczeniami.Uwierzytelnianie Firebase. Operacje bazy danych czasu rzeczywistego korzystające z uwierzytelniania Firebase mają obiekt
AuthenticationInfo
, który zawiera wartośćprincipalEmail
audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. To samo dotyczy implementacji własnego rozwiązania uwierzytelniającego poprzez tworzenie niestandardowych tokenów JWT.- Jeśli token internetowy JSON (JWT) został użyty do uwierzytelnienia innej firmy, pole
thirdPartyPrincipal
zawiera nagłówek i ładunek tokenu. Na przykład dzienniki kontrolne żądań uwierzytelnionych za pomocą uwierzytelniania Firebase obejmują token uwierzytelniania Firebase tego żądania.
- Jeśli token internetowy JSON (JWT) został użyty do uwierzytelnienia innej firmy, pole
Brak autoryzacji. Operacje bazy danych czasu rzeczywistego, które nie używają żadnego uwierzytelniania, mają obiekt
AuthenticationInfo
, który zawiera wartośćprincipalEmail
audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
Instancja bazy danych czasu rzeczywistego z otwartymi regułami bezpieczeństwa może akceptować takie żądania . Zalecamy wszystkim użytkownikom odpowiednie zabezpieczenie swoich baz danych.Tokeny starszych sekretów. Operacje bazy danych czasu rzeczywistego korzystające ze starszych tokenów mają obiekt
AuthenticationInfo
, który zawiera element zastępczyprincipalEmail
o wartościaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. W przypadku JWT podpisanegothirdPartyPrincipal
zawiera nagłówki JWT i ładunek.
Audytuj oceny reguł bezpieczeństwa Firebase
Dzienniki Cloud Audit mogą służyć do identyfikowania żądań, na które mogą mieć wpływ zmiany reguł.
W obiekcie AuthorizationInfo Authorization.permission authorization.permission
mieć jedną z następujących wartości:
-
firebasedatabase.data.get
: Dostęp do odczytu przyznany w ścieżce określonej wresource
. -
firebasedatabase.data.update
: przyznano dostęp do zapisu w ścieżce określonej wresource
. -
firebasedatabase.data.connect
: Element zastępczy dlaConnect
iDisconnect
. Do połączenia z instancją bazy danych czasu rzeczywistego nie jest wymagana żadna autoryzacja. -
firebasedatabase.data.cancel
: Używany doUnlisten
iOnDisconnectCancel
. Odwołanie lub anulowanie wcześniej autoryzowanej operacji nie wymaga dodatkowej autoryzacji.
Koreluj dzienniki Cloud Audit z wynikami profilera bazy danych w czasie rzeczywistym
Możesz przeprowadzić dogłębną analizę wydajności bazy danych czasu rzeczywistego za pomocą narzędzia do profilowania bazy danych czasu rzeczywistego w połączeniu z rejestrowaniem inspekcji bazy danych czasu rzeczywistego. Każde narzędzie ma swoje mocne strony.
Rejestrowanie audytu w chmurze | Profiler bazy danych czasu rzeczywistego |
---|---|
|
|
Zawartość dziennika inspekcji odpowiada metrykom profilera, jak pokazano poniżej.
Nazwa operacji rejestrowania inspekcji | Specjalne wartości wRealtimeDatabaseAuditMetadata | Nazwa operacji profilera |
---|---|---|
Łączyć | RequestType to CZAS REALTIME | połączenie współbieżne |
Rozłączyć się | RequestType to CZAS REALTIME | równoczesne rozłączenie |
Czytać | RequestType to CZAS REALTIME | odczyt w czasie rzeczywistym |
Czytać | RequestType to REST | reszta-czytać |
Pisać | RequestType to CZAS REALTIME | zapis w czasie rzeczywistym |
Pisać | RequestType to REST | reszta-pisz |
Aktualizacja | RequestType to CZAS REALTIME .Sprawdź PreconditionType . | aktualizacja w czasie rzeczywistym transakcja w czasie rzeczywistym |
Aktualizacja | RequestType to REST .Sprawdź PreconditionType . | reszta-aktualizacja transakcja spoczynkowa |
Słuchacz Słuchaj | RequestType to CZAS REALTIME | słuchacz-słuchaj |
SłuchaczPrzestań słuchać | RequestType to CZAS REALTIME | słuchacz-przestań słuchać |
OnDisconnectPut | RequestType to CZAS REALTIME | on-rozłącz-put |
OnDisconnectUpdate | RequestType to CZAS REALTIME | aktualizacja przy rozłączeniu |
Przy rozłączeniu Anuluj | RequestType to CZAS REALTIME | on-rozłącz-anuluj |
Uruchom po rozłączeniu | RequestType to CZAS REALTIME | uruchamianie po rozłączeniu |
Format dziennika audytu
Wpisy dziennika kontroli obejmują następujące obiekty:
Sam wpis dziennika, który jest obiektem typu
LogEntry
. Przydatne pola obejmują:-
logName
zawiera identyfikator zasobu i typ dziennika inspekcji. -
resource
zawiera cel kontrolowanej operacji. -
timestamp
zawiera czas audytowanej operacji. -
protoPayload
zawiera kontrolowane informacje.
-
Dane dziennika kontroli, które są obiektem
AuditLog
przechowywanym w poluprotoPayload
wpisu dziennika.Opcjonalne informacje kontrolne specyficzne dla usługi, które są obiektem specyficznym dla usługi. W przypadku starszych integracji ten obiekt jest przechowywany w polu
serviceData
obiektuAuditLog
; nowsze integracje używają polametadata
.
Aby zapoznać się z innymi polami w tych obiektach i sposobami ich interpretacji, zapoznaj się z sekcją Omówienie dzienników kontroli .
Dodatkowe informacje o polach wprotoPayload.metadata
dla operacji DATA_READ
i DATA_WRITE
są dostępne w dokumentacji referencyjnej .Nazwa dziennika
Nazwy zasobów Cloud Audit Logs wskazują projekt Firebase lub inną jednostkę Google Cloud, która jest właścicielem dzienników kontrolnych, oraz wskazują, czy dziennik zawiera dane dziennika kontrolnego Aktywności administratora, Dostępu do danych, Odmowy zasad lub Zdarzeń systemowych. Na przykład poniżej przedstawiono nazwy dzienników dzienników inspekcji działań administracyjnych na poziomie projektu i dzienników inspekcji dostępu do danych organizacji. Zmienne oznaczają identyfikatory projektu i organizacji Firebase.
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
Nazwa serwisu
Dzienniki kontrolne Bazy danych czasu rzeczywistego Firebase używają nazwy usługi firebasedatabase.googleapis.com
.
Aby uzyskać pełną listę wszystkich nazw usług Cloud Logging API i odpowiadających im monitorowanych typów zasobów, zobacz Mapowanie usług do zasobów .
Typy zasobów
Dzienniki kontrolne Bazy danych czasu rzeczywistego Firebase używają typu zasobu audited_resource
dla wszystkich dzienników kontrolnych.
Aby uzyskać listę wszystkich typów zasobów monitorowanych przez Cloud Logging oraz informacje opisowe, zobacz Monitorowane typy zasobów .
Włącz rejestrowanie inspekcji
Dzienniki kontrolne aktywności administratora są zawsze włączone; nie możesz ich wyłączyć.
Dzienniki kontrolne dostępu do danych są domyślnie wyłączone i nie są zapisywane, chyba że zostaną wyraźnie włączone (wyjątek stanowią dzienniki kontrolne dostępu do danych dla BigQuery, których nie można wyłączyć).
Dzienniki kontroli dostępu do danych dla bazy danych czasu rzeczywistego można przełączać, zaznaczającDATA_READ
i/lub DATA_WRITE
w konsoli GCP. Między włączeniem/wyłączeniem dzienników w konsoli GCP a czasem rozpoczęcia/zakończenia dostarczania dzienników może wystąpić godzinne opóźnienie.Aby uzyskać instrukcje dotyczące włączania niektórych lub wszystkich dzienników kontrolnych dostępu do danych, zobacz Konfigurowanie dzienników dostępu do danych .
Uprawnienia i role
Uprawnienia i role Cloud IAM określają Twoje możliwości uzyskiwania dostępu do danych dzienników kontrolnych w zasobach Google Cloud.
Decydując, które uprawnienia i role związane z rejestrowaniem mają zastosowanie do Twojego przypadku użycia, weź pod uwagę następujące kwestie:
Rola Przeglądający dzienniki (
roles/logging.viewer
) zapewnia dostęp tylko do odczytu do dzienników inspekcji działań administratora, odmowy zasad i zdarzeń systemowych. Jeśli masz tylko tę rolę, nie możesz wyświetlać dzienników inspekcji dostępu do danych, które znajdują się w_Default
.Rola Przeglądający dzienniki prywatne
(roles/logging.privateLogViewer
) obejmuje uprawnienia zawarte wroles/logging.viewer
oraz możliwość odczytywania dzienników inspekcji dostępu do danych w_Default
.Pamiętaj, że jeśli te prywatne dzienniki są przechowywane w zasobnikach zdefiniowanych przez użytkownika, każdy użytkownik, który ma uprawnienia do odczytu dzienników w tych zasobnikach, może je odczytać. Aby uzyskać więcej informacji na temat zasobników dzienników, zobacz Omówienie routingu i magazynu .
Aby uzyskać więcej informacji na temat uprawnień i ról Cloud IAM, które mają zastosowanie do danych dzienników kontrolnych, zobacz Kontrola dostępu .
Zobacz rejestry
Aby znaleźć i wyświetlić dzienniki kontroli, musisz znać identyfikator projektu, folderu lub organizacji Firebase, dla których chcesz wyświetlić informacje o dziennikach kontroli. Możesz dodatkowo określić inne indeksowane pola LogEntry
, takie jak resource.type
; szczegółowe informacje można znaleźć w artykule Znajdź wpisy w dzienniku szybko .
Poniżej przedstawiono nazwy dzienników kontroli; zawierają zmienne dla identyfikatorów projektu Firebase, folderu lub organizacji:
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
Dzienniki kontrolne możesz wyświetlać w Cloud Logging za pomocą konsoli GCP, narzędzia wiersza poleceń gcloud
lub interfejsu Logging API.
Konsola
Możesz użyć Eksploratora logów w konsoli GCP, aby pobrać wpisy dziennika kontroli dotyczące projektu Firebase, folderu lub organizacji:
W konsoli GCP przejdź do strony Rejestrowanie > Eksplorator logów .
Na stronie Eksplorator dzienników wybierz istniejący projekt Firebase, folder lub organizację.
W okienku Konstruktor zapytań wykonaj następujące czynności:
W polu Typ zasobu wybierz zasób Google Cloud, którego dzienniki kontroli chcesz zobaczyć.
W polu Nazwa dziennika wybierz typ dziennika kontroli, który chcesz zobaczyć:
- W przypadku dzienników kontrolnych działań administratora wybierz aktywność .
- W przypadku dzienników inspekcji dostępu do danych wybierz data_access .
- W dziennikach inspekcji zdarzeń systemowych wybierz system_event .
- W przypadku dzienników inspekcji odmowy zasad wybierz zasady .
Jeśli nie widzisz tych opcji, oznacza to, że w projekcie, folderze lub organizacji Firebase nie są dostępne żadne dzienniki kontroli tego typu.
Aby uzyskać więcej informacji na temat wykonywania zapytań przy użyciu Eksploratora dzienników, zobacz Tworzenie zapytań dziennika .
gcloud
Narzędzie wiersza poleceń gcloud
zapewnia interfejs wiersza poleceń do interfejsu Cloud Logging API. Podaj prawidłowy PROJECT_ID
, FOLDER_ID
lub ORGANIZATION_ID
w każdej z nazw dzienników.
Aby odczytać wpisy dziennika kontroli Firebase na poziomie projektu, uruchom następujące polecenie:
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID
Aby odczytać wpisy dziennika kontroli na poziomie folderu, uruchom następujące polecenie:
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID
Aby odczytać wpisy dziennika kontroli na poziomie organizacji, uruchom następujące polecenie:
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID
Aby uzyskać więcej informacji o korzystaniu z narzędzia gcloud
, zobacz Odczytywanie wpisów dziennika .
API
Podczas tworzenia zapytań zastąp zmienne poprawnymi wartościami, zastąp odpowiednią nazwę lub identyfikatory dziennika kontroli na poziomie projektu, folderu lub organizacji, zgodnie z listą w nazwach dzienników kontroli. Na przykład, jeśli zapytanie zawiera PROJECT_ID , podany identyfikator projektu musi odnosić się do aktualnie wybranego projektu Firebase.
Aby użyć interfejsu Logging API do przeglądania wpisów w dzienniku kontroli, wykonaj następujące czynności:
Przejdź do sekcji Wypróbuj ten interfejs API w dokumentacji metody
entries.list
.Umieść następujące informacje w części Treść żądania formularza Wypróbuj ten interfejs API . Kliknięcie tego wstępnie wypełnionego formularza spowoduje automatyczne wypełnienie treści żądania, ale musisz podać prawidłowy
PROJECT_ID
w każdej nazwie dziennika.{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
Kliknij Wykonaj .
Aby uzyskać więcej informacji na temat zapytań, zobacz Rejestrowanie języka zapytań .
Aby zapoznać się z przykładem wpisu dziennika kontroli i sposobem znajdowania w nim najważniejszych informacji, zobacz Przykładowy wpis dziennika kontroli .
Dzienniki kontroli tras
Dzienniki inspekcji można kierować do obsługiwanych miejsc docelowych w taki sam sposób, jak inne rodzaje dzienników. Oto kilka powodów, dla których warto przekierować dzienniki kontrolne:
Aby przechowywać dzienniki kontrolne przez dłuższy czas lub korzystać z bardziej zaawansowanych funkcji wyszukiwania, możesz kierować kopie dzienników kontrolnych do Google Cloud Storage, BigQuery lub Google Cloud Pub/Sub. Korzystając z Cloud Pub/Sub, możesz kierować do innych aplikacji, innych repozytoriów i stron trzecich.
Aby zarządzać dziennikami kontrolnymi w całej organizacji, możesz utworzyć zagregowane ujścia , które mogą kierować logi z dowolnego lub wszystkich projektów Firebase w organizacji.
- Jeśli włączone dzienniki kontrolne dostępu do danych przepychają projekty Firebase przez przydziały logów, możesz utworzyć ujścia, które wykluczają dzienniki kontrolne dostępu do danych z funkcji Logging.
Aby uzyskać instrukcje dotyczące dzienników routingu, zobacz Konfigurowanie ujścia .
cennik
Dzienniki audytu aktywności administratora i dzienniki audytu zdarzeń systemowych są bezpłatne.
Dzienniki kontroli dostępu do danych i dzienniki kontroli odmowy zasad są płatne.
Aby uzyskać więcej informacji na temat cen Cloud Logging, zobacz Cennik pakietu operacyjnego Google Cloud: Cloud Logging .