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

توضح هذه الصفحة سجلات التدقيق التي أنشأها Firebase كجزء من سجلات التدقيق السحابي .

ملخص

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

يحتوي كل مشروع من مشروعات Firebase الخاصة بك على سجلات التدقيق الخاصة بالموارد الموجودة مباشرة داخل المشروع فقط.

للحصول على نظرة عامة على سجلات تدقيق السحابة، راجع نظرة عامة على سجلات تدقيق السحابة . للحصول على فهم أعمق لتنسيق سجل التدقيق، راجع فهم سجلات التدقيق .

سجلات التدقيق المتاحة

تتوفر الأنواع التالية من سجلات التدقيق لقاعدة بيانات Firebase Realtime:

  • سجلات تدقيق نشاط المشرف

    يتضمن عمليات "كتابة المسؤول" التي تكتب بيانات التعريف أو معلومات التكوين.

    لا يمكنك تعطيل سجلات تدقيق نشاط المشرف.

  • سجلات تدقيق الوصول إلى البيانات

    يتضمن عمليات "قراءة المشرف" التي تقرأ بيانات التعريف أو معلومات التكوين. يتضمن أيضًا عمليات "قراءة البيانات" و"كتابة البيانات" التي تقرأ أو تكتب البيانات المقدمة من المستخدم.

    لتلقي سجلات تدقيق الوصول إلى البيانات، يجب تمكينها بشكل صريح.

للحصول على أوصاف أكمل لأنواع سجل التدقيق، راجع أنواع سجلات التدقيق .

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

يلخص ما يلي عمليات واجهة برمجة التطبيقات (API) التي تتوافق مع كل نوع من أنواع سجل التدقيق في قاعدة بيانات Firebase Realtime:

فئة سجلات التدقيق عمليات قاعدة بيانات Firebase Realtime
سجلات تدقيق نشاط المشرف (ADMIN_WRITE)
  • CreateDatabaseInstance
  • DeleteDatabaseInstance
  • DisableDatabaseInstance
  • ReenableDatabaseInstance
سجلات تدقيق الوصول إلى البيانات (ADMIN_READ)
  • GetDatabaseInstance
  • ListDatabaseInstances
سجلات تدقيق الوصول إلى البيانات (DATA_READ أو DATA_WRITE)
سجلات تدقيق الوصول إلى البيانات (DATA_READ)
  • يقرأ. راجع QueryMetadata المرتبطة.
  • يستمع. راجع QueryMetadata المرتبطة.
  • إلغاء الاستماع
سجلات تدقيق الوصول إلى البيانات (DATA_WRITE)
  • يكتب
  • تحديث. راجع WriteMetadata المرتبطة.
  • OnDisconnectPut
  • عند قطع الاتصالتحديث. راجع WriteMetadata المرتبطة.
  • عند قطع الاتصال، إلغاء

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

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

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

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

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

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

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

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

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

في كائن AuthorizationInfo ، يمكن أن يكون authorization.permission واحدًا مما يلي:

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

ربط سجلات التدقيق السحابي بنتائج ملف تعريف قاعدة بيانات Realtime

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

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

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

اسم عملية تسجيل التدقيق القيم الخاصة في
RealtimeDatabaseAuditMetadata
اسم عملية ملف التعريف
يتصل RequestType هو REALTIME الاتصال المتزامن
قطع الاتصال RequestType هو REALTIME قطع الاتصال المتزامن
يقرأ RequestType هو REALTIME القراءة في الوقت الحقيقي
يقرأ RequestType هو REST بقية القراءة
يكتب RequestType هو REALTIME الكتابة في الوقت الحقيقي
يكتب RequestType هو REST بقية الكتابة
تحديث RequestType هو REALTIME .
تحقق PreconditionType .
التحديث في الوقت الحقيقي
المعاملات في الوقت الحقيقي
تحديث RequestType هو REST .
تحقق PreconditionType .
تحديث بقية
معاملة الراحة
المستمع RequestType هو REALTIME المستمع الاستماع
المستمعUnlisten RequestType هو REALTIME مستمع غير مستمع
OnDisconnectPut RequestType هو REALTIME على قطع الاتصال
عند قطع الاتصالتحديث RequestType هو REALTIME عند قطع الاتصال التحديث
عند قطع الاتصال، إلغاء RequestType هو REALTIME عند قطع الاتصال - الإلغاء
RunOnDisconnect RequestType هو REALTIME التشغيل عند قطع الاتصال

