הסבר על יומני הביקורת

בדף הזה מתוארים בפירוט רשומות ביומן של Cloud Audit Logs: המבנה שלהן, איך לקרוא אותן ואיך לפרש אותן.

ב-Cloud Audit Logs זמינים יומני הביקורת הבאים לכל Google Cloud פרויקט, תיקייה וארגון:

  • יומני הביקורת Admin Activity
  • יומני הביקורת Data Access
  • יומני הביקורת System Event
  • יומני הביקורת Policy Denied

לפרטים נוספים, ראו יומני ביקורת של Cloud.

הפורמט של הרשומות ביומן הביקורת

רשומה ביומן ביקורת היא סוג של רשומה ביומן Cloud Logging. בדומה לכל הרשומות ביומן של Logging, רשומה ביומן הביקורת מאוחסנת באובייקט LogEntry. מה שמבדיל בין רשומה ביומן הביקורת לבין רשומות אחרות ביומן הוא השדה protoPayload. ברשומות ביומן הביקורת, השדה protoPayload של הרשומה מכיל אובייקט מסוג AuditLog שבו מאוחסנים נתוני יומן הביקורת.

בקיצור, כל רשומה ביומן הביקורת מאופיינת בפרטים הבאים:

  • הפרויקט, התיקייה או הארגון שבבעלותם רשומת היומן.
  • המשאב שאליו מתייחסת הרשומה ביומן. המידע הזה כולל סוג משאב מרשימת המשאבים במעקב וערכים נוספים שמציינים מופע ספציפי. לדוגמה, אפשר לראות רשומות ביומן ביקורת ממכונה וירטואלית אחת של Compute Engine או מכל המכונות הווירטואליות.
  • חותמת זמן.
  • שירות: שירותים הם מוצרים Google Cloud נפרדים, כמו Compute Engine,‏ Cloud SQL או Pub/Sub. כל שירות מזוהה לפי שם: Compute Engine הוא compute.googleapis.com,‏ Cloud SQL הוא cloudsql.googleapis.com וכן הלאה. המידע הזה מופיע בשדה protoPayload.serviceName של הרשומה ביומן הביקורת.

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

  • מטען ייעודי (payload), שהוא מסוג protoPayload. המטען הייעודי (Payload) של כל רשומה ביומן הביקורת הוא אובייקט מסוג AuditLog, שמוגדרים בו שדות ספציפיים ליומני הביקורת ב-Cloud, כמו serviceName ו-authenticationInfo. יש גם שדה אופציונלי, metadata, שבו שירותים יכולים לפרט מידע ספציפי לשירות ברשומה ביומן הביקורת. Google Cloud בחלק מהשירותים עדיין נעשה שימוש בשדה הישן serviceData כדי להציג מידע שספציפי לשירות. Google Cloud רשימה של שירותים שמשתמשים בשדה serviceData זמינה במאמר נתוני ביקורת שספציפיים לשירות.

  • שם יומן: הרשומות ביומן הביקורת שייכות ליומנים בחשבונות לחיוב, בפרויקטים, בתיקיות ובארגונים. בטבלה הבאה מפורטים שמות היומנים:

   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

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_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

בתוך חשבון לחיוב, פרויקט, תיקייה או ארגון, השמות של היומנים האלה בדרך כלל מקוצרים ל-activity,‏ data_access,‏ system_event ו-policy.

דוגמה לרשומה ביומן ביקורת

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

בדוגמה הבאה מוצגת רשומה ביומן הביקורת של פעילות האדמין שנכתבה על ידי App Engine כדי לתעד שינוי במדיניות של ניהול זהויות והרשאות גישה (IAM) עם PROJECT_ID my-gcp-project-id. כדי שהרישום יהיה קצר יותר, השמטנו חלקים מסוימים מהערך ביומן, והדגשנו חלק מהשדות:

    {
      protoPayload: {
        @type: "type.googleapis.com/google.cloud.audit.AuditLog",
        status: {},
        authenticationInfo: {
          principalEmail: "user@example.com"
        },
        serviceName: "appengine.googleapis.com",
        methodName: "SetIamPolicy",
        authorizationInfo: [...],
        serviceData: {
          @type: "type.googleapis.com/google.appengine.legacy.AuditData",
          policyDelta: { bindingDeltas: [
              action: "ADD",
              role: "roles/logging.privateLogViewer",
              member: "user:user@example.com"
          ], }
        },
        request: {
          resource: "my-gcp-project-id",
          policy: { bindings: [...], }
        },
        response: {
          bindings: [
            {
              role: "roles/logging.privateLogViewer",
              members: [ "user:user@example.com" ]
            }
          ],
        }
      },
      insertId: "53179D9A9B559.AD6ACC7.B40604EF",
      resource: {
        type: "gae_app",
        labels: { project_id: "my-gcp-project-id" }
      },
      timestamp: "2019-05-27T16:24:56.135Z",
      severity: "NOTICE",
      logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
    }

