רישום ביקורת מסד נתונים של Firebase בזמן אמת

דף זה מתאר את יומני הביקורת שנוצרו על ידי Firebase כחלק מיומני הביקורת בענן .

סקירה כללית

שירותי Firebase כותבים יומני ביקורת כדי לעזור לך לענות על השאלות, "מי עשה מה, איפה ומתי?". אלו הם יומני ביקורת בענן, המסופקים כחלק מפרויקט Google Cloud המחובר לפרויקט Firebase שלך .

כל פרויקטי Firebase שלך ​​מכילים רק את יומני הביקורת עבור משאבים שנמצאים ישירות בתוך הפרויקט.

לסקירה כללית של יומני ביקורת בענן, ראה סקירה כללית של יומני ביקורת בענן . להבנה מעמיקה יותר של פורמט יומן הביקורת, ראה הבנת יומני ביקורת .

יומני ביקורת זמינים

הסוגים הבאים של יומני ביקורת זמינים עבור Firebase Realtime Database:

  • יומני ביקורת של פעילות מנהל מערכת

    כולל פעולות "כתיבה אדמין" הכותבות מטא נתונים או מידע תצורה.

    לא ניתן להשבית יומני ביקורת של פעילות מנהל מערכת.

  • יומני ביקורת של גישה לנתונים

    כולל פעולות "קריאה של מנהל" הקוראות מטא נתונים או מידע תצורה. כולל גם פעולות "קריאת נתונים" ו"כתיבת נתונים" הקוראות או כותבות נתונים שסופקו על ידי המשתמש.

    כדי לקבל יומני ביקורת של Data Access, עליך להפעיל אותם במפורש.

לתיאורים מלאים יותר של סוגי יומני הביקורת, ראה סוגי יומני ביקורת .

פעולות מבוקרות

להלן מסכם אילו פעולות API מתאימות לכל סוג יומן ביקורת ב-Firebase Realtime Database:

קטגוריית יומני ביקורת פעולות מאגר נתונים בזמן אמת של Firebase
יומני ביקורת פעילות מנהל (ADMIN_WRITE)
  • CreateDatabaseInstance
  • DeleteDatabaseInstance
  • DisableDatabaseInstance
  • ReenableDatabaseInstance
יומני ביקורת גישה לנתונים (ADMIN_READ)
  • GetDatabaseInstance
  • ListDatabaseInstances
יומני ביקורת גישה לנתונים (DATA_READ או DATA_WRITE)
יומני ביקורת גישה לנתונים (DATA_READ)
  • לקרוא. ראה QueryMetadata המשויכים.
  • להקשיב. ראה QueryMetadata המשויכים.
  • תבטל את ההאזנה
יומני ביקורת גישה לנתונים (DATA_WRITE)
  • לִכתוֹב
  • עדכון. ראה WriteMetadata המשויכים.
  • OnDisconnectPut
  • OnDisconnectUpdate. ראה WriteMetadata המשויכים.
  • OnDisconnectCancel

ביקורת מידע אימות

ערכי יומן ביקורת כוללים מידע על הזהות שביצעה את הפעולה שנרשמה. כדי לזהות מתקשר בקשה, עיין בשדות הבאים בתוך אובייקט AuditLog:

  • יצירת קשרים בזמן אמת. פעולות Realtime Database Connect אינן רושמות נתוני אימות מכיוון שמסד הנתונים בזמן אמת מאמת לאחר יצירת חיבור. לכן, 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 Authentication כוללים את אסימון Firebase Authentication של בקשה זו.
  • אין אימות. לפעולות של מסד נתונים בזמן אמת שאינן משתמשות בשום אימות יש אובייקט AuthenticationInfo המכיל ערך principalEmail של audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com מופע של מסד נתונים בזמן אמת עם כללי אבטחה פתוחים עשוי להעניק בקשות כאלה . אנו ממליצים לכל המשתמשים לאבטח את מסדי הנתונים שלהם כראוי.

  • אסימוני סודות מורשת. לפעולות של מסד נתונים בזמן אמת המשתמשות באסימונים מדור קודם יש אובייקט 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 . אין צורך בהרשאה כדי להתחבר למופע של מסד נתונים בזמן אמת.
  • firebasedatabase.data.cancel : משמש ל- Unlisten ו- OnDisconnectCancel . ביטול או ביטול של פעולה שאושרה בעבר אינו דורש הרשאה נוספת.

