Firebase Gerçek Zamanlı Veritabanı denetim günlüğü kaydı

Bu sayfada Firebase tarafından Bulut Denetim Günlüklerinin bir parçası olarak oluşturulan denetim günlükleri açıklanmaktadır.

Genel Bakış

Firebase hizmetleri, "Kim neyi, nerede ve ne zaman yaptı?" sorularını yanıtlamanıza yardımcı olmak için denetim günlükleri yazar. Bunlar, Firebase projenize bağlı Google Cloud projesi kapsamında sağlanan Cloud Denetim Günlükleridir.

Firebase projelerinizin her biri yalnızca doğrudan proje içindeki kaynaklara ilişkin denetim günlüklerini içerir.

Bulut Denetim Günlüklerine genel bir bakış için Bulut Denetim Günlüklerine genel bakış bölümüne bakın. Denetim günlüğü biçimini daha iyi anlamak için bkz. Denetim günlüklerini anlama .

Mevcut denetim günlükleri

Firebase Gerçek Zamanlı Veritabanı için aşağıdaki denetim günlüğü türleri mevcuttur:

  • Yönetici Etkinliği denetim günlükleri

    Meta verileri veya yapılandırma bilgilerini yazan "yönetici yazma" işlemlerini içerir.

    Yönetici Etkinliği denetim günlüklerini devre dışı bırakamazsınız.

  • Veri Erişimi denetim günlükleri

    Meta verileri veya yapılandırma bilgilerini okuyan "yönetici okuma" işlemlerini içerir. Ayrıca kullanıcı tarafından sağlanan verileri okuyan veya yazan "veri okuma" ve "veri yazma" işlemlerini de içerir.

    Veri Erişimi denetim günlüklerini almak için bunları açıkça etkinleştirmeniz gerekir.

Denetim günlüğü türlerinin daha kapsamlı açıklamaları için bkz. Denetim günlüğü türleri .

Denetlenen operasyonlar

Aşağıda, Firebase Realtime Database'deki her denetim günlüğü türüne hangi API işlemlerinin karşılık geldiği özetlenmektedir:

Denetim günlükleri kategorisi Firebase Gerçek Zamanlı Veritabanı işlemleri
Yönetici Etkinliği Denetim Günlükleri (ADMIN_WRITE)
  • Veritabanı Örneği Oluştur
  • Veritabanı Örneğinin Silinmesi
  • DatabaseInstance'ı Devre Dışı Bırak
  • Veritabanı Örneğinin Yeniden Etkinleştirilmesi
Veri Erişimi Denetim Günlükleri (ADMIN_READ)
  • Veritabanı Örneği Getir
  • Veritabanı Örneklerini Listele
Veri Erişimi Denetim Günlükleri (DATA_READ veya DATA_WRITE)
Veri Erişimi Denetim Günlükleri (DATA_READ)
Veri Erişimi Denetim Günlükleri (DATA_WRITE)
  • Yazmak
  • Güncelleme. İlişkili WriteMetadata bakın.
  • AçıkBağlantıyı Kes
  • Bağlantı KesildiğindeGüncelleme. İlişkili WriteMetadata bakın.
  • Bağlantı Kesildiğindeİptal

Kimlik doğrulama bilgilerini denetleyin

