Firebase Realtime Database denetleme günlüğü

Bu belgede, hangi yöntemler de dahil olmak üzere Firebase Realtime Database için denetleme günlüğü açıklanmaktadır denetleme günlüklerini, her yöntemin ürettiği denetleme günlükleriyle ilgili ayrıntıları ve denetleme günlüklerini oluşturmaz. Google Cloud Google Cloud kaynakları. Daha fazla bilgi için bkz. Cloud Denetleme Günlüklerine genel bakış.

Notlar

DATA_READ ve DATA_WRITE işlemleri için protoPayload.metadata alanındaki alanlar hakkında ek bilgilere referans belgelerinden ulaşabilirsiniz.

Hizmet adı

Firebase Realtime Database denetleme günlükleri, firebasedatabase.googleapis.com hizmet adını kullanır.

İzin türüne göre yöntemler

DATA_READ, DATA_WRITE ve kontrol özelliklerini kontrol eden yöntemler ADMIN_READ izinleri, şu kategorilere ayrılmış günlükler oluşturur: Veri Erişimi denetleme günlükleri. ADMIN_WRITE izinlerini kontrol eden yöntemler günlük oluşturur kategori: Yönetici Etkinliği denetleme günlükleri.

İzin türü Yöntemler
ADMIN_READ google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
ADMIN_WRITE google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
DATA_READ google.firebase.database.v1.RealtimeDatabase.Connect
google.firebase.database.v1.RealtimeDatabase.Disconnect
google.firebase.database.v1.RealtimeDatabase.Listen
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
google.firebase.database.v1.RealtimeDatabase.Read
google.firebase.database.v1.RealtimeDatabase.Unlisten
DATA_WRITE google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
google.firebase.database.v1.RealtimeDatabase.Update
google.firebase.database.v1.RealtimeDatabase.Write

Her API arayüzü için denetleme günlükleri

Her yöntem için hangi izinlerin nasıl ve nasıl değerlendirildiği Firebase Realtime Database için Cloud Identity and Access Management belgelerini inceleyin.

google.firebase.database.v1.RealtimeDatabase

Aşağıdaki bölümde, aşağıdakilerle ilişkili denetleme günlükleriyle ilgili ayrıntılar verilmiştir: yöntemleri google.firebase.database.v1.RealtimeDatabase için geçerlidir.

Connect

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.Connect
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.connect - DATA_READ
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"

Disconnect

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.Disconnect
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.connect - DATA_READ
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"

Listen

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.Listen
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.get - DATA_READ
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"

OnDisconnectCancel

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.cancel - DATA_READ
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"

OnDisconnectPut

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.update - DATA_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"

OnDisconnectUpdate

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.update - DATA_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"

Read

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.Read
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.get - DATA_READ
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"

RunOnDisconnect

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.update - DATA_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"

Unlisten

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.Unlisten
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.cancel - DATA_READ
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"

Update

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.Update
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.get - DATA_READ
    • firebasedatabase.data.get - DATA_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"

Write

  • Yöntem: google.firebase.database.v1.RealtimeDatabase.Write
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.data.get - DATA_READ
    • firebasedatabase.data.get - DATA_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"

google.firebase.database.v1beta.RealtimeDatabaseService

Aşağıdaki bölümde, aşağıdakilerle ilişkili denetleme günlükleriyle ilgili ayrıntılar verilmiştir: yöntemleri google.firebase.database.v1beta.RealtimeDatabaseService için geçerlidir.

CreateDatabaseInstance

  • Yöntem: google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
  • Denetleme günlüğü türü: Yönetici etkinliği
  • İzinler:
    • firebasedatabase.instances.create - ADMIN_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"

DeleteDatabaseInstance

  • Yöntem: google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
  • Denetleme günlüğü türü: Yönetici etkinliği
  • İzinler:
    • firebasedatabase.instances.delete - ADMIN_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"

DisableDatabaseInstance

  • Yöntem: google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
  • Denetleme günlüğü türü: Yönetici etkinliği
  • İzinler:
    • firebasedatabase.instances.disable - ADMIN_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"

GetDatabaseInstance

  • Yöntem: google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.instances.get - ADMIN_READ
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"

ListDatabaseInstances

  • Yöntem: google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
  • Denetleme günlüğü türü: Veri erişimi
  • İzinler:
    • firebasedatabase.instances.list - ADMIN_READ
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"

ReenableDatabaseInstance

  • Yöntem: google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
  • Denetleme günlüğü türü: Yönetici etkinliği
  • İzinler:
    • firebasedatabase.instances.reenable - ADMIN_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"

UndeleteDatabaseInstance

  • Yöntem: google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
  • Denetleme günlüğü türü: Yönetici etkinliği
  • İzinler:
    • firebasedatabase.instances.undelete - ADMIN_WRITE
  • Yöntem uzun süreli veya akışlı bir işlemdir:
    sayısı
  • Bu yöntem için filtre uygula: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"

Denetim kimlik doğrulama bilgileri