התאם יומני ביקורת ענן עם תוצאות פרופילי מסד נתונים בזמן אמת

אתה יכול לבצע ניתוח ביצועים מעמיק במסד נתונים בזמן אמת באמצעות הפרופיל של מסד נתונים Realtime בשילוב עם רישום ביקורת של מסד נתונים Realtime. לכל כלי יש את היתרונות שלו.

רישום ביקורת ענן פרופיל מסדי נתונים בזמן אמת
  • מבקר גישה למאגרי מידע
  • לוכד ברציפות את כל הבקשות
  • מאפשר שאילתה רטרוספקטיבית
  • מכיל מידע מפורט על אסימון אישור
  • כרוך בעלות שימוש
  • משמש לניתוח ביצועים
  • מספק כלי עבודה שימושי לזיהוי נקודות חמות ובכך אופטימיזציה של ביצועים
  • יכול למדוד שידור מאזינים , שאינו זמין ביומני ביקורת עקב נפח נתונים פוטנציאלי
  • קל משקל ובזמן אמת, מה שהופך אותו טוב לבדיקת עומס חי. ייתכן שיחלפו מספר דקות עד שרשומות יומן ביקורת יופיעו.

תוכן יומן הביקורת תואם למדדי הפרופיל כפי שמוצג להלן.

שם פעולת רישום ביקורת ערכים מיוחדים ב
RealtimeDatabaseAuditMetadata
שם פעולת Profiler
לְחַבֵּר RequestType הוא REALTIME במקביל-להתחבר
לְנַתֵק RequestType הוא REALTIME במקביל-ניתוק
לקרוא RequestType הוא REALTIME קריאה בזמן אמת
לקרוא RequestType הוא REST לנוח לקרוא
לִכתוֹב RequestType הוא REALTIME כתיבה בזמן אמת
לִכתוֹב RequestType הוא REST מנוחה-כתוב
עדכון RequestType הוא REALTIME .
בדוק PreconditionType .
עדכון בזמן אמת
עסקה בזמן אמת
עדכון RequestType הוא REST .
בדוק PreconditionType .
עדכון מנוחה
מנוחה-עסקה
מאזין הקשב RequestType הוא REALTIME מאזין-תקשיב
מאזין הסר RequestType הוא REALTIME מאזין-לא מאזין
OnDisconnectPut 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 זמין בתיעוד העזר .

שם יומן

שמות המשאבים של יומני ביקורת ענן מציינים את פרויקט Firebase או ישות אחרת של Google Cloud שבבעלותה יומני הביקורת, והאם היומן מכיל נתוני רישום ביומן של פעילות מנהל, גישה לנתונים, מדיניות נדחתה או אירועי מערכת. לדוגמה, להלן שמות יומנים עבור יומני ביקורת של פעילות ניהול ברמת הפרויקט ויומני ביקורת של גישה לנתונים של ארגון. המשתנים מציינים מזהי פרויקט וארגון של Firebase.

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

שם השירות

יומני ביקורת מסד נתונים של Firebase משתמשים בשם השירות firebasedatabase.googleapis.com .

לרשימה מלאה של כל שמות השירות של Cloud Logging API וסוג המשאב המנוטר התואם שלהם, ראה מיפוי שירותים למשאבים .

סוגי משאבים

יומני ביקורת של מסד נתונים של Firebase משתמשים בסוג המשאב audited_resource עבור כל יומני הביקורת.

לרשימה של כל סוגי המשאבים המנוטרים בענן רישום ומידע תיאורי, ראה סוגי משאבים מנוטרים .

אפשר רישום ביקורת

יומני ביקורת של פעילות מנהל מופעלים תמיד; אתה לא יכול להשבית אותם.

יומני ביקורת של Data Access מושבתים כברירת מחדל ואינם נכתבים אלא אם הם מופעלים במפורש (החריג הוא יומני ביקורת של Data Access עבור BigQuery, שלא ניתן להשבית).

יומני ביקורת של גישה לנתונים עבור מסד נתונים בזמן אמת מופעלים על ידי בדיקת DATA_READ ו/או DATA_WRITE במסוף GCP. יש עיכוב של עד שעה בין המועד שבו יומנים מופעלים/מושבתים ב-GCP Console לבין הזמן שבו יומנים מתחילים/מפסיקים להישלח.