تنسيق سجل التدقيق

تتضمن إدخالات سجل التدقيق العناصر التالية:

  • إدخال السجل نفسه، وهو كائن من النوع LogEntry . تتضمن الحقول المفيدة ما يلي:

    • يحتوي logName على معرف المورد ونوع سجل التدقيق.
    • يحتوي resource على هدف العملية التي تم تدقيقها.
    • يحتوي timestamp على وقت العملية التي تم تدقيقها.
    • يحتوي protoPayload على المعلومات المدققة.
  • بيانات تسجيل التدقيق، وهي كائن AuditLog الموجود في حقل protoPayload الخاص بإدخال السجل.

  • معلومات التدقيق الاختيارية الخاصة بالخدمة، وهي كائن خاص بالخدمة. بالنسبة لعمليات التكامل الأقدم، يتم الاحتفاظ بهذا الكائن في حقل serviceData لكائن AuditLog ؛ تستخدم عمليات التكامل الأحدث حقل metadata .

بالنسبة للحقول الأخرى في هذه الكائنات وكيفية تفسيرها، قم بمراجعة فهم سجلات التدقيق .

تتوفر معلومات إضافية حول الحقول الموجودة في protoPayload.metadata لعمليات DATA_READ و DATA_WRITE في الوثائق المرجعية .

اسم السجل

تشير أسماء موارد سجلات تدقيق السحابة إلى مشروع Firebase أو كيان Google Cloud الآخر الذي يمتلك سجلات التدقيق، وما إذا كان السجل يحتوي على بيانات تسجيل تدقيق نشاط المشرف أو الوصول إلى البيانات أو رفض السياسة أو حدث النظام. على سبيل المثال، يعرض ما يلي أسماء السجلات لسجلات تدقيق نشاط المسؤول على مستوى المشروع وسجلات تدقيق الوصول إلى البيانات الخاصة بالمؤسسة. تشير المتغيرات إلى معرفات مشروع Firebase والمؤسسة.

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

اسم الخدمة

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

للحصول على قائمة كاملة بجميع أسماء خدمات Cloud Logging API ونوع الموارد المراقبة المقابلة لها، راجع تعيين الخدمات إلى الموارد .

أنواع الموارد

تستخدم سجلات تدقيق قاعدة بيانات Firebase Realtime نوع المورد audited_resource لجميع سجلات التدقيق.

للحصول على قائمة بجميع أنواع الموارد الخاضعة للمراقبة في Cloud Logging والمعلومات الوصفية، راجع أنواع الموارد الخاضعة للمراقبة .

تمكين تسجيل التدقيق

يتم تمكين سجلات تدقيق نشاط المسؤول دائمًا؛ لا يمكنك تعطيلها.

يتم تعطيل سجلات تدقيق الوصول إلى البيانات بشكل افتراضي ولا تتم كتابتها ما لم يتم تمكينها بشكل صريح (الاستثناء هو سجلات تدقيق الوصول إلى البيانات لـ BigQuery، والتي لا يمكن تعطيلها).

يتم تبديل سجلات تدقيق الوصول إلى البيانات لقاعدة بيانات الوقت الفعلي عن طريق تحديد DATA_READ و/أو DATA_WRITE في وحدة تحكم GCP. هناك تأخير يصل إلى ساعة واحدة بين وقت تمكين/تعطيل السجلات في وحدة تحكم Google Cloud Platform ووقت بدء/إيقاف تسليم السجلات.