Denetim günlüğü girişleri, günlüğe kaydedilen işlemi gerçekleştiren kimliğe ilişkin bilgileri içerir . Bir istek arayanını tanımlamak için AuditLog nesnesindeki aşağıdaki alanlara bakın:

  • Gerçek zamanlı bağlantılar kurma. Realtime Database Connect işlemleri, Realtime Database bağlantı kurulduktan sonra kimlik doğrulaması yaptığı için kimlik doğrulama verilerini günlüğe kaydetmez. Bu nedenle Connect kimlik doğrulama bilgisi yoktur. AuthenticationInfo nesnesi, audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com yerine bir principalEmail yer tutucusu içerir.

  • Google Kimlik Doğrulaması. Firebase Yönetici SDK'sından gelen trafik veya standart bir OAuth belirteci ile kimliği doğrulanan REST istekleri gibi standart Google Kimlik Doğrulaması kullanan Gerçek Zamanlı Veritabanı işlemleri, gerçek kimlik bilgileri e-postasını içeren bir AuthenticationInfo nesnesine sahiptir.

  • Firebase Kimlik Doğrulaması. Firebase Kimlik Doğrulaması kullanan Gerçek Zamanlı Veritabanı işlemleri, audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com principalEmail değerini içeren bir AuthenticationInfo nesnesine sahiptir. Özel JWT'ler üreterek kendi kimlik doğrulama çözümünüzü uygularsanız da aynı durum geçerlidir.

    • Üçüncü taraf kimlik doğrulaması için bir JSON Web Belirteci (JWT) kullanıldıysa, thirdPartyPrincipal alanı belirtecin başlığını ve yükünü içerir. Örneğin, Firebase Authentication ile kimliği doğrulanan isteklere ilişkin denetim günlükleri, söz konusu isteğin Firebase Authentication jetonunu içerir.
  • Kimlik doğrulama yok. Herhangi bir kimlik doğrulama kullanmayan Gerçek Zamanlı Veritabanı işlemleri, audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com principalEmail değerini içeren bir AuthenticationInfo nesnesine sahiptir. Açık güvenlik kurallarına sahip bir Gerçek Zamanlı Veritabanı örneği, bu tür istekleri kabul edebilir . Tüm kullanıcılara veritabanlarını uygun şekilde koruma altına almalarını öneririz.

  • Eski sır belirteçleri. Eski belirteçleri kullanan Gerçek Zamanlı Veritabanı işlemleri, audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com yer tutucu principalEmail içeren bir AuthenticationInfo nesnesine sahiptir. Gizli imzalı JWT için, thirdPartyPrincipal , JWT başlıklarını ve yükünü içerir.

Firebase Güvenlik Kuralları değerlendirmelerini denetleyin

Cloud Audit günlükleri, Kural değişikliklerinden potansiyel olarak etkilenecek istekleri belirlemek için kullanılabilir.

AuthorizationInfo nesnesinde, authorization.permission şunlardan biri olabilir:

  • firebasedatabase.data.get : resource belirtilen yolda okuma erişimi verildi.
  • firebasedatabase.data.update : resource belirtilen yolda yazma erişimi verildi.
  • firebasedatabase.data.connect : Connect ve Disconnect için yer tutucu. Gerçek Zamanlı Veritabanı örneğine bağlanmak için yetkilendirme gerekmez.
  • firebasedatabase.data.cancel : Unlisten ve OnDisconnectCancel için kullanılır. Daha önce yetkilendirilmiş bir işlemin iptal edilmesi veya iptal edilmesi ek bir yetkilendirme gerektirmez.

Cloud Audit günlüklerini Gerçek Zamanlı Veritabanı profil oluşturucu sonuçlarıyla ilişkilendirin

Gerçek Zamanlı Veritabanı profil oluşturucuyu Gerçek Zamanlı Veritabanı denetim günlüğüyle birlikte kullanarak Gerçek Zamanlı Veritabanı üzerinde derinlemesine performans analizi gerçekleştirebilirsiniz. Her aracın güçlü yönleri vardır.

Bulut Denetim Günlüğü Gerçek Zamanlı Veritabanı profil oluşturucusu
  • Veritabanlarına erişimi denetler
  • Tüm istekleri sürekli olarak yakalar
  • Geçmişe dönük sorgulamaya izin verir
  • Ayrıntılı kimlik doğrulama belirteci bilgilerini içerir
  • Kullanım maliyeti doğurur
  • Performans analizi için kullanılır
  • Etkin nokta tanımlama ve dolayısıyla performans optimizasyonu için yararlı araçlar sağlar
  • Potansiyel veri hacmi nedeniyle Denetim günlüklerinde bulunmayan dinleyici yayınını ölçebilir
  • Hafif ve gerçek zamanlı olup, canlı yük testi için idealdir. Denetim günlüğü girişlerinin görünmesi birkaç dakika sürebilir.

Denetim günlüğü içerikleri, aşağıda gösterildiği gibi profil oluşturucu metriklerine karşılık gelir.