להנחיות להפעלת חלק מיומני הביקורת של גישה לנתונים, ראה הגדרת יומני גישה לנתונים .

הרשאות ותפקידים

הרשאות ותפקידים של Cloud IAM קובעים את היכולת שלך לגשת לנתוני יומני ביקורת במשאבי Google Cloud.

כשאתה מחליט אילו הרשאות ותפקידים ספציפיים ל-Loging חלים על מקרה השימוש שלך, שקול את הדברים הבאים:

  • תפקיד מציג היומנים ( roles/logging.viewer ) מעניק לך גישת קריאה בלבד לפעילות מנהל, מדיניות נדחתה ויומני ביקורת של אירועי מערכת. אם יש לך רק תפקיד זה, לא תוכל להציג יומני ביקורת של Data Access שנמצאים ב _Default bucket.

  • התפקיד Private Logs Viewer (roles/logging.privateLogViewer ) כולל את ההרשאות הכלולות ב- roles/logging.viewer , בנוסף את היכולת לקרוא יומני ביקורת של Data Access ב- _Default bucket.

    שים לב שאם היומנים הפרטיים האלה מאוחסנים בדליים המוגדרים על ידי המשתמש, אז כל משתמש שיש לו הרשאות לקרוא יומנים בדליים האלה יכול לקרוא את היומנים הפרטיים. למידע נוסף על דליים של יומנים, ראה סקירת ניתוב ואחסון .

למידע נוסף על ההרשאות והתפקידים של 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 או ממשק ה-API של Logging.

לְנַחֵם

אתה יכול להשתמש בסייר היומנים שבמסוף GCP כדי לאחזר את ערכי יומן הביקורת שלך עבור הפרויקט, התיקיה או הארגון שלך ב-Firebase:

  1. ב-GCP Console, עבור אל הדף רישום > יומנים סייר .

    עבור לדף Logs Explorer

  2. בדף Logs Explorer , בחר פרויקט, תיקיה או ארגון קיים של Firebase.

  3. בחלונית בונה שאילתות , בצע את הפעולות הבאות:

    • בסוג משאב , בחר את המשאב של Google Cloud שאת יומני הביקורת שלו ברצונך לראות.

    • ב שם יומן , בחר את סוג יומן הביקורת שברצונך לראות:

      • עבור יומני ביקורת של פעילות מנהל מערכת, בחר פעילות .
      • עבור יומני ביקורת של Data Access, בחר data_access .
      • עבור יומני ביקורת של אירועי מערכת, בחר system_event .
      • עבור יומני ביקורת של דחיית מדיניות, בחר מדיניות .

    אם אינך רואה את האפשרויות הללו, אין יומני ביקורת מסוג זה זמינים בפרויקט, בתיקייה או הארגון של Firebase.

    לפרטים נוספים על ביצוע שאילתות באמצעות סייר היומנים, ראה בניית שאילתות יומן .

gcloud

כלי שורת הפקודה gcloud מספק ממשק שורת פקודה ל-Cloud Logging API. ספק 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 שנבחר כעת.

כדי להשתמש בממשק ה-API של Logging כדי להסתכל על ערכי יומן הביקורת שלך, בצע את הפעולות הבאות:

  1. עבור לקטע נסה את ה-API הזה בתיעוד של שיטת entries.list .

  2. הכנס את הדברים הבאים לגוף הבקשה בטופס נסה את ה-API הזה . לחיצה על הטופס המאוכלס מראש ממלאת אוטומטית את גוף הבקשה, אך עליך לספק 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 בארגון או מכל הפרויקטים.

  • אם יומני הביקורת המופעלים שלך ב-Data Access דוחפים את פרויקטי Firebase שלך ​​מעל הקצאות היומן שלך, אתה יכול ליצור כיורים שלא כוללים את יומני הביקורת של Data Access מרישום.

להוראות על ניתוב יומני, ראה הגדרת כיורים .

תמחור

יומני ביקורת של פעילות מנהל ויומני ביקורת של אירועי מערכת הם ללא עלות.

יומני ביקורת של גישה לנתונים ויומני ביקורת דחויים של מדיניות כרוכים בתשלום.

למידע נוסף על תמחור Cloud Logging, ראה תמחור חבילת התפעול של Google Cloud: Cloud Logging .