Logowanie kontrolne w Firebase App Hosting

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

Omówienie

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

Twoje projekty Firebase zawierają tylko logi kontrolne zasobów znajdujących się bezpośrednio w projekcie.

Ogólne informacje o logach kontrolnych Cloud znajdziesz w artykule Omówienie logów kontrolnych Cloud. Więcej informacji o formacie dziennika kontrolnego znajdziesz w artykule Omówienie dzienników kontrolnych.

Dostępne dzienniki kontrolne

Dostępne są te typy dzienników kontrolnych Firebase App Hosting:

  • Logi kontrolne działania administratora

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

    Logów kontrolnych działań administracyjnych nie można wyłączyć.

  • Logi kontrolne dostępu do danych

    Obejmuje operacje „odczyt przez administratora”, które wiążą się z odczytem metadanych lub informacji o konfiguracji. Obejmuje też operacje „odczyt danych” i „zapis 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ć.

Pełniejsze opisy typów dzienników kontrolnych znajdziesz w artykule Typy dzienników kontrolnych.

Operacje objęte kontrolą

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

Typ uprawnień Metody
ADMIN_READ google.firebase.apphosting.v1alpha.AppHosting.GetBackend
google.firebase.apphosting.v1alpha.AppHosting.GetBuild
google.firebase.apphosting.v1alpha.AppHosting.GetRollout
google.firebase.apphosting.v1alpha.AppHosting.GetTraffic
google.firebase.apphosting.v1alpha.AppHosting.ListBackends
google.firebase.apphosting.v1alpha.AppHosting.ListBuilds
google.firebase.apphosting.v1alpha.AppHosting.ListDomains
google.firebase.apphosting.v1alpha.AppHosting.ListRollouts
google.firebase.apphosting.v1beta.AppHosting.GetBackend
google.firebase.apphosting.v1beta.AppHosting.GetBuild
google.firebase.apphosting.v1beta.AppHosting.GetDomain
google.firebase.apphosting.v1beta.AppHosting.GetTraffic
google.firebase.apphosting.v1beta.AppHosting.ListBackends
google.firebase.apphosting.v1beta.AppHosting.ListBuilds
google.firebase.apphosting.v1beta.AppHosting.ListDomains
google.firebase.apphosting.v1beta.AppHosting.ListRollouts
ADMIN_WRITE google.firebase.apphosting.v1alpha.AppHosting.CreateBackend
google.firebase.apphosting.v1alpha.AppHosting.CreateBuild
google.firebase.apphosting.v1alpha.AppHosting.CreateDomain
google.firebase.apphosting.v1alpha.AppHosting.CreateRollout
google.firebase.apphosting.v1alpha.AppHosting.DeleteBackend
google.firebase.apphosting.v1alpha.AppHosting.DeleteBuild
google.firebase.apphosting.v1alpha.AppHosting.DeleteDomain
google.firebase.apphosting.v1alpha.AppHosting.UpdateBuild
google.firebase.apphosting.v1alpha.AppHosting.UpdateTraffic
google.firebase.apphosting.v1beta.AppHosting.CreateBackend
google.firebase.apphosting.v1beta.AppHosting.CreateBuild
google.firebase.apphosting.v1beta.AppHosting.CreateDomain
google.firebase.apphosting.v1beta.AppHosting.CreateRollout
google.firebase.apphosting.v1beta.AppHosting.DeleteBackend
google.firebase.apphosting.v1beta.AppHosting.DeleteBuild
google.firebase.apphosting.v1beta.AppHosting.DeleteDomain
google.firebase.apphosting.v1beta.AppHosting.UpdateBackend
google.firebase.apphosting.v1beta.AppHosting.UpdateDomain
google.firebase.apphosting.v1beta.AppHosting.UpdateTraffic

Format dziennika kontrolnego

Wpisy w dzienniku kontrolnym obejmują te obiekty:

  • sam wpis w logu, który jest obiektem typu LogEntry; Przydatne pola to:

    • Wartość logName zawiera identyfikator zasobu i typ dziennika kontrolnego.
    • Atrybut resource zawiera element docelowy zweryfikowanej operacji.
    • Wartość timestamp zawiera czas operacji objętej kontrolą.
    • Plik protoPayload zawiera zweryfikowane informacje.
  • Dane logowania kontrolnego, które są obiektem AuditLog przechowywanym w polu protoPayload wpisu w logu.

  • Opcjonalne informacje kontrolne dotyczące usługi, które są obiektem usługi. W przypadku starszych integracji ten obiekt jest przechowywany w polu serviceData obiektu AuditLog; nowsze integracje używają pola metadata.

Informacje o innych polach w tych obiektach oraz o tym, jak je interpretować, znajdziesz w artykule Omówienie dzienników kontrolnych.

Nazwa logu

Nazwy zasobów logów kontrolnych Cloud wskazują projekt Firebase lub inny podmiotGoogle Cloud będący właścicielem logów kontrolnych oraz informują, czy log zawiera dane z logowania kontrolnego aktywności administratora, dostępu do danych, odmowy dostępu na podstawie zasad lub zdarzeń systemowych. Poniżej podano przykłady nazw logów kontrolnych aktywności administratora na poziomie projektu i logów kontrolnych 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 usługi

Dzienniki inspekcji Firebase App Hosting używają nazwy usługi firebaseapphosting.googleapis.com.

