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ğıdaki kaynaklara bakın:
- Denetleme günlüğü türleri
- Denetleme günlüğü girişi yapısı
- Denetleme günlüklerini depolama ve yönlendirme
- Cloud Logging fiyatlandırması özeti
- Veri Erişimi denetleme günlüklerini etkinleştirme
Notlar
protoPayload.metadata içindeki DATA_READ ve DATA_WRITE işlemleriyle ilgili alanlar hakkında daha fazla bilgiyi referans belgelerinde bulabilirsiniz.
Hizmet adı
Firebase Realtime Database denetleme günlüklerinde firebasedatabase.googleapis.com hizmet adı kullanılır.
Bu hizmet için filtrele:
protoPayload.serviceName="firebasedatabase.googleapis.com"
İzin türüne göre yöntemler
Her IAM izninin bir type özelliği vardır. Bu özelliğin değeri, dört değerden biri olabilen bir enum'dur: ADMIN_READ, ADMIN_WRITE, DATA_READ veya DATA_WRITE. Bir yöntemi çağırdığınızda Firebase Realtime Database, kategorisi yöntemi gerçekleştirmek için gereken iznin type özelliğine bağlı olan bir denetim günlüğü oluşturur.
type özelliği 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ğerine sahip bir IAM izni gerektiren yöntemler
ADMIN_WRITE oluşturma
Yönetici Etkinliği denetleme günlükleri oluşturur.
| İzin türü | Yöntemler |
|---|---|
ADMIN_READ |
google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances |
ADMIN_WRITE |
google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance |
DATA_READ |
google.firebase.database.v1.RealtimeDatabase.Connectgoogle.firebase.database.v1.RealtimeDatabase.Disconnectgoogle.firebase.database.v1.RealtimeDatabase.Listengoogle.firebase.database.v1.RealtimeDatabase.OnDisconnectCancelgoogle.firebase.database.v1.RealtimeDatabase.Readgoogle.firebase.database.v1.RealtimeDatabase.Unlisten |
DATA_WRITE |
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPutgoogle.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdategoogle.firebase.database.v1.RealtimeDatabase.RunOnDisconnectgoogle.firebase.database.v1.RealtimeDatabase.Updategoogle.firebase.database.v1.RealtimeDatabase.Write |
API arayüzü denetleme günlükleri
Her yöntem için hangi izinlerin nasıl değerlendirildiği hakkında bilgi edinmek için Firebase Realtime Database ile ilgili Cloud Identity and Access Management belgelerine bakın.
google.firebase.database.v1.RealtimeDatabase
Aşağıdaki denetleme günlükleri, google.firebase.database.v1.RealtimeDatabase yöntemleriyle 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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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_WRITEfirebasedatabase.data.update - DATA_WRITE
- Yöntem, uzun süren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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 yöntemleriyle 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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
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üren veya yayınlanan bir işlem:
Hayır.
- Bu yöntem için filtre:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"
Kimlik doğrulama bilgilerini denetleme
Denetleme günlüğü girişleri, günlüğe kaydedilen işlemi gerçekleştiren kimlik hakkında bilgiler içerir. İstek çağırıcıyı belirlemek için AuditLog nesnesindeki aşağıdaki alanlara bakın:
Anlık bağlantılar kurma Realtime Database
Connectişlemleri, bağlantı kurulduktan sonra Realtime Database kimlik doğrulaması yaptığından kimlik doğrulama verilerini kaydetmez. Bu nedenle,Connectkimlik doğrulama bilgisi içermiyor.AuthenticationInfonesnesi,principalEmailyer tutucusunu içeriyor.audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com.Google Kimlik Doğrulaması. Realtime Database veya REST isteklerinden gelen trafik gibi standart Google Kimlik Doğrulama'yı kullanan Realtime Database işlemleri, standart bir OAuth jetonuyla kimliği doğrulanmış gerçek kimlik bilgilerini içeren bir
AuthenticationInfonesnesine sahiptir.Firebase Admin SDKFirebase Authentication. Firebase Authentication kullanan Realtime Database işlemlerinde,
principalEmaildeğeriaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comolan birAuthenticationInfonesnesi bulunur. Kendi kimlik doğrulama çözümünüzü özel JWT'ler oluşturarak uygularsanız da aynı durum geçerlidir.- Üçüncü taraf kimlik doğrulaması için JSON Web Token (JWT) kullanıldıysa
thirdPartyPrincipalalanı, jetonun başlığını ve yükünü içerir. Örneğin, Firebase Authentication ile kimliği doğrulanmış isteklerin denetim günlükleri, bu isteğin Firebase Authentication jetonunu içerir.
- Üçüncü taraf kimlik doğrulaması için JSON Web Token (JWT) kullanıldıysa
Kimlik doğrulama yok. Realtime Database kimlik doğrulama kullanmayan işlemlerin
AuthenticationInfonesnesindeprincipalEmaildeğeriaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comolan bir Realtime Database bulunur. Açık güvenlik kurallarına sahip bir Realtime Database örneği bu tür istekleri verebilir. Tüm kullanıcıların veritabanlarını uygun şekilde güvenli hale getirmelerini öneririz.Eski gizli anahtar jetonları. Eski jetonlar kullanan Realtime Database işlemlerinde,
AuthenticationInfonesnesi bulunur. Bu nesne,audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comdeğerininprincipalEmailyer tutucusunu içerir. Gizli anahtarla imzalanmış JWT içinthirdPartyPrincipal, JWT başlıklarını ve yükünü içerir.
Denetim Firebase Security Rules değerlendirmeleri
Cloud Audit günlükleri, Security Rules değişikliklerinden etkilenme olasılığı olan istekleri belirlemek için kullanılabilir.
AuthorizationInfo nesnesinde authorization.permission şu değerlerden biri olabilir:
firebasedatabase.data.get:resourceiçinde belirtilen yolda okuma erişimi verilir.firebasedatabase.data.update:resourceiçinde belirtilen yolda yazma erişimi verilir.firebasedatabase.data.connect:ConnectveDisconnectiçin yer tutucu. Realtime Database örneğine bağlanmak için yetkilendirme gerekmez.firebasedatabase.data.cancel:UnlistenveOnDisconnectCanceliçin kullanılır. Daha önce yetkilendirilmiş bir işlemi iptal etmek veya geri almak için ek yetkilendirme gerekmez.
Cloud Denetleme Günlüklerini Realtime Database profiler sonuçlarıyla ilişkilendirme
Realtime Database denetleme günlüğü kaydıyla birlikte Realtime Database profil oluşturucuyu kullanarak Realtime Database üzerinde ayrıntılı performans analizi yapabilirsiniz. Her aracın güçlü yönleri vardır.
| Cloud Audit Logging | Realtime Database profiler |
|---|---|
|
|
Denetim günlüğü içerikleri, aşağıda gösterildiği gibi profil oluşturucu 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 |
concurrent-connect |
| Bağlantıyı kes | RequestType: REALTIME |
concurrent-disconnect |
| Okuma | RequestType: REALTIME |
realtime-read |
| Okuma | RequestType: REST |
rest-read |
| Yazma | RequestType: REALTIME |
realtime-write |
| Yazma | RequestType: REST |
rest-write |
| Güncelle | RequestType REALTIME.
Çek PreconditionType. |
realtime-update realtime-transaction |
| Güncelle | RequestType REST.
Çek PreconditionType. |
rest-update rest-transaction |
| ListenerListen | RequestType: REALTIME |
listener-listen |
| ListenerUnlisten | RequestType: REALTIME |
listener-unlisten |
| OnDisconnectPut | RequestType: REALTIME |
on-disconnect-put |
| OnDisconnectUpdate | RequestType: REALTIME |
on-disconnect-update |
| OnDisconnectCancel | RequestType: REALTIME |
on-disconnect-cancel |
| RunOnDisconnect | RequestType: REALTIME |
run-on-disconnect |