Logowanie kontrolne Sprawdzania aplikacji Firebase

Na tej stronie opisujemy logi kontrolne tworzone przez Firebase w ramach logów kontrolnych Cloud.

Przegląd

Usługi Firebase zapisują logi kontrolne, aby pomóc Ci odpowiedzieć na pytania „kto, co, gdzie i kiedy?”. Są to logi kontrolne Cloud udostępniane w ramach projektu Google Cloud połączonego z Twoim projektem w Firebase.

Każdy projekt Firebase zawiera tylko logi kontrolne zasobów, które znajdują się bezpośrednio w projekcie.

Ogólne informacje o logach kontrolnych Cloud znajdziesz w artykule Ogólne informacje o logach kontrolnych Cloud. Aby lepiej poznać format logów kontrolnych, przeczytaj artykuł Omówienie logów kontrolnych.

Dostępne logi kontrolne

W przypadku funkcji Sprawdzanie aplikacji Firebase dostępne są te typy logów kontrolnych:

  • Logi kontrolne aktywności administratora

    Obejmują operacje „zapisu przez administratora”, które zapisują metadane lub informacje o konfiguracji.

    Logów kontrolnych aktywności administratora nie można wyłączyć.

  • Logi kontrolne dostępu do danych

    Obejmują operacje „odczytu przez administratora”, które odczytują metadane lub informacje o konfiguracji. Obejmują też operacje „odczytu danych” i „zapisu danych”, które odczytują lub zapisują dane przekazywane przez użytkowników.

    Aby otrzymywać logi kontrolne dostępu do danych, musisz je wyraźnie włączyć.

Szczegółowe opisy typów logów kontrolnych znajdziesz w artykule Typy logów kontrolnych.

Skontrolowane operacje

Poniżej znajdziesz podsumowanie, które operacje interfejsu API odpowiadają poszczególnym typom logów kontrolnych w funkcji Sprawdzanie aplikacji Firebase:

Typ uprawnienia Metody
ADMIN_READ google.firebase.appcheck.v1.ConfigService.BatchGetAppAttestConfigs
google.firebase.appcheck.v1.ConfigService.BatchGetDeviceCheckConfigs
google.firebase.appcheck.v1.ConfigService.BatchGetPlayIntegrityConfigs
google.firebase.appcheck.v1.ConfigService.BatchGetRecaptchaEnterpriseConfigs
google.firebase.appcheck.v1.ConfigService.BatchGetRecaptchaV3Configs
google.firebase.appcheck.v1.ConfigService.BatchGetSafetyNetConfigs
google.firebase.appcheck.v1.ConfigService.GetAppAttestConfig
google.firebase.appcheck.v1.ConfigService.GetDebugToken
google.firebase.appcheck.v1.ConfigService.GetDeviceCheckConfig
google.firebase.appcheck.v1.ConfigService.GetPlayIntegrityConfig
google.firebase.appcheck.v1.ConfigService.GetRecaptchaEnterpriseConfig
google.firebase.appcheck.v1.ConfigService.GetRecaptchaV3Config
google.firebase.appcheck.v1.ConfigService.GetSafetyNetConfig
google.firebase.appcheck.v1.ConfigService.GetService
google.firebase.appcheck.v1.ConfigService.ListDebugTokens
google.firebase.appcheck.v1.ConfigService.ListServices
google.firebase.appcheck.v1beta.ConfigService.BatchGetAppAttestConfigs
google.firebase.appcheck.v1beta.ConfigService.BatchGetDeviceCheckConfigs
google.firebase.appcheck.v1beta.ConfigService.BatchGetPlayIntegrityConfigs
google.firebase.appcheck.v1beta.ConfigService.BatchGetRecaptchaConfigs
google.firebase.appcheck.v1beta.ConfigService.BatchGetRecaptchaEnterpriseConfigs
google.firebase.appcheck.v1beta.ConfigService.BatchGetRecaptchaV3Configs
google.firebase.appcheck.v1beta.ConfigService.BatchGetSafetyNetConfigs
google.firebase.appcheck.v1beta.ConfigService.GetAppAttestConfig
google.firebase.appcheck.v1beta.ConfigService.GetDebugToken
google.firebase.appcheck.v1beta.ConfigService.GetDeviceCheckConfig
google.firebase.appcheck.v1beta.ConfigService.GetPlayIntegrityConfig
google.firebase.appcheck.v1beta.ConfigService.GetRecaptchaConfig
google.firebase.appcheck.v1beta.ConfigService.GetRecaptchaEnterpriseConfig
google.firebase.appcheck.v1beta.ConfigService.GetRecaptchaV3Config
google.firebase.appcheck.v1beta.ConfigService.GetResourcePolicy
google.firebase.appcheck.v1beta.ConfigService.GetSafetyNetConfig
google.firebase.appcheck.v1beta.ConfigService.GetService
google.firebase.appcheck.v1beta.ConfigService.ListDebugTokens
google.firebase.appcheck.v1beta.ConfigService.ListResourcePolicies
google.firebase.appcheck.v1beta.ConfigService.ListServices
ADMIN_WRITE google.firebase.appcheck.v1.ConfigService.BatchUpdateServices
google.firebase.appcheck.v1.ConfigService.CreateDebugToken
google.firebase.appcheck.v1.ConfigService.DeleteDebugToken
google.firebase.appcheck.v1.ConfigService.UpdateAppAttestConfig
google.firebase.appcheck.v1.ConfigService.UpdateDebugToken
google.firebase.appcheck.v1.ConfigService.UpdateDeviceCheckConfig
google.firebase.appcheck.v1.ConfigService.UpdatePlayIntegrityConfig
google.firebase.appcheck.v1.ConfigService.UpdateRecaptchaEnterpriseConfig
google.firebase.appcheck.v1.ConfigService.UpdateRecaptchaV3Config
google.firebase.appcheck.v1.ConfigService.UpdateSafetyNetConfig
google.firebase.appcheck.v1.ConfigService.UpdateService
google.firebase.appcheck.v1beta.ConfigService.BatchUpdateResourcePolicies
google.firebase.appcheck.v1beta.ConfigService.BatchUpdateServices
google.firebase.appcheck.v1beta.ConfigService.CreateDebugToken
google.firebase.appcheck.v1beta.ConfigService.CreateResourcePolicy
google.firebase.appcheck.v1beta.ConfigService.DeleteDebugToken
google.firebase.appcheck.v1beta.ConfigService.DeleteResourcePolicy
google.firebase.appcheck.v1beta.ConfigService.UpdateAppAttestConfig
google.firebase.appcheck.v1beta.ConfigService.UpdateDebugToken
google.firebase.appcheck.v1beta.ConfigService.UpdateDeviceCheckConfig
google.firebase.appcheck.v1beta.ConfigService.UpdatePlayIntegrityConfig
google.firebase.appcheck.v1beta.ConfigService.UpdateRecaptchaConfig
google.firebase.appcheck.v1beta.ConfigService.UpdateRecaptchaEnterpriseConfig
google.firebase.appcheck.v1beta.ConfigService.UpdateRecaptchaV3Config
google.firebase.appcheck.v1beta.ConfigService.UpdateResourcePolicy
google.firebase.appcheck.v1beta.ConfigService.UpdateSafetyNetConfig
google.firebase.appcheck.v1beta.ConfigService.UpdateService
google.firebase.appcheck.v1beta.TokenVerificationService.VerifyAppCheckToken

Format logów kontrolnych

Wpisy logów kontrolnych zawierają te obiekty:

  • Sam wpis logu, który jest obiektem typu LogEntry. Przydatne pola to:

    • logName zawiera identyfikator zasobu i typ logu kontrolnego.
    • resource zawiera cel skontrolowanej operacji.
    • timestamp zawiera czas skontrolowanej operacji.
    • protoPayload zawiera skontrolowane informacje.
  • Dane logowania kontrolnego, które są obiektem AuditLog przechowywanym w polu protoPayload wpisu logu.

  • Opcjonalne informacje kontrolne dotyczące 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.

Więcej informacji o innych polach w tych obiektach i o tym, jak je interpretować, znajdziesz w artykule Omówienie logów kontrolnych.

Nazwa logu

