Rejestrowanie inspekcji bazy danych czasu rzeczywistego Firebase

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)
  • Utwórz instancję bazy danych
  • DeleteDatabaseInstance
  • Wyłącz instancję bazy danych
  • ReenableDatabaseInstance
Dzienniki kontroli dostępu do danych (ADMIN_READ)
  • GetDatabaseInstance
  • ListDatabaseInstances
Dzienniki kontroli dostępu do danych (DATA_READ lub DATA_WRITE)
  • Łączyć
  • Rozłączyć się
  • Uruchom po rozłączeniu
  • Aktualizacja (z warunkiem wstępnym) (dla operacji transakcyjnych). Zobacz powiązane Precondition i WriteMetadata .
Dzienniki kontroli dostępu do danych (DATA_READ)
Dzienniki kontroli dostępu do danych (DATA_WRITE)
  • Pisać
  • Aktualizacja. Zobacz powiązane WriteMetadata .
  • OnDisconnectPut
  • OnDisconnectUpdate. Zobacz powiązane WriteMetadata .
  • Przy rozłączeniu Anuluj

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. Dlatego Connect nie ma informacji uwierzytelniających. Obiekt AuthenticationInfo zawiera zastępczy adres principalEmail 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.
  • 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ępczy principalEmail o wartości audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com . W przypadku JWT podpisanego thirdPartyPrincipal 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 w resource .
  • firebasedatabase.data.update : przyznano dostęp do zapisu w ścieżce określonej w resource .
  • firebasedatabase.data.connect : Element zastępczy dla Connect i Disconnect . Do połączenia z instancją bazy danych czasu rzeczywistego nie jest wymagana żadna autoryzacja.
  • firebasedatabase.data.cancel : Używany do Unlisten i OnDisconnectCancel . 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
  • Audyty dostępu do baz danych
  • Stale przechwytuje wszystkie żądania
  • Umożliwia retrospektywne zapytania
  • Zawiera szczegółowe informacje o tokenie autoryzacji
  • Pobiera koszt użytkowania
  • Używany do analizy wydajności
  • Zapewnia przydatne narzędzia do identyfikacji punktów aktywnych, a tym samym do optymalizacji wydajności
  • Może mierzyć transmisję nasłuchiwania , która nie jest dostępna w dziennikach kontroli ze względu na potencjalną ilość danych
  • Lekki i działający w czasie rzeczywistym, dzięki czemu nadaje się do testowania obciążenia na żywo. Pojawienie się wpisów dziennika kontroli może potrwać kilka minut.

Zawartość dziennika inspekcji odpowiada metrykom profilera, jak pokazano poniżej.

Nazwa operacji rejestrowania inspekcji Specjalne wartości w
RealtimeDatabaseAuditMetadata
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 polu protoPayload 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 obiektu AuditLog ; nowsze integracje używają pola metadata .

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 w protoPayload.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ąc DATA_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 w roles/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:

  1. W konsoli GCP przejdź do strony Rejestrowanie > Eksplorator logów .

    Przejdź do strony Eksplorator dzienników

  2. Na stronie Eksplorator dzienników wybierz istniejący projekt Firebase, folder lub organizację.

  3. 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:

  1. Przejdź do sekcji Wypróbuj ten interfejs API w dokumentacji metody entries.list .

  2. 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"
    }
    
  3. 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 .