يوضّح هذا المستند عملية تسجيل التدقيق في "قاعدة بيانات Firebase في الوقت الفعلي". تنشئ خدمات Google Cloud سجلات تدقيق تسجّل أنشطة الإدارة والوصول ضمن موارد Google Cloud. لمزيد من المعلومات عن "سجلّات تدقيق السحابة الإلكترونية"، يُرجى الاطّلاع على ما يلي:
- أنواع سجلّات التدقيق
- بنية إدخال سجلّ التدقيق
- تخزين سجلّات التدقيق وتوجيهها
- ملخّص أسعار Cloud Logging
- تفعيل سجلّات تدقيق الوصول إلى البيانات
ملاحظات
تتوفّر معلومات إضافية حول الحقول في protoPayload.metadata
لعمليات DATA_READ
وDATA_WRITE
في المستندات المرجعية.
اسم الخدمة
تستخدِم سجلّات التدقيق في "قاعدة بيانات Firebase في الوقت الفعلي" اسم الخدمة firebasedatabase.googleapis.com
.
فلتر لهذه الخدمة:
protoPayload.serviceName="firebasedatabase.googleapis.com"
الطُرق حسب نوع الإذن
يحتوي كل إذن من أذونات إدارة الهوية وإمكانية الوصول (IAM) على السمة type
، وقيمتها هي تعداد
يمكن أن تكون إحدى القيم الأربع التالية: ADMIN_READ
أو ADMIN_WRITE
أو DATA_READ
أو DATA_WRITE
. عند استدعاء إحدى الطرق، تنشئ "قاعدة بيانات Firebase في الوقت الفعلي" سجل تدقيق يعتمد تصنيفه على السمة type
للإذن المطلوب لتنفيذ الطريقة.
تؤدي الطرق التي تتطلّب إذنًا في "إدارة الهوية وإمكانية الوصول" مع قيمة السمة type
البالغة DATA_READ
أو DATA_WRITE
أو ADMIN_READ
إلى إنشاء سجلّات تدقيق الوصول إلى البيانات.
تؤدي الطرق التي تتطلّب إذنًا من نظام إدارة الهوية وإمكانية الوصول (IAM) مع قيمة السمة type
إلى ADMIN_WRITE
إلى إنشاء سجلّات تدقيق نشاط المشرف.
نوع الإذن | الإجراءات |
---|---|
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 |
سجلات تدقيق واجهة برمجة التطبيقات
للحصول على معلومات حول كيفية تقييم الأذونات ونوعها لكل طريقة، راجِع مستندات Cloud Identity and Access Management الخاصة بقاعدة بيانات Firebase الآنية الاستجابة.
google.firebase.database.v1.RealtimeDatabase
ترتبط سجلات التدقيق التالية بطُرق تنتمي إلى
google.firebase.database.v1.RealtimeDatabase
.
Connect
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.Connect
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.connect - DATA_READ
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"
Disconnect
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.Disconnect
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.connect - DATA_READ
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"
Listen
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.Listen
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.get - DATA_READ
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"
OnDisconnectCancel
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.cancel - DATA_READ
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"
OnDisconnectPut
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.update - DATA_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"
OnDisconnectUpdate
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.update - DATA_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"
Read
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.Read
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.get - DATA_READ
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"
RunOnDisconnect
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.update - DATA_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"
Unlisten
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.Unlisten
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.cancel - DATA_READ
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"
Update
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.Update
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.get - DATA_WRITE
firebasedatabase.data.update - DATA_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"
Write
- طريقة التشفير (Method):
google.firebase.database.v1.RealtimeDatabase.Write
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.data.update - DATA_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"
google.firebase.database.v1beta.RealtimeDatabaseService
ترتبط سجلات التدقيق التالية بطُرق تنتمي إلى
google.firebase.database.v1beta.RealtimeDatabaseService
.
CreateDatabaseInstance
- طريقة التشفير (Method):
google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
- نوع سجلّ التدقيق: نشاط المشرف
- الأذونات:
firebasedatabase.instances.create - ADMIN_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"
DeleteDatabaseInstance
- طريقة التشفير (Method):
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
- نوع سجلّ التدقيق: نشاط المشرف
- الأذونات:
firebasedatabase.instances.delete - ADMIN_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"
DisableDatabaseInstance
- طريقة التشفير (Method):
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
- نوع سجلّ التدقيق: نشاط المشرف
- الأذونات:
firebasedatabase.instances.disable - ADMIN_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"
GetDatabaseInstance
- طريقة التشفير (Method):
google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.instances.get - ADMIN_READ
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"
ListDatabaseInstances
- طريقة التشفير (Method):
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
- نوع سجلّ التدقيق: الوصول إلى البيانات
- الأذونات:
firebasedatabase.instances.list - ADMIN_READ
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"
ReenableDatabaseInstance
- طريقة التشفير (Method):
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
- نوع سجلّ التدقيق: نشاط المشرف
- الأذونات:
firebasedatabase.instances.reenable - ADMIN_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"
UndeleteDatabaseInstance
- طريقة التشفير (Method):
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
- نوع سجلّ التدقيق: نشاط المشرف
- الأذونات:
firebasedatabase.instances.undelete - ADMIN_WRITE
- الطريقة هي عملية بث أو عملية طويلة الأمد:
لا.
- فلترة هذه الطريقة:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"
معلومات مصادقة التدقيق
تتضمّن إدخالات سجلّ التدقيق معلومات حول الهوية التي نفّذت العملية المسجّلة. لتحديد هوية مقدّم الطلب، اطّلِع على الحقول التالية ضمن عنصر AuditLog:
إنشاء اتصالات في الوقت الفعلي: لا تسجّل عمليات Realtime Database
Connect
بيانات المصادقة لأنّ Realtime Database تتم المصادقة بعد إنشاء اتصال. لذلك، لا يحتويConnect
على معلومات مصادقة. يحتوي العنصرAuthenticationInfo
على عنصر نائبprincipalEmail
بقيمةaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.المصادقة من Google عمليات Realtime Database التي تستخدم مصادقة Google العادية، مثل الزيارات الواردة من Firebase Admin SDK أو طلبات REST التي تمت مصادقتها باستخدام رمز OAuth مميَّز عادي، تتضمّن عنصر
AuthenticationInfo
يحتوي على البريد الإلكتروني الفعلي لبيانات الاعتماد.Firebase Authentication. عمليات Realtime Database التي تستخدم Firebase Authentication لها كائن
AuthenticationInfo
يحتوي على قيمةprincipalEmail
تساويaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. وينطبق الأمر نفسه إذا نفّذت حلّ المصادقة الخاص بك من خلال إنشاء رموز JWT مخصّصة.- في حال استخدام رمز JSON المميّز للويب (JWT) للمصادقة من جهة خارجية، يتضمّن الحقل
thirdPartyPrincipal
عنوان الرمز وحمولته. على سبيل المثال، تتضمّن سجلّات التدقيق للطلبات التي تمّت مصادقتها باستخدام Firebase Authentication رمزًا مميّزًا خاصًا بهذا الطلب.Firebase Authentication
- في حال استخدام رمز JSON المميّز للويب (JWT) للمصادقة من جهة خارجية، يتضمّن الحقل
لا يلزم إجراء مصادقة. عمليات Realtime Database التي لا تستخدم أي مصادقة تتضمّن كائن
AuthenticationInfo
يحتوي على قيمةprincipalEmail
تساويaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. وقد يمنح مثيل Realtime Database الذي يتضمّن قواعد أمان مفتوحة مثل هذه الطلبات. ننصح جميع المستخدمين بتأمين قواعد البيانات بشكلٍ صحيح.رموز مميّزة للأسرار القديمة: تحتوي عمليات Realtime Database التي تستخدم الرموز المميزة القديمة على عنصر
AuthenticationInfo
يتضمّن العنصر النائبprincipalEmail
الذي يحمل القيمةaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. بالنسبة إلى رموز JWT الموقّعة باستخدام أسرار، يحتويthirdPartyPrincipal
على عناوين JWT والحمولة.
تقييمات التدقيق في Firebase Security Rules
يمكن استخدام سجلّات Cloud Audit لتحديد الطلبات التي قد تتأثّر بالتغييرات في Rules.
في عنصر AuthorizationInfo، يمكن أن تكون قيمة authorization.permission
إحدى القيم التالية:
-
firebasedatabase.data.get
: تم منح إذن الوصول للقراءة في المسار المحدّد فيresource
. -
firebasedatabase.data.update
: تم منح إذن الوصول للكتابة في المسار المحدّد فيresource
. firebasedatabase.data.connect
: عنصر نائب لـ "Connect
" و"Disconnect
". لا يلزم الحصول على إذن للاتصال بمثيل Realtime Database.firebasedatabase.data.cancel
: يُستخدَم فيUnlisten
وOnDisconnectCancel
. لا يتطلّب إبطال أو إلغاء عملية سبق أن تمّت الموافقة عليها أي موافقة إضافية.
ربط سجلّات تدقيق Cloud بنتائج أداة تحليل الأداء Realtime Database
يمكنك إجراء تحليل مفصّل للأداء على Realtime Database باستخدام أداة تحليل الأداء في Realtime Database مع تسجيل عمليات التدقيق في Realtime Database. لكل أداة نقاط قوتها.
Cloud Audit Logging | Realtime Database profiler |
---|---|
|
|
تتطابق محتويات سجلّ التدقيق مع مقاييس أداة تحليل الأداء كما هو موضّح أدناه.
اسم عملية تسجيل أحداث التدقيق | القيم الخاصة فيRealtimeDatabaseAuditMetadata |
اسم عملية Profiler |
---|---|---|
ربط | RequestType هو REALTIME |
concurrent-connect |
إلغاء الربط | RequestType هو REALTIME |
concurrent-disconnect |
قراءة | RequestType هو REALTIME |
realtime-read |
قراءة | RequestType هو REST |
rest-read |
كتابة | RequestType هو REALTIME |
realtime-write |
كتابة | RequestType هو REST |
rest-write |
تعديل | "RequestType " REALTIME .
انقر على PreconditionType . |
realtime-update realtime-transaction |
تعديل | "RequestType " REST .
انقر على 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 |