Nazwy zasobów logów kontrolnych Cloud wskazują projekt w Firebase lub inny Google Cloud podmiot, który jest właścicielem logów kontrolnych, oraz to, czy log zawiera aktywności administratora, dostępu do danych, odmowy dostępu czy zdarzenia systemowego. Na przykład poniżej znajdziesz nazwy logów kontrolnych aktywności administratora na poziomie projektu oraz logów kontrolnych dostępu do danych organizacji. Zmienne oznaczają identyfikatory projektu w Firebase i organizacji.

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

Nazwa usługi

Logi kontrolne funkcji Sprawdzanie aplikacji Firebase używają nazwy usługi firebaseappcheck.googleapis.com.

Pełną listę wszystkich nazw usług interfejsu Cloud Logging API i odpowiadających im typów monitorowanych zasobów znajdziesz w artykule Mapowanie usług na zasoby.

Typy zasobów

Logi kontrolne funkcji Sprawdzanie aplikacji Firebase używają typu zasobu audited_resource w przypadku wszystkich logów kontrolnych.

Listę wszystkich typów monitorowanych zasobów Cloud Logging i informacje o nich znajdziesz w artykule Typy monitorowanych zasobów.

Włączanie logowania kontrolnego

Logi kontrolne aktywności administratora są zawsze włączone i nie można ich wyłączyć.

Logi kontrolne dostępu do danych są domyślnie wyłączone i nie są zapisywane, chyba że zostaną wyraźnie włączone (wyjątkiem są logi kontrolne dostępu do danych w BigQuery, których nie można wyłączyć).

Instrukcje włączania niektórych lub wszystkich logów kontrolnych dostępu do danych znajdziesz w artykule Konfigurowanie logów dostępu do danych.

Uprawnienia i role

Uprawnienia i role Cloud IAM określają, czy masz dostęp do danych logów kontrolnych w zasobach Google Cloud.

Przy wyborze uprawnień i ról specyficznych dla usługi Logging, które mają zastosowanie do Twojego przypadku użycia, weź pod uwagę te kwestie:

  • Rola Wyświetlający logi (roles/logging.viewer) zapewnia dostęp tylko do odczytu do logów kontrolnych aktywności administratora, odmowy dostępu i zdarzeń systemowych. Jeśli masz tylko tę rolę, nie możesz wyświetlać logów kontrolnych dostępu do danych, które znajdują się w zasobniku _Default.

  • Rola Wyświetlający logi prywatne(roles/logging.privateLogViewer) obejmuje uprawnienia zawarte w roles/logging.viewer, plus the ability to read logów kontrolnych dostępu do danych w zasobniku _Default.

    Pamiętaj, że jeśli te logi prywatne są przechowywane w zasobnikach zdefiniowanych przez użytkownika, każdy użytkownik, który ma uprawnienia do odczytu logów w tych zasobnikach, może odczytywać logi prywatne. Więcej informacji o zasobnikach logów znajdziesz w artykule Omówienie routingu i miejsca na dane.

Więcej informacji o uprawnieniach i rolach Cloud IAM, które mają zastosowanie do danych logów kontrolnych, znajdziesz w artykule Kontrola dostępu.

Wyświetl logi

Aby znaleźć i wyświetlić dzienniki kontrolne, potrzeba dostępu do informacji o identyfikatorze projektu w Firebase, folderu lub organizacji, dla których chcesz wyświetlić informacje o logowaniu kontrolnym. Możesz też określić inne indeksowane LogEntry pola, np. resource.type. Więcej informacji znajdziesz w artykule Szybkie znajdowanie wpisów logu.

Poniżej znajdziesz nazwy logów kontrolnych. Zawierają one zmienne identyfikatorów projektu w 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

Logi kontrolne możesz wyświetlać w Cloud Logging za pomocą konsoli Google Cloud, narzędzia wiersza poleceń gcloud lub interfejsu Logging API.

Konsola

