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 ek 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şturur
Yönetici Etkinliği denetim 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 hangi izinlerin nasıl değerlendirildiği hakkında bilgi edinmek için Firebase Realtime Database ile ilgili Cloud Identity and Access Management dokümanlarına 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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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_WRITE
firebasedatabase.data.update - DATA_WRITE
- Yöntem, uzun süren veya akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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 akış işlemi:
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
Connect
işlemleri, bağlantı kurulduktan sonra Realtime Database kimlik doğrulaması yaptığından kimlik doğrulama verilerini kaydetmez. Bu nedenle,Connect
kimlik doğrulama bilgisi içermiyor.AuthenticationInfo
nesnesi,audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
değerine sahip bir yer tutucuprincipalEmail
içeriyor.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
AuthenticationInfo
nesnesine sahiptir.Firebase Admin SDKFirebase Authentication. Realtime Database işlemlerinde Firebase Authentication kullanılan
AuthenticationInfo
nesnesindeprincipalEmail
değeriaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
olan bir nesne 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
thirdPartyPrincipal
alanı, jetonun başlığını ve yükünü içerir. Örneğin, Firebase Authentication ile kimliği doğrulanan 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
AuthenticationInfo
nesnesindeprincipalEmail
değeriaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
olan bir Realtime Database örneği bulunur. Açık güvenlik kuralları olan 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,
AuthenticationInfo
nesnesi bulunur. Bu nesne,audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
değerininprincipalEmail
yer 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, 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
:resource
içinde belirtilen yolda okuma erişimi verilir.firebasedatabase.data.update
:resource
içinde belirtilen yolda yazma erişimi izni verildi.firebasedatabase.data.connect
:Connect
veDisconnect
için yer tutucu. Realtime Database örneğine bağlanmak için yetkilendirme gerekmez.firebasedatabase.data.cancel
:Unlisten
veOnDisconnectCancel
için kullanılır. Daha önce yetkilendirilmiş bir işlemin iptal edilmesi veya geri alınması 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 profiler'ı 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 |