Denetim Günlüğü işlemi adı Özel değerler
RealtimeDatabaseAuditMetadata
Profil oluşturucu işlemi adı
Bağlamak RequestType REALTIME eşzamanlı bağlantı
Bağlantıyı kes RequestType REALTIME eşzamanlı bağlantı kesme
Okumak RequestType REALTIME gerçek zamanlı okuma
Okumak RequestType : REST dinlenme okuması
Yazmak RequestType REALTIME gerçek zamanlı yazma
Yazmak RequestType : REST dinlenme-yazma
Güncelleme RequestType REALTIME .
PreconditionType kontrol edin.
gerçek zamanlı güncelleme
gerçek zamanlı işlem
Güncelleme RequestType REST .
PreconditionType kontrol edin.
geri kalan güncelleme
geri kalan işlem
DinleyiciDinle RequestType REALTIME dinleyici-dinle
DinleyiciDinlemeyi Durdur RequestType REALTIME dinleyici-dinlemeyi kaldır
AçıkBağlantıyı Kes RequestType REALTIME bağlantı kesildiğinde
Bağlantı KesildiğindeGüncelleme RequestType REALTIME bağlantı kesildiğinde güncelleme
Bağlantı Kesildiğindeİptal RequestType REALTIME bağlantıyı kes-iptal et
Bağlantıyı Keserken Çalıştır RequestType REALTIME bağlantı kesildiğinde çalıştır

Denetim günlüğü biçimi

Denetim günlüğü girişleri aşağıdaki nesneleri içerir:

  • LogEntry türünde bir nesne olan günlük girişinin kendisi. Yararlı alanlar aşağıdakileri içerir:

    • logName kaynak kimliğini ve denetim günlüğü türünü içerir.
    • resource denetlenen işlemin hedefini içerir.
    • timestamp denetlenen işlemin zamanını içerir.
    • protoPayload denetlenen bilgileri içerir.
  • Günlük girişinin protoPayload alanında tutulan bir AuditLog nesnesi olan denetim günlüğü verileri.

  • Hizmete özgü bir nesne olan isteğe bağlı hizmete özgü denetim bilgileri. Daha eski entegrasyonlarda bu nesne, AuditLog nesnesinin serviceData alanında tutulur; daha yeni entegrasyonlar metadata alanını kullanır.

Bu nesnelerdeki diğer alanlar ve bunların nasıl yorumlanacağı için Denetim günlüklerini anlama bölümünü inceleyin.

DATA_READ ve DATA_WRITE işlemleri için protoPayload.metadata alanlarla ilgili ek bilgiler referans belgelerde mevcuttur.

Günlük adı

Cloud Denetleme Günlükleri kaynak adları, Firebase projesini veya denetim günlüklerinin sahibi olan diğer Google Cloud varlığını ve günlüğün Yönetici Etkinliği, Veri Erişimi, Reddedilen Politika veya Sistem Etkinliği denetim günlüğü verilerini içerip içermediğini belirtir. Örneğin, aşağıda proje düzeyinde Yönetici Etkinliği denetim günlükleri ve bir kuruluşun Veri Erişimi denetim günlükleri için günlük adları gösterilmektedir. Değişkenler Firebase projesi ve kuruluş tanımlayıcılarını belirtir.

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

Hizmet adı

Firebase Gerçek Zamanlı Veritabanı denetim günlükleri firebasedatabase.googleapis.com hizmet adını kullanır.

Tüm Cloud Logging API hizmet adlarının ve bunlara karşılık gelen izlenen kaynak türlerinin tam listesi için Hizmetleri kaynaklarla eşleme konusuna bakın.

Kaynak türleri

Firebase Gerçek Zamanlı Veritabanı denetim günlükleri, tüm denetim günlükleri için audited_resource kaynak türünü kullanır.

Cloud Logging'de izlenen tüm kaynak türlerinin listesi ve açıklayıcı bilgiler için bkz. İzlenen kaynak türleri .

Denetim günlüğünü etkinleştir

Yönetici Etkinliği denetim günlükleri her zaman etkindir; bunları devre dışı bırakamazsınız.

