במסמך הזה מתוארים יומני הביקורת של מסד הנתונים בזמן אמת ב-Firebase. שירותי Google Cloud יוצרים יומני ביקורת שמתעדים פעילויות ניהוליות ופעילויות גישה במשאבי Google Cloud. למידע נוסף על יומני הביקורת של Cloud, אפשר לעיין במאמרים הבאים:
- סוגים של יומני ביקורת
- מבנה הרשומה ביומן הביקורת
- אחסון וניתוב של יומני ביקורת
- סיכום התמחור של Cloud Logging
- הפעלה של יומני הביקורת Data Access
הערות
מידע נוסף על השדות ב-protoPayload.metadata
עבור פעולות DATA_READ
ו-DATA_WRITE
זמין במאמרי העזרה.
שם השירות
יומני הביקורת של Firebase GT Database משתמשים בשם השירות firebasedatabase.googleapis.com
.
סינון לפי השירות הזה:
protoPayload.serviceName="firebasedatabase.googleapis.com"
שיטות לפי סוג ההרשאה
לכל הרשאת IAM יש מאפיין type
שהערך שלו הוא טיפוסים בני מנייה (enum)
יכול להיות אחד מתוך ארבעה ערכים: ADMIN_READ
, ADMIN_WRITE
,
DATA_READ
או DATA_WRITE
. כשאתם קוראים ל-method, מערכת Firebase Realtime Database יוצרת יומן ביקורת שהקטגוריה שלו תלויה במאפיין type
של ההרשאה שנדרשת לביצוע ה-method.
שיטות שדורשות הרשאת IAM עם ערך הנכס type
של DATA_READ
, DATA_WRITE
או ADMIN_READ
יוצרות יומני ביקורת של Data Access.
שיטות שנדרשת להן הרשאת 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
למידע על האופן וההרשאות שנבדקים בכל method, אפשר לעיין במסמכי העזרה של Cloud Identity and Access Management על מסד הנתונים בזמן אמת ב-Firebase.
google.firebase.database.v1.RealtimeDatabase
יומני הביקורת הבאים משויכים ל-methods ששייכות ל-
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
- Method:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
- סוג יומן הביקורת: גישה לנתונים
- הרשאות:
firebasedatabase.data.cancel - DATA_READ
- השיטה היא פעולה ממושכת או סטרימינג:
מס'
- סינון לפי השיטה הזו:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"
OnDisconnectPut
- Method:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
- סוג יומן הביקורת: גישה לנתונים
- הרשאות:
firebasedatabase.data.update - DATA_WRITE
- השיטה היא פעולה ממושכת או פעולת סטרימינג:
לא.
- סינון לפי השיטה הזו:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"
OnDisconnectUpdate
- Method:
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
- Method:
google.firebase.database.v1.RealtimeDatabase.Unlisten
- סוג יומן הביקורת: גישה לנתונים
- הרשאות:
firebasedatabase.data.cancel - DATA_READ
- השיטה היא פעולה ממושכת או פעולת סטרימינג:
לא.
- סינון לפי השיטה הזו:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"
Update
- Method:
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
- Method:
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
- Method:
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
- Method:
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
- Method:
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
- Method:
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
מכיל placeholderprincipalEmail
שלaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
אימות של Google. 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 (JWT) לאימות של צד שלישי,
השדה
thirdPartyPrincipal
כולל את הכותרת והמטען הייעודי (Payload) של האסימון. לדוגמה, יומני הביקורת של בקשות שאומתו באמצעות Firebase Authentication כוללים את אסימון ה-Firebase Authentication של הבקשה.
- אם נעשה שימוש באסימון אינטרנט מסוג JSON (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
מכיל את כותרות ה-JWT ו מטען ייעודי (payload).
בדיקות הערכה של Firebase Security Rules
אפשר להשתמש ביומני הביקורת של Cloud כדי לזהות בקשות שעלולות הושפעו מ-Rules שינויים.
באובייקט AuthorizationInfo, הערך של authorization.permission
יכול להיות אחד מהערכים הבאים:
firebasedatabase.data.get
: ניתנה גישת קריאה בנתיב שצויןresource
.firebasedatabase.data.update
: הרשאת כתיבה ניתנה בנתיב שצוין ב-resource
.firebasedatabase.data.connect
: placeholder ל-Connect
ול-Disconnect
. לא נדרשת הרשאה כדי להתחבר למכונה של Realtime Database.firebasedatabase.data.cancel
: נעשה שימוש ב-Unlisten
וב-OnDisconnectCancel
. כדי לבטל או לבטל אישור של פעולה שאושרה בעבר, לא נדרשת הרשאה נוספת.
התאמה בין יומני ביקורת של Cloud לתוצאות בכלי לניתוח ביצועי Realtime Database
אפשר לבצע ניתוח ביצועים מעמיק ב-Realtime Database באמצעות כלי לניתוח ביצועים של Realtime Database בשילוב עם רישום ביומן ביקורת של Realtime Database. לכל כלי יש יתרונות משלו.
Cloud Audit Logging | Realtime Database profiler |
---|---|
|
|
התוכן של יומן הביקורת תואם למדדים של הכלי לניתוח נתונים, כפי שמוצג בהמשך.
שם הפעולה של רישום ביומן הביקורת | ערכים מיוחדים ב-RealtimeDatabaseAuditMetadata |
שם הפעולה של הכלי לניתוח ביצועים |
---|---|---|
חיבור | RequestType הוא REALTIME |
חיבור בו-זמני |
ניתוק | RequestType הוא REALTIME |
ניתוק בו-זמנית |
קריאה | RequestType הוא REALTIME |
קריאה בזמן אמת |
קריאה | RequestType הוא REST |
קריאה למנוחה |
כתיבה | RequestType הוא REALTIME |
כתיבה בזמן אמת |
כתיבה | RequestType הוא REST |
כתיבה למנוחה |
עדכון | RequestType היא REALTIME .
מסמנים את התיבה PreconditionType . |
עדכון בזמן אמת עסקה בזמן אמת |
עדכון | RequestType היא REST .
מסמנים את התיבה PreconditionType . |
rest-update rest-transaction |
האזנה | RequestType הוא REALTIME |
listener-listen |
ListenerUnlisten | RequestType הוא REALTIME |
Listener-unlisten |
OnDisconnectPut | RequestType הוא REALTIME |
on-disconnect-put |
OnDisconnectUpdate | RequestType הוא REALTIME |
עדכון בניתוק |
ביטול הניתוק | RequestType הוא REALTIME |
ביטול חיבור |
RunOnConnect | RequestType הוא REALTIME |
run-on-disconnect |