ثبت حسابرسی پایگاه داده بیدرنگ Firebase

این سند گزارش حسابرسی برای پایگاه داده بیدرنگ Firebase را شرح می دهد. سرویس‌های Google Cloud گزارش‌های حسابرسی ایجاد می‌کنند که فعالیت‌های مدیریتی و دسترسی به منابع Google Cloud شما را ثبت می‌کنند. برای اطلاعات بیشتر در مورد گزارش حسابرسی ابری، به موارد زیر مراجعه کنید:

یادداشت ها

اطلاعات اضافی درباره فیلدهای protoPayload.metadata برای عملیات DATA_READ و DATA_WRITE در مستندات مرجع موجود است.

نام سرویس

گزارش های حسابرسی پایگاه داده بیدرنگ Firebase از نام سرویس firebasedatabase.googleapis.com استفاده می کند. فیلتر برای این سرویس:

    protoPayload.serviceName="firebasedatabase.googleapis.com"
  

روش ها بر اساس نوع مجوز

هر مجوز IAM دارای یک ویژگی type است که مقدار آن یک enum است که می تواند یکی از چهار مقدار باشد: 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.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

گزارش های حسابرسی رابط API

برای اطلاعات در مورد نحوه و مجوزهایی که برای هر روش ارزیابی می شوند، به مستندات Cloud Identity and Access Management برای پایگاه داده بیدرنگ 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_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"

اطلاعات احراز هویت حسابرسی

ورودی های گزارش حسابرسی شامل اطلاعاتی درباره هویتی است که عملیات ثبت شده را انجام داده است. برای شناسایی تماس گیرنده درخواست، فیلدهای زیر را در شی AuditLog ببینید:

  • ایجاد ارتباطات بیدرنگ عملیات Realtime Database Connect داده های احراز هویت را ثبت نمی کند زیرا Realtime Database پس از برقراری اتصال احراز هویت می شود. بنابراین، Connect هیچ اطلاعاتی برای احراز هویت ندارد. شیء AuthenticationInfo حاوی یک principalEmail مکان‌نمای audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com است.

  • احراز هویت گوگل عملیات 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 Web Token (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 استفاده می شود. لغو یا لغو عملیاتی که قبلاً مجاز شده است نیازی به مجوز اضافی ندارد.

گزارش‌های حسابرسی ابری را با نتایج نمایه‌گر Realtime Database مرتبط کنید

شما می توانید تجزیه و تحلیل عملکرد عمیق را در Realtime Database با استفاده از نمایه ساز Realtime Database در ترکیب با گزارش حسابرسی Realtime Database انجام دهید. هر ابزاری نقاط قوت خود را دارد.

گزارش حسابرسی ابری نمایه ساز Realtime Database
  • ممیزی دسترسی به پایگاه های داده
  • به طور مداوم همه درخواست ها را ضبط می کند
  • امکان پرس و جوی گذشته نگر را فراهم می کند
  • حاوی اطلاعات دقیق رمز تأیید است
  • هزینه استفاده را متحمل می شود
  • برای تجزیه و تحلیل عملکرد استفاده می شود
  • ابزار مفیدی را برای شناسایی هات اسپات و در نتیجه بهینه سازی عملکرد ارائه می دهد
  • می تواند پخش شنونده را اندازه گیری کند، که به دلیل حجم داده بالقوه در گزارش های حسابرسی موجود نیست
  • سبک و بیدرنگ، که آن را برای آزمایش بار زنده خوب می کند. ممکن است چند دقیقه طول بکشد تا ورودی‌های گزارش حسابرسی ظاهر شوند.

محتویات گزارش حسابرسی مطابق با معیارهای نمایه ساز مطابق شکل زیر است.

نام عملیات ثبت حسابرسی مقادیر ویژه در
RealtimeDatabaseAuditMetadata
نام عملیات نمایه
اتصال RequestType REALTIME است همزمان اتصال
قطع کن RequestType REALTIME است همزمان قطع ارتباط
بخوانید RequestType REALTIME است خواندن بیدرنگ
بخوانید RequestType REST است استراحت بخوانید
بنویسید RequestType REALTIME است بلادرنگ بنویس
بنویسید RequestType REST است استراحت بنویس
به روز رسانی RequestType REALTIME است.
PreconditionType بررسی کنید.
به روز رسانی بیدرنگ
معاملات بیدرنگ
به روز رسانی RequestType REST است.
PreconditionType بررسی کنید.
به روز رسانی مجدد
معامله استراحت
شنونده گوش کن RequestType REALTIME است شنونده-گوش کن
LinerUnlisten RequestType REALTIME است شنونده - گوش ندادن
OnDisconnectPut RequestType REALTIME است روی قطع و وصل کردن
OnDisconnectUpdate RequestType REALTIME است به روز رسانی قطع ارتباط
OnDisconnectCancel RequestType REALTIME است در قطع-لغو
RunOnDisconnect RequestType REALTIME است در حال قطع شدن