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:
- Denetleme günlüğü türleri
- Denetleme günlüğü girişi yapısı
- Denetim günlüklerini depolama ve yönlendirme
- Cloud Logging fiyatlandırma özeti
- Veri Erişimi denetleme günlüklerini etkinleştirme
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 tutucuprincipalEmail
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çerenAuthenticationInfo
nesnesiaudit-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.
- Üçüncü taraf kimlik doğrulaması için JSON Web Jetonu (JWT) kullanıldıysa
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 birprincipalEmail
değeri içeren birAuthenticationInfo
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 olmaprincipalEmail
/audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Gizli anahtarlarla imzalanmış JWT içinthirdPartyPrincipal
, 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 verildiresource
.firebasedatabase.data.update
:resource
içinde belirtilen yolda yazma erişimi izni verilir.firebasedatabase.data.connect
:Connect
veDisconnect
için yer tutucu. Bir 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ş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 |
---|---|
|
|
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 |