يوضّح هذا المستند عملية تسجيل التدقيق في قاعدة بيانات 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 للإذن المطلوب لتنفيذ الطريقة.
تؤدي الطرق التي تتطلّب إذنًا في "إدارة الهوية وإمكانية الوصول" (IAM) مع قيمة السمة type التي تساوي DATA_READ أو DATA_WRITE أو ADMIN_READ إلى إنشاء سجلّات تدقيق الوصول إلى البيانات.
تؤدي الطرق التي تتطلّب إذنًا في "إدارة الهوية وإمكانية الوصول" (IAM) مع قيمة السمة type التي تساوي ADMIN_WRITE إلى إنشاء سجلّات تدقيق نشاط المشرف.
| نوع الإذن | الإجراءات |
|---|---|
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 |
سجلات تدقيق واجهة برمجة التطبيقات
للحصول على معلومات حول كيفية تقييم الأذونات ونوعها لكل طريقة، يُرجى الاطّلاع على مستندات Cloud Identity and Access Management الخاصة بقاعدة بيانات Firebase Realtime Database.
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_WRITEfirebasedatabase.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يحتوي على البريد الإلكتروني الفعلي لبيانات الاعتماد.عمليات Realtime Database التي تستخدم Firebase Authentication تتضمّن كائن
AuthenticationInfoيحتوي على قيمةprincipalEmailتساويaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com.Firebase Authentication وينطبق الأمر نفسه إذا نفّذت حلّ المصادقة الخاص بك من خلال إنشاء رموز 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 لتحديد الطلبات التي قد تتأثّر بالتغييرات في Security Rules.
في العنصر AuthorizationInfo، يمكن أن تكون قيمة authorization.permission إحدى القيم التالية:
-
firebasedatabase.data.get: تم منح إذن الوصول للقراءة في المسار المحدّد فيresource. -
firebasedatabase.data.update: تم منح إذن الوصول للكتابة في المسار المحدّد فيresource. firebasedatabase.data.connect: عنصر نائب لـ "Connect" و"Disconnect". لا يلزم الحصول على إذن للاتصال بمثيل Realtime Database.firebasedatabase.data.cancel: يُستخدَم فيUnlistenوOnDisconnectCancel. لا يتطلّب إبطال أو إلغاء عملية سبق أن تمّت الموافقة عليها أي موافقة إضافية.
ربط سجلّات تدقيق السحابة الإلكترونية بنتائج أداة تحليل الأداء 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 |