Veri Erişimi denetleme günlükleri varsayılan olarak devre dışıdır ve açıkça etkinleştirilmediği sürece yazılmaz (BigQuery için devre dışı bırakılamayan Veri Erişimi denetleme günlükleri istisnadır).

Gerçek Zamanlı Veritabanı için Veri Erişimi denetim günlükleri, GCP Konsolunda DATA_READ ve/veya DATA_WRITE kontrol edilerek değiştirilir. Günlüklerin GCP Konsolunda etkinleştirildiği/devre dışı bırakıldığı zaman ile günlüklerin yayınlanmaya başladığı/durduğu zaman arasında bir saate kadar bir gecikme olabilir.

Veri Erişimi denetim günlüklerinizin bir kısmını veya tamamını etkinleştirme talimatları için bkz . Veri Erişimi günlüklerini yapılandırma .

İzinler ve roller

Cloud IAM izinleri ve rolleri, Google Cloud kaynaklarındaki denetim günlüğü verilerine erişme yeteneğinizi belirler.

Kullanım durumunuz için hangi Logging'e özgü izinlerin ve rollerin geçerli olacağına karar verirken aşağıdakileri göz önünde bulundurun:

  • Günlük Görüntüleyici rolü ( roles/logging.viewer ) Yönetici Etkinliği, Reddedilen İlke ve Sistem Olayı denetim günlüklerine salt okunur erişim sağlar. Yalnızca bu role sahipseniz _Default paketindeki Veri Erişimi denetim günlüklerini görüntüleyemezsiniz.

  • Özel Günlük Görüntüleyici rolü (roles/logging.privateLogViewer ), roles/logging.viewer dosyasında bulunan izinlerin yanı sıra _Default paketindeki Veri Erişimi denetim günlüklerini okuma becerisini içerir.

    Bu özel günlükler kullanıcı tanımlı paketlerde saklanıyorsa bu paketlerdeki günlükleri okuma iznine sahip olan herhangi bir kullanıcının özel günlükleri okuyabileceğini unutmayın. Günlük paketleri hakkında daha fazla bilgi için bkz. Yönlendirme ve depolamaya genel bakış .

Denetim günlükleri verilerine uygulanan Cloud IAM izinleri ve rolleri hakkında daha fazla bilgi için bkz. Erişim kontrolü .

Günlükleri görüntüle

Denetim günlüklerini bulmak ve görüntülemek için, denetim günlüğü bilgilerini görüntülemek istediğiniz Firebase projesinin, klasörün veya kuruluşun tanımlayıcısını bilmeniz gerekir. resource.type gibi diğer indekslenmiş LogEntry alanlarını da belirtebilirsiniz; ayrıntılar için Günlük girişlerini hızla bulma konusunu inceleyin.

Denetim günlüğü adları aşağıdadır; Firebase projesinin, klasörünün veya kuruluşunun tanımlayıcılarına ilişkin değişkenleri içerirler:

   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

Denetim günlüklerini Cloud Logging'de GCP Konsolunu, gcloud komut satırı aracını veya Logging API'sini kullanarak görüntüleyebilirsiniz.

Konsol

Firebase projenize, klasörünüze veya kuruluşunuza ilişkin denetim günlüğü girişlerinizi almak için GCP Konsolundaki Günlük Gezgini'ni kullanabilirsiniz:

  1. GCP Konsolunda Günlük Kaydı > Günlük Gezgini sayfasına gidin.

    Günlük Gezgini sayfasına gidin

  2. Günlük Gezgini sayfasında mevcut bir Firebase projesini, klasörünü veya kuruluşunu seçin.

  3. Sorgu oluşturucu bölmesinde aşağıdakileri yapın:

    • Kaynak türü bölümünde, denetim günlüklerini görmek istediğiniz Google Cloud kaynağını seçin.

    • Günlük adı alanında görmek istediğiniz denetim günlüğü türünü seçin:

      • Yönetici Etkinliği denetim günlükleri için etkinlik seçeneğini seçin.
      • Veri Erişimi denetim günlükleri için data_access'i seçin.
      • Sistem Olayı denetim günlükleri için system_event öğesini seçin.
      • Politika Reddedildi denetim günlükleri için politikayı seçin.

    Bu seçenekleri görmüyorsanız Firebase projesinde, klasöründe veya kuruluşunda bu türden herhangi bir denetim günlüğü bulunmuyor demektir.

    Günlük Gezgini'ni kullanarak sorgulama hakkında daha fazla ayrıntı için bkz . Günlük sorguları oluşturma .