זוהי השאילתה ששימשה לבחירת הדוגמה הקודמת של רשומה ביומן הביקורת. אפשר להשתמש בשאילתה ב-Logs Explorer, ב-Logging API או ב-Google Cloud CLI. מזהה הפרויקט מופיע בשם היומן:

    resource.type = "gae_app"
    logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

אם אתם מחפשים יומני ביקורת ממופע יחיד של סוג משאב, כמו gce_instance, מוסיפים מזהה מופע:

    resource.type = "gce_instance"
    resource.instance_id = "INSTANCE_ID"
    logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

פירוש של רשומה לדוגמה ביומן הביקורת

בדוגמה הקודמת של רשומה ביומן ביקורת, השדות protoPayload,‏ insertId,‏ resource, ‏ timestamp, ‏ severity ו-logName שמוצגים הם חלק מהאובייקט LogEntry. הערך של השדה protoPayload הוא אובייקט AuditLog. הוא מכיל את נתוני יומני הביקורת.

כשמסתכלים על דוגמה של רשומה ביומן הביקורת, יכולות לעלות כמה שאלות:

  • האם מדובר ברשומה ביומן הביקורת? כן, אפשר לדעת את זה בשתי דרכים:

    • השדה protoPayload.@type הוא type.googleapis.com/google.cloud.audit.AuditLog.

    • השדה logName כולל את הדומיין cloudaudit.googleapis.com.

  • איזה שירות כתב את יומן הביקורת? היומן נכתב על ידי App Engine. המידע הזה מופיע בשדה protoPayload.serviceName של הרשומה ביומן הביקורת.

  • איזו פעולה נבדקת? מתבצעת ביקורת של SetIamPolicy, כפי שצוין בשדה protoPayload.methodName. מידע נוסף על הפעולה שנבדקה מופיע באובייקט AuditData ב-protoPayload.serviceData.

  • איזה משאב נבדק? מתבצעת ביקורת על אפליקציה שפועלת ב-App Engine ומשויכת ל Google Cloud פרויקטmy-gcp-project-id. אפשר לראות את זה בשדה resource, שבו מצוין סוג המשאב gae_app ומזהה הפרויקט my-gcp-project-id. בדוגמה הזו, תוכלו למצוא פרטים על סוג המשאב ברשימת סוגי המשאבים במעקב.

מידע נוסף זמין במאמרים בנושא סוג LogEntry, סוג AuditLog וסוג AuditData IAM.

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

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

במקרה הזה, האובייקט LogEntry מכיל שדה operation. לרשומות ביומן של אותה פעולה יש אותו ערך גם עבור LogEntry.operation.id וגם עבור LogEntry.operation.producer. הרשומה הראשונה ביומן שנכתבה היא LogEntry.operation.first=true, והרשומה של השלמת הפעולה היא LogEntry.operation.last=true.

במקרים שבהם הפעולה מסתיימת באופן מיידי או נכשלת, יש רק רשומה אחת ביומן שכוללת את LogEntry.operation.first=true ואת LogEntry.operation.last=true.

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

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

  • google.longrunning.Operations.ListOperations
  • google.longrunning.Operations.GetOperation
  • google.longrunning.Operations.CancelOperation
  • google.longrunning.Operations.WaitOperation
  • google.longrunning.Operations.DeleteOperation

הפרמטר LogEntry.operation לא מצוין במקרה הזה, כי ה-API הזה מחזיר מטא-נתונים על פעולות ממושכות, אבל הוא עצמו לא פעולה ממושכת.

במאמר Google Cloud שירותים עם יומני ביקורת מפורט אילו ממשקי API נבדקים, כי זה משתנה בהתאם לשירות.

יומני ביקורת של ממשקי API להזרמה

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

במקרה הזה, האובייקט LogEntry מכיל שדה operation, ולרשומות ביומן של אותה פעולה יש ערך זהה בשדות LogEntry.operation.id ו-LogEntry.operation.producer. היומן הראשון שנכתב הוא LogEntry.operation.first=true, והיומן של ההשלמה הוא LogEntry.operation.last=true.

יכול להיות ש-API הזה יפלוט גם רשומות המשך ביומן שבהן לא מוגדרים הערכים של LogEntry.operation.first ושל LogEntry.operation.last, כדי לציין שהסטרים נשאר פתוח.

נתוני ביקורת ספציפיים לשירות

