Na tej stronie opisano dzienniki audytu utworzone przez Firebase w ramach dzienników audytu Cloud .
Przegląd
Usługi Firebase zapisują dzienniki audytu, które pomogą Ci odpowiedzieć na pytania: „Kto, co, gdzie i kiedy zrobił?”. Są to dzienniki audytu Cloud dostarczane w ramach projektu Google Cloud połączonego z Twoim projektem Firebase .
Każdy z Twoich projektów Firebase zawiera tylko dzienniki kontroli zasobów znajdujących się bezpośrednio w projekcie.
Aby zapoznać się z ogólnym omówieniem dzienników audytu Cloud, zobacz Omówienie dzienników audytu Cloud . Aby uzyskać głębsze zrozumienie formatu dziennika audytu, zobacz Omówienie dzienników audytu .
Dostępne dzienniki audytu
W bazie danych Firebase Realtime Database dostępne są następujące typy dzienników kontrolnych:
Dzienniki kontroli aktywności administratora
Obejmuje operacje „zapisu administratora”, które zapisują metadane lub informacje konfiguracyjne.
Nie można wyłączyć dzienników kontroli aktywności administratora.
Dzienniki kontroli dostępu do danych
Obejmuje operacje „odczytu administratora”, które odczytują metadane lub informacje konfiguracyjne. Obejmuje także operacje „odczytu danych” i „zapisu danych”, które umożliwiają odczyt lub zapis danych dostarczonych przez użytkownika.
Aby otrzymywać dzienniki kontroli dostępu do danych, musisz je jawnie włączyć.
Pełniejszy opis typów dzienników audytu można znaleźć w sekcji Typy dzienników audytu .
Audytowane operacje
Poniżej podsumowano, które operacje interfejsu API odpowiadają poszczególnym typom dziennika audytu w bazie danych Firebase Realtime Database:
Kategoria dzienników audytu | Operacje na bazie 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) |
|
Informacje o uwierzytelnianiu audytu
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 programu Realtime Database
Connect
nie rejestrują danych uwierzytelniających, ponieważ baza danych Realtime Database uwierzytelnia się po nawiązaniu połączenia. DlategoConnect
nie ma informacji uwierzytelniających. ObiektAuthenticationInfo
zawiera zastępczy adresprincipalEmail
adresuaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Uwierzytelnianie Google. Operacje bazy danych w czasie rzeczywistym, które korzystają ze standardowego uwierzytelniania Google, takie jak ruch z pakietu Firebase Admin SDK lub żądania REST uwierzytelniane za pomocą standardowego tokena OAuth , mają obiekt
AuthenticationInfo
zawierający rzeczywisty adres e-mail z danymi uwierzytelniającymi.Uwierzytelnianie Firebase. Operacje bazy danych w czasie rzeczywistym 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 sytuacji, gdy wdrażasz własne rozwiązanie uwierzytelniające, tworząc niestandardowe JWT.- Jeśli do uwierzytelniania innej firmy użyto tokenu internetowego JSON (JWT), pole
thirdPartyPrincipal
zawiera nagłówek i ładunek tokenu. Na przykład dzienniki kontroli żądań uwierzytelnionych za pomocą uwierzytelniania Firebase obejmują token uwierzytelniania Firebase tego żądania.
- Jeśli do uwierzytelniania innej firmy użyto tokenu internetowego JSON (JWT), pole
Brak autoryzacji. Operacje bazy danych czasu rzeczywistego, które nie korzystają z ż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 prawidłowe zabezpieczenie swoich baz danych.Starsze tokeny sekretów. Operacje bazy danych w czasie rzeczywistym przy użyciu starszych tokenów mają obiekt
AuthenticationInfo
, który zawiera zastępczy adresprincipalEmail
o adresieaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. W przypadku JWT podpisanego kluczem tajnym,thirdPartyPrincipal
zawiera nagłówki JWT i ładunek.
Kontroluj oceny reguł bezpieczeństwa Firebase
Dzienniki audytu Cloud mogą służyć do identyfikowania żądań, na które potencjalnie będą miały wpływ zmiany Reguł.
W obiekcie AuthorizationInfo , authorization.permission
może 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
: Dostęp do zapisu przyznany w ścieżce określonej wresource
. -
firebasedatabase.data.connect
: Symbol zastępczy dlaConnect
iDisconnect
. Aby połączyć się z instancją bazy danych Realtime Database, nie jest wymagana żadna autoryzacja. -
firebasedatabase.data.cancel
: Używane do funkcjiUnlisten
iOnDisconnectCancel
. Odwołanie lub anulowanie wcześniej autoryzowanej operacji nie wymaga dodatkowej autoryzacji.
Koreluj dzienniki audytu Cloud z wynikami profilera bazy danych Realtime Database
Możesz przeprowadzić dogłębną analizę wydajności bazy danych Realtime Database, korzystając z profilera bazy danych Realtime w połączeniu z rejestrowaniem audytu bazy danych Realtime. Każde narzędzie ma swoje mocne strony.
Rejestrowanie audytu w chmurze | Profiler bazy danych w czasie rzeczywistym |
---|---|
|
|
Zawartość dziennika inspekcji odpowiada metrykom profilera, jak pokazano poniżej.
Nazwa operacji rejestrowania audytu | Wartości specjalne wRealtimeDatabaseAuditMetadata | Nazwa operacji profilera |
---|---|---|
Łączyć | RequestType to REALTIME | połączenie współbieżne |
Rozłączyć się | RequestType to REALTIME | jednoczesne rozłączenie |
Czytać | RequestType to REALTIME | odczyt w czasie rzeczywistym |
Czytać | RequestType to REST | przeczytaj resztę |
Pisać | RequestType to REALTIME | pisz w czasie rzeczywistym |
Pisać | RequestType to REST | odpoczywaj-pisz |
Aktualizacja | RequestType to REALTIME .Sprawdź PreconditionType . | aktualizacja w czasie rzeczywistym transakcja w czasie rzeczywistym |
Aktualizacja | RequestType to REST .Sprawdź PreconditionType . | aktualizacja reszta transakcja reszta |
SłuchaczSłuchaj | RequestType to REALTIME | słuchacz-słuchaj |
SłuchaczNie słuchaj | RequestType to REALTIME | słuchacz-niesłuchaj |
OnDisconnectPut | RequestType to REALTIME | przy rozłączaniu |
OnDisconnectUpdate | RequestType to REALTIME | aktualizacja po rozłączeniu |
WłączRozłączAnuluj | RequestType to REALTIME | on-rozłącz-anuluj |
RunOnDisconnect | RequestType to REALTIME | działanie po rozłączeniu |
Format dziennika audytu
Wpisy dziennika kontroli obejmują następujące obiekty:
Sam wpis dziennika będący obiektem typu
LogEntry
. Przydatne pola obejmują:-
logName
zawiera identyfikator zasobu i typ dziennika inspekcji. -
resource
zawiera cel kontrolowanej operacji. -
timestamp
zawiera czas kontrolowanej operacji. -
protoPayload
zawiera kontrolowane informacje.
-
Dane rejestrowania audytu, 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 obiekt ten jest przechowywany w polu
serviceData
obiektuAuditLog
; nowsze integracje korzystają z polametadata
.
Informacje na temat innych pól w tych obiektach oraz sposobu ich interpretacji można znaleźć w artykule Opis dzienników kontrolnych .
Dodatkowe informacje o polach wprotoPayload.metadata
dla operacji DATA_READ
i DATA_WRITE
dostępne są w dokumentacji referencyjnej .Nazwa dziennika
Nazwy zasobów dzienników audytu Cloud wskazują projekt Firebase lub inny podmiot Google Cloud będący właścicielem dzienników audytu oraz to, czy dziennik zawiera dane dotyczące działań administratora, dostępu do danych, odmowy zasad lub rejestrowania zdarzeń systemowych. Na przykład poniżej przedstawiono nazwy dzienników kontroli działań administratora na poziomie projektu i dzienników kontroli 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 audytu bazy danych Firebase Realtime Database korzystają z nazwy usługi firebasedatabase.googleapis.com
.
Pełną listę wszystkich nazw usług Cloud Logging API i odpowiadających im typów monitorowanych zasobów znajdziesz w artykule Mapowanie usług na zasoby .
Typy zasobów
Dzienniki audytu bazy danych Firebase Realtime Database korzystają z typu zasobu audited_resource
dla wszystkich dzienników audytu.
Listę wszystkich typów zasobów monitorowanych przez Cloud Logging i informacje opisowe znajdziesz w artykule Monitorowane typy zasobów .
Włącz rejestrowanie audytu
Dzienniki kontroli 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 zostanie to wyraźnie włączone (wyjątkiem są dzienniki kontrolne dostępu do danych dla BigQuery, których nie można wyłączyć).
Dzienniki kontroli dostępu do danych dla bazy danych Realtime są przełączane poprzez sprawdzenieDATA_READ
i/lub DATA_WRITE
w konsoli GCP. Pomiędzy włączeniem/wyłączeniem logów w konsoli GCP a momentem rozpoczęcia/zatrzymania dostarczania logów może wystąpić maksymalnie godzinne opóźnienie.Aby uzyskać instrukcje dotyczące włączania niektórych lub wszystkich dzienników kontroli dostępu do danych, zobacz Konfigurowanie dzienników dostępu do danych .
Uprawnienia i role
Uprawnienia i role Cloud IAM określają Twoją możliwość dostępu do danych dzienników kontrolnych w zasobach Google Cloud.
Decydując, które uprawnienia i role związane z rejestrowaniem mają zastosowanie w Twoim 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 działań administratora, odmów zasad i dzienników audytu zdarzeń systemowych. Jeśli masz tylko tę rolę, nie możesz przeglądać dzienników kontroli dostępu do danych znajdujących się w zasobniku_Default
.Rola Przeglądający dzienniki prywatne
(roles/logging.privateLogViewer
) obejmuje uprawnienia zawarte wroles/logging.viewer
oraz możliwość odczytu dzienników kontroli dostępu do danych w zasobniku_Default
.Pamiętaj, że jeśli te prywatne logi są przechowywane w zasobnikach zdefiniowanych przez użytkownika, każdy użytkownik mający uprawnienia do odczytu dzienników w tych zasobnikach będzie mógł je odczytać. Aby uzyskać więcej informacji na temat zasobników logów, zobacz Omówienie routingu i przechowywania .
Więcej informacji na temat uprawnień i ról Cloud IAM mających zastosowanie do danych dzienników inspekcji znajdziesz w artykule Kontrola dostępu .
Zobacz rejestry
Aby znaleźć i wyświetlić dzienniki audytu, musisz znać identyfikator projektu Firebase, folderu lub organizacji, dla której chcesz wyświetlić informacje o dziennikach audytu. Możesz dodatkowo określić inne indeksowane pola LogEntry
, takie jak resource.type
; szczegółowe informacje można znaleźć w artykule Szybkie wyszukiwanie wpisów w dzienniku .
Poniżej znajdują się nazwy dzienników kontrolnych; zawierają zmienne identyfikatorów projektu, folderu lub organizacji Firebase:
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 w Cloud Logging możesz przeglądać 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 kontrolnego dotyczące projektu, folderu lub organizacji Firebase:
W konsoli GCP przejdź do strony Rejestrowanie > Eksplorator logów .
Na stronie Eksplorator logów wybierz istniejący projekt, folder lub organizację Firebase.
W panelu Konstruktor zapytań wykonaj następujące czynności:
W obszarze Typ zasobu wybierz zasób Google Cloud, którego dzienniki kontrolne chcesz wyświetlić.
W polu Nazwa dziennika wybierz typ dziennika kontrolnego, który chcesz wyświetlić:
- W dziennikach kontroli działań administratora wybierz działanie .
- W przypadku dzienników kontroli dostępu do danych wybierz opcję data_access .
- W dziennikach audytu zdarzeń systemowych wybierz opcję system_event .
- W dziennikach kontroli odmowy zasad wybierz zasadę .
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 logów, zobacz Tworzenie zapytań do dzienników .
gcloud
Narzędzie wiersza poleceń gcloud
zapewnia interfejs wiersza poleceń do interfejsu Cloud Logging API. Podaj prawidłowy identyfikator PROJECT_ID
, FOLDER_ID
lub ORGANIZATION_ID
w każdej nazwie dziennika.
Aby odczytać wpisy dziennika audytu na poziomie projektu Firebase, uruchom następujące polecenie:
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID
Aby odczytać wpisy dziennika inspekcji 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 inspekcji 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 na temat korzystania z narzędzia gcloud
, zobacz Odczytywanie wpisów dziennika .
API
Podczas tworzenia zapytań zastąp zmienne prawidłowymi wartościami, zastąp odpowiednią nazwę lub identyfikatory dziennika audytu na poziomie projektu, folderu lub organizacji, wymienione w nazwach dzienników audytu. Na przykład, jeśli zapytanie zawiera PROJECT_ID , wówczas podany identyfikator projektu musi odnosić się do aktualnie wybranego projektu Firebase.
Aby użyć interfejsu Logging API do przeglądania wpisów w dzienniku kontrolnym, wykonaj następujące czynności:
Przejdź do sekcji Wypróbuj ten interfejs API w dokumentacji metody
entries.list
.Umieść następujący tekst w części treści żądania w formularzu Wypróbuj ten interfejs API . Kliknięcie tego wstępnie wypełnionego formularza powoduje automatyczne wypełnienie treści żądania, ale w każdej nazwie dziennika należy podać prawidłowy
PROJECT_ID
.{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
Kliknij Wykonaj .
Więcej informacji na temat zapytań można znaleźć w sekcji Język zapytań rejestrowania .
Przykładowy wpis dziennika audytu i sposób wyszukiwania w nim najważniejszych informacji można znaleźć w artykule Przykładowy wpis dziennika audytu .
Dzienniki kontroli trasy
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 kierować dzienniki kontroli:
Aby przechowywać dzienniki kontrolne przez dłuższy czas lub skorzystać z bardziej zaawansowanych możliwości 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ć dzienniki z dowolnego lub wszystkich projektów Firebase w organizacji.
- Jeśli włączone dzienniki kontroli dostępu do danych wypychają projekty Firebase ponad przydziały dzienników, możesz utworzyć ujścia, które wykluczają dzienniki kontroli dostępu do danych z rejestrowania.
Aby uzyskać instrukcje dotyczące dzienników routingu, zobacz Konfigurowanie ujścia .
cennik
Dzienniki audytu działań administratora i dzienniki audytu zdarzeń systemowych są bezpłatne.
Dzienniki audytu dostępu do danych i dzienniki audytu Odmowy zasad są płatne.
Więcej informacji o cenach Cloud Logging znajdziesz w artykule Cennik pakietu operacyjnego Google Cloud: Cloud Logging .