للحصول على إرشادات حول تمكين بعض أو كل سجلات تدقيق الوصول إلى البيانات، راجع تكوين سجلات الوصول إلى البيانات .

الأذونات والأدوار

تحدد أذونات وأدوار Cloud IAM قدرتك على الوصول إلى بيانات سجلات التدقيق في موارد Google Cloud.

عند تحديد الأذونات والأدوار الخاصة بالتسجيل التي تنطبق على حالة الاستخدام الخاصة بك، ضع في اعتبارك ما يلي:

  • يمنحك دور عارض السجلات ( roles/logging.viewer ) حق الوصول للقراءة فقط إلى سجلات تدقيق نشاط المسؤول ورفض السياسة وسجلات أحداث النظام. إذا كان لديك هذا الدور فقط، فلن تتمكن من عرض سجلات تدقيق الوصول إلى البيانات الموجودة في المجموعة _Default .

  • يتضمن دور عارض السجلات الخاصة (roles/logging.privateLogViewer ) الأذونات الموجودة في roles/logging.viewer ، بالإضافة إلى القدرة على قراءة سجلات تدقيق الوصول إلى البيانات في المجموعة _Default .

    لاحظ أنه إذا تم تخزين هذه السجلات الخاصة في مجموعات محددة من قبل المستخدم، فيمكن لأي مستخدم لديه أذونات لقراءة السجلات في تلك المجموعات قراءة السجلات الخاصة. لمزيد من المعلومات حول مجموعات السجل، راجع نظرة عامة على التوجيه والتخزين .

لمزيد من المعلومات حول أذونات Cloud IAM والأدوار التي تنطبق على بيانات سجلات التدقيق، راجع التحكم في الوصول .

عرض السجلات

للعثور على سجلات التدقيق وعرضها، يلزمك معرفة معرف مشروع أو مجلد أو مؤسسة Firebase التي تريد عرض معلومات تسجيل التدقيق لها. يمكنك كذلك تحديد حقول LogEntry مفهرسة أخرى، مثل resource.type ؛ للحصول على التفاصيل، قم بمراجعة البحث عن إدخالات السجل بسرعة .

فيما يلي أسماء سجل التدقيق؛ وهي تتضمن متغيرات لمعرفات مشروع أو مجلد أو مؤسسة Firebase:

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

يمكنك عرض سجلات التدقيق في Cloud Logging باستخدام وحدة تحكم GCP، أو أداة سطر أوامر gcloud ، أو Logging API.

وحدة التحكم

يمكنك استخدام مستكشف السجلات في وحدة تحكم GCP لاسترداد إدخالات سجل التدقيق لمشروعك أو مجلدك أو مؤسستك في Firebase:

  1. في وحدة تحكم GCP، انتقل إلى صفحة التسجيل > مستكشف السجلات .

    انتقل إلى صفحة مستكشف السجلات

  2. في صفحة Logs Explorer ، حدد مشروعًا أو مجلدًا أو مؤسسة موجودة في Firebase.

  3. في جزء منشئ الاستعلام ، قم بما يلي:

    • في نوع المورد ، حدد مورد Google Cloud الذي تريد رؤية سجلات التدقيق الخاصة به.

    • في اسم السجل ، حدد نوع سجل التدقيق الذي تريد رؤيته:

      • بالنسبة لسجلات تدقيق نشاط المسؤول، حدد النشاط .
      • بالنسبة لسجلات تدقيق الوصول إلى البيانات، حدد data_access .
      • بالنسبة لسجلات تدقيق أحداث النظام، حدد system_event .
      • بالنسبة لسجلات التدقيق المرفوضة للسياسة، حدد السياسة .

    إذا لم تظهر لك هذه الخيارات، فهذا يعني عدم توفر أي سجلات تدقيق من هذا النوع في مشروع أو مجلد أو مؤسسة Firebase.

    لمزيد من التفاصيل حول الاستعلام باستخدام Logs Explorer، راجع إنشاء استعلامات السجل .

com.gcloud