Denetleme günlüğü girişleri bilgi içerir günlüğe kaydedilen işlemi gerçekleştiren kimlikle ilgili. Bir isteği tanımlamak için arayan bir kullanıcı varsa AuditLog nesnesinde aşağıdaki alanlara bakın:

  • Gerçek zamanlı bağlantılar kurma. Realtime Database Connect işlemleri Realtime Database'in kimlik doğrulamasından sonra kimlik doğrulama verilerini günlüğe kaydetmemesi kurulduğundan emin olun. Dolayısıyla Connect, kimlik doğrulama bilgilerine sahip değil. AuthenticationInfo nesnesi, şunun yer tutucusunu içerir: principalEmail audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com.

  • Google Kimlik Doğrulaması. Standart Google kullanan Realtime Database işlemleri Kimlik doğrulama (ör. Firebase Admin SDK'dan gelen trafik veya REST isteklerinden gelen trafik) standart bir OAuth jetonuyla kimlik doğrulaması yapılmış olmalıdır. gerçek kimlik bilgilerini içeren bir AuthenticationInfo nesnesine sahip olmalıdır e-posta gönderin.

  • Firebase Authentication. Firebase Authentication kullanan Realtime Database işlemleri principalEmail değerini içeren AuthenticationInfo nesnesi audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. Aynı durum JWT'ler var.

    • Üçüncü taraf kimlik doğrulaması için JSON Web Token (JWT) kullanıldıysa thirdPartyPrincipal alanı, jetonun başlığını ve yükünü içerir. Örneğin, örnek, Firebase Authentication ile kimliği doğrulanan isteklerin denetleme günlükleri bu isteğin Firebase Authentication jetonunu dahil edin.
  • Kimlik doğrulama yok. Herhangi bir güncelleme kullanmayan Realtime Database işlemleri kimlik doğrulamasında AuthenticationInfo principalEmail değeri audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com Açık güvenlik kurallarına sahip bir Realtime Database örneği bu tür istekleri kabul edebilir. Biz Tüm kullanıcılara veritabanlarının düzgün şekilde güvenliğini sağlamalarını öneririm.

  • Eski gizli anahtar jetonları. Eski jetonları kullanan Realtime Database işlemleri yer tutucu içeren bir AuthenticationInfo nesnesine sahip principalEmail / audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. Gizli anahtarlarla imzalanmış JWT için thirdPartyPrincipal, JWT başlıklarını ve yük.

Firebase Güvenlik Kuralları değerlendirmelerini denetle

Cloud Denetleme günlükleri, gerçekleştirilmesi olası istekleri Kural değişikliklerinden etkilenir.

AuthorizationInfo nesnesinde authorization.permission şunlardan biri olabilir:

  • firebasedatabase.data.get: Şurada belirtilen yolda okuma erişimi verildi resource.
  • firebasedatabase.data.update: Şurada belirtilen yolda yazma erişimi verildi resource.
  • firebasedatabase.data.connect: Connect ve Disconnect için yer tutucu. Realtime Database örneğine bağlanmak için yetkilendirme gerekmez.
  • firebasedatabase.data.cancel: Unlisten ve OnDisconnectCancel için kullanılır. Daha önce yetkilendirilmiş bir işlemi iptal etmek veya iptal etmek için başka ek bir işlem gerekmez. yetkilendirme.

Cloud Audit günlüklerini Realtime Database profil oluşturucu sonuçlarıyla ilişkilendirme

Realtime Database'de ayrıntılı performans analizini gerçekleştirmek için Realtime Database profiler ile birlikte Realtime Database denetleme günlüğü. Her aracın kendine özgü güçlü yanları vardır.

Cloud Audit Logging Realtime Database profil oluşturucu
  • Veritabanlarına erişimi denetler
  • Tüm istekleri sürekli olarak yakalar
  • Retrospektif toplantısı sorgulamaya izin verir
  • Ayrıntılı yetkilendirme jetonu bilgilerini içerir
  • Kullanım maliyetini artırır
  • Performans analizi için kullanılır
  • Hotspot tespiti ve dolayısıyla performans için faydalı araçlar sağlar optimizasyon
  • Listener-yayını ölçebilir. Bu boyut, olası veri hacmi nedeniyle Denetleme günlüklerinde bulunmaz
  • Hafif ve gerçek zamanlı olduğundan canlı yük testi için uygundur. Denetim günlük girişlerinin görünmesi birkaç dakika sürebilir.

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

Denetleme Günlüğü işlem adı Şuradaki özel değerler:
RealtimeDatabaseAuditMetadata
Profil oluşturucu işlemi adı
Bağlan RequestType: REALTIME eşzamanlı bağlantı
Bağlantıyı kes RequestType: REALTIME eş zamanlı bağlantı kesilmesi
Oku RequestType: REALTIME gerçek zamanlı okuma
Oku RequestType: REST dinlenme
Yazma RequestType: REALTIME gerçek zamanlı-yazma
Yazma RequestType: REST yeniden-yazma
Güncelle RequestType REALTIME.
. Kontrol edin: PreconditionType.
gerçek zamanlı-güncelleme
gerçek zamanlı-işlem
Güncelle RequestType REST.
. Kontrol edin: PreconditionType.
dinlenme-güncelleme
rest-işlemi
DinleyiciDinle RequestType: REALTIME dinleyiciyi dinle
Dinleyici Unvanı RequestType: REALTIME dinleyici-dinleme
Bağlantı Kesme RequestType: REALTIME bağlantı kesilme noktası
Bağlantıyı KeserkenGüncellen RequestType: REALTIME bağlantıyı kesildiğinde-güncelleme
Bağlantıyı Kesme: İptal RequestType: REALTIME bağlantı kesildiğinde-iptal
Bağlantı Kesme Çalıştırma RequestType: REALTIME bağlantı kesildiğinde çalıştırma