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

تصف هذه الصفحة سجلات التدقيق التي تم إنشاؤها بواسطة Firebase كجزء من Cloud Audit Logs .

ملخص

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

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

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

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

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

  • سجلات تدقيق نشاط المسؤول

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

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

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

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

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

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

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

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

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

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

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

  • إقامة اتصالات في الوقت الفعلي. لا تسجل عمليات Realtime Database Connect بيانات المصادقة منذ أن تصادق Realtime Database بعد إنشاء الاتصال. لذلك ، 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 Database مع قواعد أمان مفتوحة مثل هذه الطلبات . نوصي جميع المستخدمين بتأمين قواعد البيانات الخاصة بهم بشكل صحيح.

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

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

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

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

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

ربط سجلات Cloud Audit بنتائج ملف تعريف Realtime Database

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

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

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

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

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

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

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

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

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

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

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

اسم السجل

تشير أسماء موارد Cloud Audit Logs إلى مشروع 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 Database نوع المورد audited_resource لجميع سجلات التدقيق.

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

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

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

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

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

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

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

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

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

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

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

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

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

عرض السجلات

للعثور على سجلات التدقيق وعرضها ، تحتاج إلى معرفة معرف مشروع Firebase أو المجلد أو المؤسسة التي تريد عرض معلومات تسجيل التدقيق الخاصة بها. يمكنك أيضًا تحديد حقول LogEntry المفهرسة resource.type ، مثل 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 أو واجهة برمجة تطبيقات التسجيل.

وحدة التحكم

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

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

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

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

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

    • في نوع المورد ، حدد مورد Google Cloud الذي تريد الاطلاع على سجلات تدقيقه.

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

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

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

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

gcloud

توفر أداة سطر أوامر gcloud واجهة سطر أوامر إلى Cloud Logging API. PROJECT_ID 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 ، راجع قراءة إدخالات السجل .

API

عند إنشاء استعلاماتك ، استبدل المتغيرات بقيم صالحة ، واستبدل اسم أو معرفات سجل التدقيق المناسب على مستوى المشروع أو على مستوى المجلد أو على مستوى المؤسسة كما هو مدرج في أسماء سجل التدقيق. على سبيل المثال ، إذا كان استعلامك يتضمن 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 .