Firebase Realtime Database denetleme günlüğü

Bu belgede, Firebase Realtime Database için denetim günlüğü açıklanmaktadır. Google Cloud hizmetleri, Google Cloud kaynaklarınızdaki yönetim ve erişim etkinliklerini kaydeden denetleme günlükleri oluşturur. Cloud Denetleme Günlükleri hakkında daha fazla bilgi için aşağıdakilere göz atın:

Notlar

DATA_READ ve DATA_WRITE işlemleri için protoPayload.metadata alanındaki alanlar hakkında ek bilgileri referans belgelerinde bulabilirsiniz.

Hizmet adı

Firebase Realtime Database denetleme günlükleri, firebasedatabase.googleapis.com hizmet adını kullanır. Bu hizmet için filtre uygula:

    protoPayload.serviceName="firebasedatabase.googleapis.com"
  

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

Her IAM izninin bir type mülkü vardır. Bu mülkün değeri, ADMIN_READ, ADMIN_WRITE, DATA_READ veya DATA_WRITE olmak üzere dört değerden biri olabilir. Bir yöntemi çağırdığınızda Firebase Realtime Database, yöntemi gerçekleştirmek için gereken iznin type mülküne bağlı olarak kategorisi belirlenen bir denetim günlüğü oluşturur. type mülk değeri DATA_READ, DATA_WRITE veya ADMIN_READ olan bir IAM izni gerektiren yöntemler Veri Erişimi denetleme günlükleri oluşturur. type özellik değeriyle IAM izni gerektiren yöntemler / ADMIN_WRITE oluşturmak 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

API arayüzü denetleme günlükleri

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

google.firebase.database.v1.RealtimeDatabase

Aşağıdaki denetleme günlükleri, google.firebase.database.v1.RealtimeDatabase'e ait yöntemlerle ilişkilidir.

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 filtreleme: 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 filtreleme: 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ış işlemidir: Hayır.
  • 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ış işlemidir: Hayır.
  • 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ış işlemidir: Hayır.
  • 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 filtreleme: 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ış işlemidir: Hayır.
  • 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 filtreleme: 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_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • Yöntem uzun süreli veya akış işlemidir: Hayır.
  • 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.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 denetleme günlükleri, google.firebase.database.v1beta.RealtimeDatabaseService'e ait yöntemlerle ilişkilidir.

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ış işlemidir: Hayır.
  • 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 filtreleme: 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ış işlemidir: Hayır.
  • Bu yöntem için filtreleme: 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ış işlemidir: Hayır.
  • 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 filtreleme: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"

Denetim kimlik doğrulama bilgileri

Denetleme günlüğü girişleri, günlüklenen işlemi gerçekleştiren kimlikle ilgili bilgileri içerir. İsteği çağıran kullanıcıyı belirlemek için AuditLog nesnesinde aşağıdaki alanlara bakın:

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

  • Google Kimlik Doğrulaması. Standart Google kullanan Realtime Database işlem Kimlik doğrulama (ör. Firebase Admin SDK veya REST isteklerinden gelen trafik) standart OAuth jetonuyla kimlik doğrulamasından geçmiş, 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. Özel JWT'ler oluşturarak kendi kimlik doğrulama çözümünüzü uygularsanız da aynı durum geçerlidir.

    • Üçüncü taraf kimlik doğrulaması için JSON Web Jetonu (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ğrulanmış isteklerin denetleme günlükleri bu isteğin Firebase Authentication jetonunu dahil edin.
  • Kimlik doğrulama yok. Kimlik doğrulama kullanmayan Realtime Database işlemlerinde, audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com değerine sahip bir principalEmail değeri içeren bir AuthenticationInfo nesnesi bulunur. Açık güvenlik kurallarına sahip bir Realtime Database örneği bu tür istekleri kabul edebilir. Tüm kullanıcıların veritabanlarını uygun şekilde güvence altına almalarını öneririz.

  • Eski gizli anahtar jetonları. Eski jetonları kullanan Realtime Database işlem yer tutucu içeren bir AuthenticationInfo nesnesine sahip olma 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 Security Rules denetim değerlendirmeleri

Cloud Audit günlükleri, Rules değişikliklerinden etkilenebilecek istekleri belirlemek için kullanılabilir.

AuthorizationInfo nesnesinde authorization.permission aşağıdakilerden biri olabilir:

  • firebasedatabase.data.get: Şurada belirtilen yolda okuma erişimi verildi resource.
  • firebasedatabase.data.update: resource içinde belirtilen yolda yazma erişimi izni verilir.
  • firebasedatabase.data.connect: Connect ve Disconnect için yer tutucu. Bir 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 Denetleme günlüklerini Realtime Database profilleyici sonuçlarıyla ilişkilendirme

Realtime Database denetleme günlüğüyle birlikte Realtime Database profilleyiciyi kullanarak Realtime Database hakkında ayrıntılı performans analizi yapabilirsiniz. Her aracın güçlü yanları vardır.

Cloud Audit Logging Realtime Database profilleyici
  • Veritabanlarına erişimi denetler
  • Tüm istekleri sürekli olarak yakalar
  • Geriye dönük sorguya izin verir
  • Ayrıntılı kimlik doğrulama jetonu bilgileri içerir
  • Kullanım maliyeti oluşur.
  • Performans analizi için kullanılır
  • Sıcak nokta tanımlama ve dolayısıyla performans optimizasyonu için faydalı araçlar sağlar
  • 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üğündeki girişlerin görünmesi birkaç dakikayı bulabilir.

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

Denetleme Günlüğü işlem adı
RealtimeDatabaseAuditMetadata içindeki özel değerler
Profiler işlem adı
Bağlan RequestType: REALTIME eşzamanlı bağlantı
Bağlantıyı kes RequestType: REALTIME concurrent-disconnect
Okuma RequestType: REALTIME realtime-read
Okuma RequestType: REST rest-read
Yazma RequestType: REALTIME gerçek zamanlı-yazma
Yazma RequestType: REST rest-write
Güncelle RequestType REALTIME.
. Kontrol edin: PreconditionType.
gerçek zamanlı-güncelleme
gerçek zamanlı-işlem
Güncelle RequestType REST.
PreconditionType'i işaretleyin.
rest-update
rest-transaction
DinleyiciDinle RequestType: REALTIME dinleyici-dinle
ListenerUnlisten RequestType: REALTIME dinleyici-dinleme
Bağlantı Kesme RequestType: REALTIME bağlantı kesilme noktası
OnDisconnectUpdate RequestType: REALTIME on-disconnect-update
OnDisconnectCancel RequestType: REALTIME bağlantı kesildiğinde-iptal
RunOnDisconnect RequestType: REALTIME bağlantı kesildiğinde çalıştırma