Aby pobrać wpisy logów kontrolnych projektu w Firebase, folderu lub organizacji, możesz użyć Eksploratora logów w konsoli Google Cloud:

  1. W konsoli Google Cloud otwórz stronę Logging > Eksplorator logów.

    Otwórz stronę Eksplorator logów

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

  3. W panelu Kreator zapytań wykonaj te czynności:

    • W sekcji Typ zasobu wybierz zasób Google Cloud, którego logi kontrolne chcesz wyświetlić.

    • W sekcji Nazwa logu wybierz typ logu kontrolnego, który chcesz wyświetlić:

      • W przypadku logów kontrolnych aktywności administratora wybierz activity.
      • W przypadku logów kontrolnych dostępu do danych wybierz data_access.
      • W przypadku logów kontrolnych zdarzeń systemowych wybierz system_event.
      • W przypadku logów kontrolnych odmowy dostępu wybierz policy.

    Jeśli nie widzisz tych opcji, oznacza to, że w projekcie w Firebase, folderze lub organizacji nie ma logów kontrolnych tego typu.

    Więcej informacji o wysyłaniu zapytań za pomocą eksploratora logów znajdziesz w artykule Tworzenie zapytań dotyczących logów.

gcloud

Narzędzie wiersza poleceń gcloud udostępnia interfejs wiersza poleceń do interfejsu Cloud Logging API. W każdej nazwie logu podaj prawidłowy PROJECT_ID, FOLDER_ID lub ORGANIZATION_ID.

Aby odczytać wpisy logów kontrolnych na poziomie projektu Firebase, uruchom to polecenie:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID

Aby odczytać wpisy logów kontrolnych na poziomie folderu, uruchom to polecenie:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID

Aby odczytać wpisy logów kontrolnych na poziomie organizacji, uruchom to polecenie:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID

Więcej informacji o korzystaniu z narzędzia gcloud znajdziesz w artykule Odczytywanie wpisów logu.

Interfejs API

Podczas tworzenia zapytań zastąp zmienne prawidłowymi wartościami i zamień odpowiednią nazwę logu kontrolnego lub identyfikatory na poziomie projektu, folderu lub organizacji zgodnie z listą nazw logów kontrolnych. Jeśli na przykład zapytanie zawiera PROJECT_ID, podany identyfikator projektu musi odnosić się do aktualnie wybranego projektu w Firebase.

Aby użyć interfejsu Logging API do sprawdzenia wpisów logów kontrolnych, wykonaj te czynności:

  1. W dokumentacji metody entries.list otwórz sekcję Try this API (Wypróbuj ten interfejs API).

  2. Wklej to do sekcji Request body (Treść żądania) formularza Try this API (Wypróbuj ten interfejs API). Kliknięcie tego wstępnie wypełnionego formularza automatycznie wypełni treść żądania, ale musisz podać prawidłowy PROJECT_ID w każdej nazwie logu.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
  3. Kliknij Execute (Wykonaj).

Więcej informacji o wysyłaniu zapytań znajdziesz w artykule Język zapytań usługi Logging.

Przykład wpisu logu kontrolnego i informacje o tym, jak znaleźć w nim najważniejsze informacje, znajdziesz w artykule Przykładowy wpis logu kontrolnego.

Routing logów kontrolnych

Logi kontrolne możesz kierować do obsługiwanych miejsc docelowych w taki sam sposób jak inne rodzaje logów. Oto kilka powodów, dla których możesz chcieć kierować logi kontrolne:

  • Aby przechowywać logi kontrolne przez dłuższy czas lub korzystać z bardziej zaawansowanych funkcji wyszukiwania, możesz kierować kopie logów kontrolnych do Google Cloud Storage, BigQuery lub Google Cloud Pub/Sub. Za pomocą Cloud Pub/Sub możesz kierować logi do innych aplikacji, repozytoriów i firm.

  • Aby zarządzać logami kontrolnymi w całej organizacji, możesz utworzyć zagregowane ujścia które mogą kierować logi z dowolnych lub wszystkich projektów Firebase w organizacji.

  • Jeśli włączone logi kontrolne dostępu do danych powodują przekroczenie limitu logów w projektach Firebase, możesz utworzyć ujścia, które wykluczają logi kontrolne dostępu do danych z usługi Logging.

Instrukcje dotyczące kierowania logów znajdziesz w artykule Konfigurowanie ujść.

Ceny

Logi kontrolne aktywności administratora i logi kontrolne zdarzeń systemowych są bezpłatne.

Logi kontrolne dostępu do danych i logi kontrolne odmowy dostępu są płatne.

Więcej informacji o cenach Cloud Logging znajdziesz w cenniku pakietu operacyjnego Google Cloud: Cloud Logging.