این سند، ثبت گزارشهای حسابرسی برای پایگاه دادهی بلادرنگ Firebase را شرح میدهد. سرویسهای Google Cloud گزارشهای حسابرسی ایجاد میکنند که فعالیتهای مدیریتی و دسترسی را در منابع Google Cloud شما ثبت میکنند. برای اطلاعات بیشتر در مورد گزارشهای حسابرسی 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 Realtime Database یک گزارش حسابرسی تولید میکند که دسته آن به ویژگی type مجوز مورد نیاز برای اجرای متد بستگی دارد. متدهایی که به مجوز IAM با مقدار ویژگی type DATA_READ ، DATA_WRITE یا ADMIN_READ نیاز دارند، گزارشهای حسابرسی دسترسی به داده تولید میکنند. متدهایی که به مجوز IAM با مقدار ویژگی type ADMIN_WRITE نیاز دارند، گزارشهای حسابرسی فعالیت ادمین تولید میکنند.
| نوع مجوز | روشها |
|---|---|
ADMIN_READ | google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances |
ADMIN_WRITE | google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance |
DATA_READ | google.firebase.database.v1.RealtimeDatabase.Connectgoogle.firebase.database.v1.RealtimeDatabase.Disconnectgoogle.firebase.database.v1.RealtimeDatabase.Listengoogle.firebase.database.v1.RealtimeDatabase.OnDisconnectCancelgoogle.firebase.database.v1.RealtimeDatabase.Readgoogle.firebase.database.v1.RealtimeDatabase.Unlisten |
DATA_WRITE | google.firebase.database.v1.RealtimeDatabase.OnDisconnectPutgoogle.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdategoogle.firebase.database.v1.RealtimeDatabase.RunOnDisconnectgoogle.firebase.database.v1.RealtimeDatabase.Updategoogle.firebase.database.v1.RealtimeDatabase.Write |
گزارشهای حسابرسی رابط API
برای اطلاعات در مورد چگونگی و نوع مجوزهای ارزیابی شده برای هر روش، به مستندات مدیریت هویت و دسترسی ابری برای پایگاه داده بلادرنگ 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 مراجعه کنید:
ایجاد اتصالات بلادرنگ. عملیات
ConnectRealtime Database دادههای احراز هویت را ثبت نمیکند، زیرا Realtime Database پس از برقراری اتصال، احراز هویت میشود. بنابراین،Connectهیچ اطلاعات احراز هویتی ندارد. شیءAuthenticationInfoحاوی یک placeholderprincipalEmailازaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comاست.احراز هویت گوگل. عملیات Realtime Database که از احراز هویت استاندارد گوگل استفاده میکنند، مانند ترافیک دریافتی از 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شامل سرآیند و payload توکن میشود. برای مثال، گزارشهای حسابرسی برای درخواستهایی که با Firebase Authentication احراز هویت شدهاند، شامل توکن Firebase Authentication آن درخواست هستند.
- اگر از یک JSON Web Token (JWT) برای احراز هویت شخص ثالث استفاده شده باشد، فیلد
بدون احراز هویت. عملیات Realtime Database که از هیچ احراز هویتی استفاده نمیکنند، دارای یک شیء
AuthenticationInfoهستند که حاوی مقدارprincipalEmailازaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comاست. یک نمونه Realtime Database با قوانین امنیتی باز ممکن است چنین درخواستهایی را بپذیرد. ما به همه کاربران توصیه میکنیم پایگاههای داده خود را به درستی ایمن کنند.توکنهای اسرار قدیمی. عملیات Realtime Database که از توکنهای قدیمی استفاده میکنند، دارای یک شیء
AuthenticationInfoهستند که حاوی یک placeholderprincipalEmailازaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comاست. برای JWT امضا شده با اسرار،thirdPartyPrincipalحاوی هدرها و payload مربوط به JWT است.
ارزیابیهای Firebase Security Rules را بررسی کنید
گزارشهای حسابرسی ابری میتوانند برای شناسایی درخواستهایی که بهطور بالقوه تحت تأثیر تغییرات Security 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 profiler در ترکیب با Realtime Database audit logging، تجزیه و تحلیل عمیقی از عملکرد 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 است | شنونده-گوش دادن |
| شنوندهگوش ندادن | RequestType REALTIME است | شنونده-گوش ندادن |
| روشن/خاموش | RequestType REALTIME است | روشن-قطع-قرار دادن |
| بهروزرسانی OnDisconnect | RequestType REALTIME است | هنگام قطع اتصال، بهروزرسانی |
| روشن/خاموش/لغو | RequestType REALTIME است | قطع-قطع-لغو |
| اجرایآندیسکنت | RequestType REALTIME است | قطع اتصال هنگام اجرا |