تسجيل تدقيق قاعدة بيانات Firebase في الوقت الفعلي

يصف هذا المستند تسجيل التدقيق لقاعدة بيانات Firebase في الوقت الفعلي. Google Cloud خدمة إنشاء سجلات تدقيق لتسجيل الأنشطة الإدارية وأنشطة الوصول ضمن موارد Google Cloud لمزيد من المعلومات عن سجلات تدقيق السحابة الإلكترونية، يُرجى الاطِّلاع على ما يلي:

ملاحظات

يمكنك الاطّلاع على معلومات إضافية عن الحقول في "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 سجلات تدقيق الوصول إلى البيانات الطرق التي تتطلّب إذن "إدارة الهوية وإمكانية الوصول" مع قيمة السمة 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 وإدارة الوصول في Firebase Realtime Database.

google.firebase.database.v1.RealtimeDatabase

ترتبط سجلات التدقيق التالية بالطرق التي تنتمي إلى google.firebase.database.v1.RealtimeDatabase.

Connect

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.Connect
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.connect - DATA_READ
  • الطريقة هي عملية بث أو عملية تستغرق وقتًا طويلاً: لا.
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"

Disconnect

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.Disconnect
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.connect - DATA_READ
  • الطريقة هي عملية بث أو عملية تستغرق وقتًا طويلاً: لا.
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"

Listen

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.Listen
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.get - DATA_READ
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة للحصول على هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"

OnDisconnectCancel

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.cancel - DATA_READ
  • الطريقة هي عملية بث أو عملية تستغرق وقتًا طويلاً: لا.
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"

OnDisconnectPut

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.update - DATA_WRITE
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"

OnDisconnectUpdate

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.update - DATA_WRITE
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة للحصول على هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"

Read

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.Read
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.get - DATA_READ
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"

RunOnDisconnect

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.update - DATA_WRITE
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة للحصول على هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"

Unlisten

  • الطريقة: google.firebase.database.v1.RealtimeDatabase.Unlisten
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.data.cancel - DATA_READ
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"

Update

  • الطريقة: 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

  • الطريقة: 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

  • الطريقة: google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
  • نوع سجلّ التدقيق: نشاط المشرف
  • الأذونات:
    • firebasedatabase.instances.create - ADMIN_WRITE
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"

DeleteDatabaseInstance

  • الطريقة: google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
  • نوع سجلّ التدقيق: نشاط المشرف
  • الأذونات:
    • firebasedatabase.instances.delete - ADMIN_WRITE
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة للحصول على هذه الطريقة: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"

DisableDatabaseInstance

  • الطريقة: google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
  • نوع سجلّ التدقيق: نشاط المشرف
  • الأذونات:
    • firebasedatabase.instances.disable - ADMIN_WRITE
  • الطريقة هي عملية بث أو عملية تستغرق وقتًا طويلاً: لا.
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"

GetDatabaseInstance

  • الطريقة: google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.instances.get - ADMIN_READ
  • الطريقة هي عملية بث أو عملية تستغرق وقتًا طويلاً: لا.
  • الفلترة للحصول على هذه الطريقة: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"

ListDatabaseInstances

  • الطريقة: google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
  • نوع سجلّ التدقيق: الوصول إلى البيانات
  • الأذونات:
    • firebasedatabase.instances.list - ADMIN_READ
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"

ReenableDatabaseInstance

  • الطريقة: google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
  • نوع سجلّ التدقيق: نشاط المشرف
  • الأذونات:
    • firebasedatabase.instances.reenable - ADMIN_WRITE
  • الطريقة هي عملية بث أو عملية تستغرق وقتًا طويلاً: لا.
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"

UndeleteDatabaseInstance

  • الطريقة: google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
  • نوع سجلّ التدقيق: نشاط المشرف
  • الأذونات:
    • firebasedatabase.instances.undelete - ADMIN_WRITE
  • الطريقة هي عملية طويلة الأمد أو عملية بث: رقم
  • الفلترة حسب هذه الطريقة: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"

تدقيق معلومات المصادقة

تتضمن إدخالات سجلّ التدقيق معلومات عن الهوية التي نفّذت العملية المسجّلة. لتحديد طلب المتصل، يُرجى الاطلاع على الحقول التالية ضمن كائن مدققLog:

  • إنشاء اتصالات في الوقت الفعلي: يتم تنفيذ Realtime Database من العمليات Connect لا يسجل بيانات المصادقة منذ إجراء Realtime Database للمصادقة بعد يتم إنشاء اتصال. لذلك، لا يتضمّن Connect أي معلومات مصادقة. يحتوي الكائن AuthenticationInfo على العنصر النائب principalEmail audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com

  • Google Authentication: عمليات 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 لهذا الطلب.
  • بدون مصادقة. عمليات 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

يمكن استخدام سجلّات تدقيق السحابة الإلكترونية لتحديد الطلبات التي قد تتأثّر بتغييرات 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 محلّل
  • تدقيق الوصول إلى قواعد البيانات
  • تسجيل جميع الطلبات باستمرار
  • السماح بالاستعلام عن جلسة المراجعة
  • يحتوي على معلومات تفصيلية عن رمز المصادقة
  • تُحصّل تكلفة استخدام
  • تُستخدَم لتحليل الأداء
  • توفير أدوات مفيدة لتحديد نقاط الاتصال وبالتالي تحسين الأداء
  • يمكنه قياس الاستماع-البث، وهي غير متوفرة في سجلات التدقيق بسبب حجم البيانات المُحتمَل
  • وهو خفيف وفي الوقت الفعلي، ما يجعله مناسبًا لاختبار التحميل المباشر. قد يستغرق ظهور إدخالات سجلّ التدقيق بضع دقائق.

تتطابق محتويات سجلّ التدقيق مع مقاييس أداة تحليل الأداء كما هو موضّح أدناه.

اسم عملية تسجيل التدقيق القيم الخاصة في
RealtimeDatabaseAuditMetadata
اسم عملية أداة تحليل الأداء
اتصال RequestType هو REALTIME الاتصال المتزامن
قطع الاتصال RequestType هو REALTIME انقطاع الاتصال المتزامن
قراءة RequestType هو REALTIME realtime-read
قراءة RequestType هو REST rest-read
كتابة RequestType هو REALTIME realtime-write
كتابة RequestType هو REST كتابة الاستراحة
تعديل RequestType هي REALTIME.
انقر على PreconditionType.
realtime-update
realtime-transaction
تعديل تم REST ميزة RequestType.
تحقق من PreconditionType.
rest-update
rest-transaction
ListenerListen RequestType هو REALTIME listener-listen
ListenerUnlisten RequestType هو REALTIME عدم الاستماع إلى المستمعين
موقع OnConnectedPut RequestType هو REALTIME عند قطع الاتصال
عند إلغاء الربط بالتحديث RequestType هو REALTIME on-disconnect-update
OnDisconnectCancel RequestType هو REALTIME on-disconnect-cancel
تشغيل عند إلغاء الربط RequestType هو REALTIME تشغيل عند قطع الاتصال