توفر أداة سطر الأوامر gcloud واجهة سطر أوامر لواجهة برمجة تطبيقات Cloud Logging. أدخل PROJECT_ID أو FOLDER_ID أو ORGANIZATION_ID صالحًا في كل اسم من أسماء السجل.

لقراءة إدخالات سجل التدقيق على مستوى مشروع Firebase، قم بتشغيل الأمر التالي:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID

لقراءة إدخالات سجل التدقيق على مستوى المجلد، قم بتشغيل الأمر التالي:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID

لقراءة إدخالات سجل التدقيق على مستوى المؤسسة، قم بتشغيل الأمر التالي:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID

لمزيد من المعلومات حول استخدام أداة gcloud ، راجع قراءة إدخالات السجل .

واجهة برمجة التطبيقات

عند إنشاء استعلاماتك، استبدل المتغيرات بقيم صالحة، واستبدل اسم أو معرفات سجل التدقيق المناسب على مستوى المشروع أو المجلد أو مستوى المؤسسة كما هو مدرج في أسماء سجل التدقيق. على سبيل المثال، إذا كان استعلامك يتضمن PROJECT_ID ، فيجب أن يشير معرف المشروع الذي تقدمه إلى مشروع Firebase المحدد حاليًا.

لاستخدام Logging API للاطلاع على إدخالات سجل التدقيق، قم بما يلي:

  1. انتقل إلى قسم تجربة واجهة برمجة التطبيقات هذه في الوثائق الخاصة بطريقة entries.list .

  2. ضع ما يلي في الجزء الأساسي للطلب من نموذج تجربة واجهة برمجة التطبيقات هذه . يؤدي النقر فوق هذا النموذج الذي تمت تعبئته مسبقًا إلى ملء نص الطلب تلقائيًا، ولكن يتعين عليك توفير PROJECT_ID صالح في كل اسم من أسماء السجل.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. انقر فوق تنفيذ .

لمزيد من التفاصيل حول الاستعلام، راجع تسجيل لغة الاستعلام .

للحصول على مثال لإدخال سجل التدقيق وكيفية العثور على أهم المعلومات فيه، راجع نموذج إدخال سجل التدقيق .

سجلات تدقيق المسار

يمكنك توجيه سجلات التدقيق إلى الوجهات المدعومة بنفس الطريقة التي يمكنك بها توجيه أنواع أخرى من السجلات. فيما يلي بعض الأسباب التي قد تدفعك إلى توجيه سجلات التدقيق الخاصة بك:

  • للاحتفاظ بسجلات التدقيق لفترة زمنية أطول أو لاستخدام إمكانات بحث أكثر قوة، يمكنك توجيه نسخ من سجلات التدقيق إلى Google Cloud Storage، أو BigQuery، أو Google Cloud Pub/Sub. باستخدام Cloud Pub/Sub، يمكنك التوجيه إلى تطبيقات أخرى ومستودعات أخرى وإلى جهات خارجية.

  • لإدارة سجلات التدقيق الخاصة بك عبر مؤسسة بأكملها، يمكنك إنشاء أحواض مجمعة يمكنها توجيه السجلات من أي من مشاريع Firebase أو جميعها في المؤسسة.

  • إذا كانت سجلات تدقيق الوصول إلى البيانات الممكّنة تدفع مشاريع Firebase الخاصة بك إلى تخصيصات السجل الخاصة بك، فيمكنك إنشاء أحواض تستبعد سجلات تدقيق الوصول إلى البيانات من التسجيل.

للحصول على إرشادات حول سجلات التوجيه، راجع تكوين المصارف .

التسعير

سجلات تدقيق نشاط المسؤول وسجلات تدقيق أحداث النظام مجانية.

يتم فرض رسوم على سجلات تدقيق الوصول إلى البيانات وسجلات تدقيق رفض السياسة .

لمزيد من المعلومات حول تسعير Cloud Logging، راجع تسعير مجموعة عمليات Google Cloud: Cloud Logging .