Pełną listę nazw wszystkich usług interfejsu Cloud Logging API wraz z odpowiadającymi im typami monitorowanych zasobów znajdziesz w artykule Mapowanie usług na zasoby.

Typy zasobów

Logi kontrolne Firebase App Hosting używają typu zasobu audited_resource dla wszystkich logów kontrolnych.

Listę wszystkich typów monitorowanych zasobów Cloud Logging oraz informacje opisowe znajdziesz w artykule Typy monitorowanych zasobów.

Włączanie logowania w celu kontroli

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 dotyczące 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ą Twoją zdolność do uzyskiwania dostępu do danych logów kontrolnych w zasobach Google Cloud.

Wybierając uprawnienia i role związane z rejestrowaniem, które będą odpowiednie w Twoim przypadku użycia, weź pod uwagę te kwestie:

  • Rola wyświetlającego logi (roles/logging.viewer) daje dostęp tylko do odczytu do logów kontrolnych Aktywność administratora, Odmowa zasad i Zdarzenie systemowe. Jeśli masz tylko tę rolę, nie możesz wyświetlać logów kontrolnych dostępu do danych znajdujących się w puli _Default.

  • Rola przeglądającego logi prywatne ((roles/logging.privateLogViewer) obejmuje uprawnienia zawarte w poziomie roles/logging.viewer oraz możliwość odczytu dzienników kontrolnych dostępu do danych w zasośniku _Default.

    Pamiętaj, że jeśli te prywatne logi są przechowywane w definiowanych przez użytkownika zbiorach, każdy użytkownik, który ma uprawnienia do odczytu logów w tych zbiorach, może odczytać te prywatne logi. Więcej informacji o zasobach 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 kontroli, musisz znać identyfikator projektu Firebase, folderu lub organizacji, dla których chcesz wyświetlić informacje z dzienników kontroli. Możesz też określić inne indeksowane pola LogEntry, np. resource.type. Więcej informacji znajdziesz w artykule Szybkie wyszukiwanie wpisów w dzienniku.

Poniżej znajdziesz nazwy logów kontrolnych, które zawierają zmienne dla 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

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

Konsola

Aby pobrać wpisy dziennika kontrolnego dotyczące Twojego projektu, folderu lub organizacji Firebase, możesz użyć eksploratora logów w konsoli Google Cloud:

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

    Otwórz stronę Eksplorator logów

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

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

    • W polu Typ zasobu wybierz zasób Google Cloud, którego dzienniki kontroli chcesz wyświetlić.

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

      • W przypadku logów kontrolnych Aktywność administratora wybierz Aktywność.
      • W przypadku logów kontrolnych dostępu do danych wybierz data_access.
      • W przypadku logów kontrolnych zdarzeń systemowych wybierz system_event.
      • W przypadku dzienników kontrolnych Odrzucona zasada wybierz zasada.

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

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

gcloud

Narzędzie wiersza poleceń gcloud zapewnia interfejs wiersza poleceń dla interfejsu Cloud Logging API. W każdej nazwie pliku dziennika podaj prawidłową wartość PROJECT_ID, FOLDER_ID lub ORGANIZATION_ID.

Aby odczytać wpisy w logach 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 dziennika kontrolnego na poziomie folderu, uruchom to polecenie:

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

Aby odczytać wpisy dziennika kontrolnego na poziomie organizacji, uruchom to polecenie:

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

Więcej informacji o używaniu narzędzia gcloud znajdziesz w artykule Czytanie wpisów w dzienniku.

Interfejs API

Podczas tworzenia zapytań zastąp zmienne prawidłowymi wartościami, a także odpowiednią nazwę lub identyfikator dziennika inspekcji na poziomie projektu, folderu lub organizacji, zgodnie z ich listą w nazwach dzienników inspekcji. Jeśli np. zapytanie zawiera element PROJECT_ID, podany identyfikator projektu musi odnosić się do aktualnie wybranego projektu Firebase.

Aby za pomocą interfejsu Logging API wyświetlić wpisy dziennika kontrolnego, wykonaj te czynności:

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

  2. Wpisz te informacje w polu Treść żądania w formularzu Wypróbuj to API. Po kliknięciu tego wstępnie wypełnionego formularza treść żądania zostanie automatycznie wypełniona, ale w każdym z nazwów logów musisz podać prawidłową wartość PROJECT_ID.

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

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

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

Przekierowywanie dzienników kontrolnych

Dzienniki kontrolne możesz kierować do obsługiwanych miejsc docelowych w taki sam sposób, w jaki kierujesz inne rodzaje dzienników. Oto kilka powodów, dla których możesz chcieć przekierowywać dzienniki kontroli:

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

  • Aby zarządzać logami kontroli w całej organizacji, możesz utworzyć zbiorcze miejsca docelowe, które mogą przekierowywać logi z dowolnego lub wszystkich projektów Firebase w organizacji.

  • Jeśli włączone przez Ciebie logi kontrolne dostępu do danych powodują, że projekty Firebase przekraczają przydziały logów, możesz utworzyć odbiorniki, które wykluczą z logowania logi kontrolne dostępu do danych.

Instrukcje dotyczące kierowania dzienników znajdziesz w artykule Konfigurowanie odbiorników.

Ceny

Logi kontrolne działań administracyjnych i logi kontrolne zdarzeń systemowych są bezpłatne.

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

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