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

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

ملاحظات

يمكنك الاطّلاع على معلومات إضافية عن الحقول في "protoPayload.metadata" للعمليات DATA_READ وDATA_WRITEالعمليات في المستندات المرجعية.

اسم الخدمة

تستخدم سجلات تدقيق قاعدة بيانات Firebase في الوقت الفعلي اسم الخدمة firebasedatabase.googleapis.com.

الطرق حسب نوع الإذن

الطرق التي تتحقق من DATA_READ وDATA_WRITE و تنشئ أذونات ADMIN_READ سجلات مصنّفة كـ سجلات تدقيق الوصول إلى البيانات. تنشئ طُرق التحقّق من أذونات "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 في الوقت الفعلي.

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_READ
    • 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.get - DATA_READ
    • firebasedatabase.data.get - DATA_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"

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

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

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

  • مصادقة Google: عمليات قاعدة البيانات في الوقت الفعلي التي تستخدم معايير Google المصادقة، مثل عدد الزيارات الواردة من حزمة SDK لمشرف Firebase أو طلبات REST مصادقتها باستخدام رمز OAuth مميز عادي، تحتوي على كائن AuthenticationInfo يحتوي على بيانات الاعتماد الفعلية البريد الإلكتروني.

  • مصادقة Firebase: تتمتع عمليات قاعدة البيانات في الوقت الفعلي التي تستخدم مصادقة Firebase عنصر AuthenticationInfo يحتوي على القيمة principalEmail audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com وينطبق الأمر نفسه إذا قمت بتنفيذ حل المصادقة الخاص بك عن طريق إنشاء ملفات JWT المخصصة.

    • في حال استخدام رمز JSON المميّز للويب (JWT) لمصادقة جهة خارجية، يتضمّن الحقل thirdPartyPrincipal عنوان الرمز المميّز وحمولةته. بالنسبة مثل، سجلات التدقيق للطلبات التي تمت مصادقتها باستخدام مصادقة Firebase. تضمين الرمز المميز لمصادقة Firebase لهذا الطلب.
  • بدون مصادقة. عمليات قاعدة البيانات في الوقت الفعلي التي لا تستخدم تتضمّن المصادقة عنصر AuthenticationInfo يحتوي على قيمة principalEmail لـ audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com ويمكن أن يمنح مثيل قاعدة البيانات في الوقت الفعلي الذي يتضمن قواعد أمان مفتوحة هذه الطلبات. أر أن توصي جميع المستخدمين بتأمين قواعد البيانات الخاصة بهم بشكل صحيح.

  • الرموز المميّزة القديمة للأسرار: عمليات قاعدة البيانات في الوقت الفعلي باستخدام الرموز المميّزة القديمة تحتوي على كائن AuthenticationInfo يحتوي على عنصر نائب principalEmail من audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com بالنسبة إلى JWT الموقَّعة من بين الأسرار، يحتوي thirdPartyPrincipal على عناوين JWT حمولة البيانات.

تدقيق تقييمات قواعد أمان Firebase

يمكن استخدام سجلات تدقيق السحابة الإلكترونية لتحديد الطلبات التي من المحتمل المتأثر بتغييرات القواعد.

في العنصر PermissionInfo، يمكن أن يكون authorization.permission واحدًا مما يلي:

  • firebasedatabase.data.get: تم منح الإذن بالقراءة في المسار المحدد في resource
  • firebasedatabase.data.update: تم منح الإذن بالتعديل في المسار المحدد في resource
  • firebasedatabase.data.connect: عنصر نائب لـ "Connect" و"Disconnect" لا يلزم الحصول على إذن للاتصال بمثيل قاعدة البيانات في الوقت الفعلي.
  • firebasedatabase.data.cancel: يُستخدَم في Unlisten وOnDisconnectCancel. لا يتطلب إلغاء أو إلغاء عملية مصرّح بها سابقًا التفويض.

ربط سجلّات تدقيق Cloud بنتائج أداة تحليل قاعدة البيانات في الوقت الفعلي

يمكنك إجراء تحليل متعمق للأداء في Realtime Database باستخدام محلل قاعدة البيانات في الوقت الفعلي إلى جانب تسجيل تدقيق قاعدة البيانات في الوقت الفعلي. لكل أداة نقاط قوتها.

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

يتوافق محتوى سجلّ التدقيق مع مقاييس محلّل كما هو موضّح أدناه.

اسم عملية تسجيل التدقيق قيم خاصة في
RealtimeDatabaseAuditMetadata
اسم عملية المحلّل
اتصال RequestType هو REALTIME الاتصال المتزامن
قطع الاتصال RequestType هو REALTIME انقطاع الاتصال المتزامن
قراءة RequestType هو REALTIME القراءة في الوقت الفعلي
قراءة RequestType هو REST قراءة البقية
كتابة RequestType هو REALTIME الكتابة في الوقت الفعلي
كتابة RequestType هو REST الاستراحة-الكتابة
تعديل تم REALTIME ميزة RequestType.
تحقق من PreconditionType.
تعديل في الوقت الفعلي
realtime-transaction
تعديل تم REST ميزة RequestType.
تحقق من PreconditionType.
rest-update
rest-transaction
المستمع RequestType هو REALTIME استمِع إلى أغانيك
الاستماع إلى المستمع RequestType هو REALTIME عدم الاستماع إلى المستمعين
موقع OnConnectedPut RequestType هو REALTIME عند قطع الاتصال
عند إلغاء الربط بالتحديث RequestType هو REALTIME تحديث عند انقطاع الاتصال
عند إلغاء الربط RequestType هو REALTIME إلغاء الربط عند إلغاء الاتصال
تشغيل عند إلغاء الربط RequestType هو REALTIME تشغيل عند قطع الاتصال