gcloud

gcloud komut satırı aracı, Cloud Logging API'ye bir komut satırı arayüzü sağlar. Günlük adlarının her birine geçerli bir PROJECT_ID , FOLDER_ID veya ORGANIZATION_ID girin.

Firebase proje düzeyindeki denetim günlüğü girişlerinizi okumak için aşağıdaki komutu çalıştırın:

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

Klasör düzeyindeki denetim günlüğü girişlerinizi okumak için aşağıdaki komutu çalıştırın:

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

Kuruluş düzeyindeki denetim günlüğü girişlerinizi okumak için aşağıdaki komutu çalıştırın:

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

gcloud aracını kullanma hakkında daha fazla bilgi için Günlük girişlerini okuma bölümüne bakın.

API'si

Sorgularınızı oluştururken değişkenleri geçerli değerlerle değiştirin; uygun proje düzeyi, klasör düzeyi veya kuruluş düzeyinde denetim günlüğü adını veya denetim günlüğü adlarında listelenen tanımlayıcıları değiştirin. Örneğin, sorgunuz PROJECT_ID içeriyorsa sağladığınız proje tanımlayıcının o anda seçili olan Firebase projesine atıfta bulunması gerekir.

Denetim günlüğü girişlerinize bakmak amacıyla Günlük API'sini kullanmak için aşağıdakileri yapın:

  1. entries.list yöntemine ilişkin belgelerdeki Bu API'yi deneyin bölümüne gidin.

  2. Aşağıdakileri Bu API'yi Deneyin formunun İstek gövdesi kısmına ekleyin. Bu önceden doldurulmuş forma tıkladığınızda istek gövdesi otomatik olarak doldurulur, ancak günlük adlarının her birine geçerli bir PROJECT_ID sağlamanız gerekir.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Yürüt'ü tıklayın.

Sorgulama hakkında daha fazla ayrıntı için bkz. Günlüğe kaydetme sorgu dili .

Denetim günlüğü girişi örneği ve buradaki en önemli bilgilerin nasıl bulunacağı için Örnek denetim günlüğü girişi bölümüne bakın.

Denetim günlüklerini yönlendir

Denetim günlüklerini, diğer türdeki günlükleri yönlendirdiğiniz şekilde desteklenen hedeflere yönlendirebilirsiniz . Denetim günlüklerinizi yönlendirmek isteyebileceğiniz bazı nedenler şunlardır:

  • Denetim günlüklerini daha uzun süre saklamak veya daha güçlü arama özelliklerinden yararlanmak için denetim günlüklerinizin kopyalarını Google Cloud Storage, BigQuery veya Google Cloud Pub/Sub'a yönlendirebilirsiniz. Cloud Pub/Sub'u kullanarak diğer uygulamalara, diğer kod depolarına ve üçüncü taraflara yönlendirme yapabilirsiniz.

  • Denetim günlüklerinizi kuruluşun tamamında yönetmek için, kuruluştaki Firebase projelerinin herhangi birinden veya tümünden gelen günlükleri yönlendirebilecek toplu havuzlar oluşturabilirsiniz.

  • Etkinleştirilmiş Veri Erişimi denetleme günlükleriniz Firebase projelerinizi günlük tahsislerinizin üzerine itiyorsa Veri Erişimi denetleme günlüklerini Günlük Kaydının dışında bırakan havuzlar oluşturabilirsiniz.

Yönlendirme günlüklerine ilişkin talimatlar için bkz . Havuzları yapılandırma .

Fiyatlandırma

Yönetici Etkinliği denetim günlükleri ve Sistem Etkinliği denetim günlükleri ücretsizdir.

Veri Erişimi denetim günlükleri ve Politika Reddedildi denetim günlükleri ücrete tabidir.

Cloud Logging fiyatlandırması hakkında daha fazla bilgi için Google Cloud'un işlem paketi fiyatlandırmasına bakın: Cloud Logging .