שירותים מסוימים מרחיבים את המידע שמאוחסן ב-AuditLog שלהם על ידי הצבת מבנה נתונים משלים בשדה serviceData של רשומת יומן הביקורת. בטבלה הבאה מפורטים השירותים שמשתמשים בשדה serviceData, ומופיע קישור לסוג AuditData שלהם.

שירותסוג הנתונים בשירות
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (Legacy) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
IAM type.googleapis.com/google.iam.v1.logging.AuditData
Cloud Storage type.googleapis.com/google.iam.v1.logging.AuditData

צפייה ביומני ביקורת

תוכלו לשלוח שאילתה על כל יומני הביקורת, או לשלוח שאילתה על יומנים מסוימים לפי שם יומן הביקורת שלהם. השם של יומן הביקורת כולל את מזהה המשאב של Google Cloud הפרויקט, התיקייה, החשבון לחיוב או הארגון שבמידע של יומני הביקורת שלהם רוצים לצפות. אפשר להגדיר בשאילתות את השדות LogEntry שנוספו לאינדקס. למידע נוסף על שליחת שאילתות על היומנים, ראו יצירת שאילתות ב-Logs Explorer.

בעזרת הכלי Logs Explorer אפשר להציג רשומות יומן בודדות. אם אתם רוצים להשתמש ב-SQL כדי לנתח קבוצות של רשומות ביומן, אתם יכולים להשתמש בדף Log Analytics. למידע נוסף:

אפשר לצפות ברוב יומני הביקורת ב-Cloud Logging באמצעותGoogle Cloud המסוף, Google Cloud CLI או Logging API. עם זאת, כדי לצפות ביומני ביקורת שקשורים לחיוב, אפשר להשתמש רק ב-Google Cloud CLI או ב-Logging API.

המסוף

ב Google Cloud מסוף, תוכלו להשתמש ב-Logs Explorer כדי לאחזר את הרשומות ביומן הביקורת של Google Cloud הפרויקט, התיקייה או הארגון:

  1. במסוף Google Cloud , נכנסים לדף Logs Explorer:

    כניסה אל Logs Explorer

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

  2. בוחרים פרויקט, תיקייה או ארגון קיימים Google Cloud .

  3. כדי להציג את כל יומני הביקורת, מזינים אחת מהשאילתות הבאות בשדה עורך השאילתות ולוחצים על Run query:

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. כדי להציג את יומני הביקורת למשאב וסוג יומן ביקורת ספציפיים, בחלונית Query builder, מבצעים את הפעולות הבאות:

    • בקטע Resource Type, בוחרים את המשאב שרוצים לראות את יומני הביקורת שלו. Google Cloud

    • בקטע Log name, בוחרים את סוג יומן הביקורת שרוצים לראות:

      • ליומני הביקורת Admin Activity בוחרים באפשרות activity.
      • ליומני הביקורת Data Access בוחרים באפשרות data_access.
      • ליומני הביקורת System Event בוחרים באפשרות system_event.
      • ליומני הביקורת Policy Denied בוחרים באפשרות policy.
    • לוחצים על Run query.

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

    לא הצלחתם לצפות ביומנים ב-Logs Explorer? פתרון בעיות

    מידע נוסף על שליחת שאילתות באמצעות Logs Explorer מופיע במאמר יצירת שאילתות ב-Logs Explorer.

gcloud

הכלי Google Cloud CLI מספק גישה ל-Logging API באמצעות ממשק שורת הפקודה (CLI). חשוב לציין מזהה משאב תקין בכל אחד משמות היומנים. לדוגמה, אם שאילתה כוללת את השדה PROJECT_ID, מזהה הפרויקט שאתם מציינים חייב להתייחס לפרויקטGoogle Cloud שבחרתם.

כדי לקרוא את הרשומות ביומן הביקורת ברמת הפרויקט, מריצים את הפקודה הבאה: Google Cloud

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

כדי לקרוא את הרשומות ביומן הביקורת ברמת החשבון לחיוב ב-Cloud, מריצים את הפקודה הבאה:

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

כדי לקרוא את הרשומות ביומן שנרשמו לפני יותר מיום אחד, מוסיפים לפקודה את הדגל --freshness.

למידע נוסף על השימוש ב-CLI של gcloud:‏ gcloud logging read.

REST

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

לדוגמה, אם רוצים להשתמש ב-Logging API כדי לצפות ברשומות יומן הביקורת ברמת הפרויקט:

  1. עוברים לקטע Try this API במאמרי העזרה של ה-method entries.list.

  2. מזינים את הפרטים הבאים בקטע Request body בטופס Try this API. אם לוחצים על הטופס למילוי פרטים אוטומטי, גוף הבקשה יאוכלס בפרטים באופן אוטומטי אבל תצטרכו לציין PROJECT_ID תקין בכל אחד משמות יומני הביקורת.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. לוחצים על Execute.