במסמך הזה מתוארים יומני הביקורת שנוצרים על ידי Google Kubernetes Engine כחלק מיומני הביקורת של Cloud.
סקירה כללית
שירותיGoogle Cloud יוצרים יומני ביקורת שבהם מתועדים אירועי גישה למשאבי Google Cloud ופעילויות אדמין שמבוצעות בהם.
הפרויקטים שלכם ב- Google Cloud כוללים רק יומני ביקורת של משאבים שמשויכים ישירות לפרויקט ב- Google Cloud . משאבים אחרים Google Cloud כמו תיקיות, ארגונים וחשבונות לחיוב, מכילים את יומני הביקורת של הישות עצמה.
לפרטים נוספים, ראו סקירה כללית על יומני הביקורת של Cloud. להבנה עמוקה יותר של הפורמט של יומני הביקורת, קראו את המאמר הסבר על יומני הביקורת.
יומני הביקורת הזמינים
אלה סוגי יומני הביקורת שזמינים ל-GKE:
-
יומני הביקורת Admin Activity
כוללים רישום של פעולות במסגרת הרשאת admin write, שבהן נכתב מידע במטא-נתונים או ההגדרות.
לא ניתן להשבית את יומני הביקורת Admin Activity.
-
יומני הביקורת Data Access
כוללים רישום של פעולות במסגרת הרשאת admin read, שבהן נקרא מידע ממטא-נתונים או מהגדרות. היומנים כוללים גם פעולות במסגרת ההרשאות data read ו-data write, שבהן נקראים או נכתבים נתונים שהמשתמשים סיפקו.
כדי לקבל את יומני הביקורת Data Access, אתם צריכים להפעיל אותם באופן מפורש.
לתיאורים מלאים של סוגי יומני הביקורת, קראו את המאמר סוגים של יומני ביקורת.
פעולות מבוקרות
הטבלה הבאה מסכמת אילו פעולות API מתאימות לכל סוג של רישום ביומן הביקורת ב-GKE:
| קטגוריית יומני הביקורת | פעולות GKE |
|---|---|
| יומני הביקורת Admin Activity | io.k8s.authorization.rbac.v1 |
io.k8s.authorization.rbac.v1.roles |
הפורמט של יומן הביקורת
הרשומות ביומן הביקורת כוללות את האובייקטים הבאים:
הרשומה עצמה, שהיא אובייקט מסוג
LogEntry. אלה כמה מהשדות השימושיים ברשומה:- השדה
logNameמכיל את מזהה המשאב ואת סוג יומן הביקורת. המשאב הוא פרויקט, תיקייה, ארגון או חשבון לחיוב. - השדה
resourceמכיל את היעד של הפעולה המבוקרת. - השדה
timeStampמכיל את השעה של הפעולה המבוקרת. - השדה
protoPayloadמכיל את המידע המבוקר.
- השדה
אובייקט מסוג
AuditLogששמור בשדהprotoPayloadשל הרשומה ביומן, ומכיל את הנתונים של יומני הביקורת.- השדה
@typeמוגדר ל-"type.googleapis.com/google.cloud.audit.AuditLog". - השדה
serviceNameמזהה את השירות שכתב את יומן הביקורת. הפורמט של השדה הזה הוא ספציפי לשירות.
- השדה
אובייקט ספציפי לשירות שמכיל מידע אופציונלי על ביקורת ספציפית לשירות. בשילובים קודמים, האובייקט הזה נשמר בשדה
serviceDataשל האובייקטAuditLog. בשילובים מאוחרים יותר נעשה שימוש בשדהmetadata.
למידע על שדות אחרים באובייקטים האלה, ואיך לפרש אותם, קראו את המאמר הסבר על יומני הביקורת.
שם יומן הביקורת
השמות של יומני הביקורת ב-Cloud כוללים את מזהי המשאבים, שמהם אפשר להבין לאיזהGoogle Cloud פרויקט או ישות אחרת Google Cloud ב-Google Cloud יומני הביקורת שייכים. בנוסף, הם מציינים אם היומן מכיל נתוני ביקורת מסוג Admin Activity, Data Access, Policy Denied או System Event.
אלה השמות של יומני הביקורת, כולל המשתנים שמציינים את מזהי המשאבים:
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
שם השירות
יומני הביקורת של Kubernetes משתמשים בשם השירות k8s.io.
השירות k8s.io משמש ליומני ביקורת של Kubernetes.
היומנים האלה נוצרים על ידי רכיב Kubernetes API Server והם מכילים מידע על פעולות שבוצעו באמצעות Kubernetes API. לדוגמה, כל שינוי שתבצעו במשאב Kubernetes באמצעות הפקודה kubectl יתועד על ידי השירות k8s.io. רשומות ביומן הביקורת של Kubernetes שימושיות לחקירת בקשות API חשודות, לאיסוף נתונים סטטיסטיים או ליצירת התראות למעקב אחרי קריאות לא רצויות ל-API.
במאמר מיפוי של השירותים למשאבים תוכלו למצוא רשימה של כל שמות השירותים של Cloud Logging API וסוגי המשאבים התואמים במעקב.
סוגי המשאבים
יומני הביקורת של Kubernetes משתמשים בסוג המשאב k8s_cluster.
רשומות ביומן שנכתבות על ידי שרת ה-API של Kubernetes חלות על סוג המשאב k8s_cluster. רשומות היומן האלה מתארות פעולות במשאבי Kubernetes באשכול, למשל Pods, Deployments ו-Secrets.
במאמר סוגי המשאבים במעקב תוכלו למצוא רשימה של כל סוגי המשאבים במעקב ב-Cloud Logging ותיאור שלהם.
זהויות המתקשרים
כתובת ה-IP של מבצע הקריאה שמורה בשדה RequestMetadata.caller_ip של האובייקט AuditLog. יכול להיות שרישום ביומן יצנזר זהויות מסוימות של מתקשרים וכתובות IP.
מידע על הצנזורה של מידע ביומני ביקורת מופיע במאמר בנושא זהויות של מבצעי קריאות ביומני ביקורת.
הפעלת הרישום ביומן הביקורת
יומני הביקורת Admin Activity תמיד מופעלים, ולא ניתן להשבית אותם.
יומני הביקורת Data Access מושבתים כברירת מחדל, ולא מתעדכנים אלא אם כן מפעילים אותם בצורה מפורשת (למעט יומני Data Access של BigQuery, שלא ניתן להשבית אותם).
הסבר על הפעלת יומני הביקורת Data Access מופיע במאמר הפעלת יומני הביקורת Data Access.
הרשאות ותפקידים
ההרשאות והתפקידים ב-IAM קובעים את אפשרויות הגישה שלכם לנתוני יומני הביקורת במשאבי Google Cloud .
כשמחליטים אילו הרשאות ותפקידים ספציפיים לרישום ביומן יחולו על התרחיש לדוגמה שלכם, מומלץ להביא בחשבון את הנקודות הבאות:
התפקיד 'צפייה ביומנים' (
roles/logging.viewer) נותן הרשאת קריאה בלבד ביומני הביקורת Admin Activity, Policy Denied ו-System Event. משתמשים שהוקצה להם רק התפקיד הזה לא יכולים לצפות ביומני הביקורת Data Access שנמצאים בקטגוריה_Default.התפקיד 'צפייה ביומנים פרטיים' (
(roles/logging.privateLogViewer) כולל את ההרשאות שכלולות בתפקידroles/logging.viewer, וגם את האפשרות לקרוא את יומני הביקורת Data Access בקטגוריה_Default.חשוב לזכור שאם היומנים הפרטיים האלה מאוחסנים בקטגוריות שהוגדרו על ידי משתמשים, כל משתמש שיש לו הרשאה לקרוא את היומנים בקטגוריות האלה יוכל לקרוא את היומנים הפרטיים. מידע נוסף על קטגוריות ביומן מופיע במאמר סקירה כללית על ניתוב ואחסון.
במאמר בקרת גישה באמצעות IAM תוכלו לקרוא מידע נוסף על ההרשאות והתפקידים ב-IAM שחלים על הנתונים של יומני הביקורת.
צפייה ביומנים
תוכלו לשלוח שאילתה על כל יומני הביקורת, או לשלוח שאילתה על יומנים מסוימים לפי שם יומן הביקורת שלהם. השם של יומן הביקורת כולל את מזהה המשאב של 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 הפרויקט, התיקייה או הארגון:
-
במסוף Google Cloud , נכנסים לדף Logs Explorer:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.
בוחרים פרויקט, תיקייה או ארגון קיימים Google Cloud .
כדי להציג את כל יומני הביקורת, מזינים אחת מהשאילתות הבאות בשדה עורך השאילתות ולוחצים על Run query:
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
כדי להציג את יומני הביקורת למשאב וסוג יומן ביקורת ספציפיים, בחלונית 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 כדי לצפות ברשומות יומן הביקורת ברמת הפרויקט:
עוברים לקטע Try this API במאמרי העזרה של ה-method
entries.list.מזינים את הפרטים הבאים בקטע Request body בטופס Try this API. אם לוחצים על הטופס למילוי פרטים אוטומטי, גוף הבקשה יאוכלס בפרטים באופן אוטומטי אבל תצטרכו לציין PROJECT_ID תקין בכל אחד משמות יומני הביקורת.
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }לוחצים על Execute.
שאילתות לדוגמה
כדי להשתמש בשאילתות לדוגמה בטבלה הבאה, צריך לבצע את השלבים האלה:
מחליפים את המשתנים בביטוי השאילתה בפרטי הפרויקט שלכם ולאחר מכן מעתיקים את הביטוי באמצעות סמל הלוח content_copy.
-
במסוף Google Cloud , נכנסים לדף Logs Explorer:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.
מפעילים את האפשרות Show query כדי לפתוח את שדה עורך השאילתות, ואז מדביקים בתוכו את הביטוי:
לוחצים על Run query. היומנים שעונים על השאילתה מוצגים בחלונית Query results.
כדי לאתר יומני ביקורת של GKE, משתמשים בשאילתות הבאות ב-Logs Explorer:
| שם השאילתה או המסנן | ביטוי |
|---|---|
| יומני ביקורת של עומסי עבודה |
log_id("cloudaudit.googleapis.com/activity")
resource.type="k8s_cluster"
resource.labels.cluster_name="CLUSTER_NAME"
protoPayload.request.metadata.name="WORKLOAD_NAME"
|
| עדכון מטא-נתונים של צומת לאובייקט צומת |
resource.type="k8s_cluster"
log_id("cloudaudit.googleapis.com/activity")
protoPayload.methodName="io.k8s.core.v1.nodes.update"
resource.labels.cluster_name="CLUSTER_NAME"
resource.labels.location="LOCATION_NAME"
|
| שינויים בבקרת גישה מבוססת-תפקידים, לא כולל שינויים אוטומטיים במערכת | logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.methodName:"io.k8s.authorization.rbac.v1" NOT protoPayload.authenticationInfo.principalEmail:"system" |
| שינויים בתפקידים של בקרת גישה מבוססת-תפקידים, לא כולל שינויים אוטומטיים במערכת | logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.methodName:"io.k8s.authorization.rbac.v1.roles" NOT protoPayload.authenticationInfo.principalEmail:"system" |
| שינויים בהקצאות של תפקידים בבקרת גישה מבוססת-תפקידים, לא כולל שינויים אוטומטיים במערכת | logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.methodName:"io.k8s.authorization.rbac.v1.rolebindings" NOT protoPayload.authenticationInfo.principalEmail:"system" |
| בקשות לחתימה על אישורים | logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.resourceName:"certificates.k8s.io/v1beta1/certificatesigningrequests" |
| בקשות אינטרנט לא מאומתות | logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.authenticationInfo.principalEmail:"system:anonymous" |
| קריאות של זהות אתחול kubelet | logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.authenticationInfo.principalEmail:"kubelet" |
| בקשות מאומתות של Node | logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.authenticationInfo.principalEmail:"system:node" |
| שיחות מחוץ לטווח כתובות IP | logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.requestMetadata.callerIp!="127.0.0.1" protoPayload.requestMetadata.callerIp!="::1" NOT protoPayload.requestMetadata.callerIp:"IP_ADDRESS_PREFIX" |
רשומות ביומן הביקורת Admin Activity שחלות על סוג המשאב k8s_cluster ומתארות יצירה של פריסה
|
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.methodName:"deployments.create" |
רשומות ביומן הביקורת Admin Activity שרלוונטיות לסוג המשאב k8s_cluster ושערך principalEmail שלהן הוא system:anonymous.
הרשומות האלה מייצגות כנראה ניסיונות כושלים לאימות. |
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.authenticationInfo.principalEmail="system:anonymous" |
רשומות ביומן הביקורת Admin Activity שרלוונטיות לסוג המשאב gke_cluster ושערך המאפיין severity שלהן הוא ERROR.
|
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="gke_cluster" severity="ERROR" |
רשומות ביומן הביקורת של פעילות האדמין שרלוונטיות לסוג המשאב k8s_cluster ומתארות בקשת כתיבה ל-Secret. |
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.methodName:"io.k8s.core.v1.secrets" NOT protoPayload.methodName:"get" NOT protoPayload.methodName:"list" NOT protoPayload.methodName:"watch" |
רשומות ביומן הביקורת של פעילות האדמין שרלוונטיות לסוג המשאב k8s_cluster ומתארות בקשת Pod ממשתמש מסוים.
|
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" resource.type="k8s_cluster" protoPayload.methodName:"io.k8s.core.v1.pods" protoPayload.authenticationInfo.principalEmail="dev@example.com" |
ניתוב של יומני ביקורת
אתם יכולים לנתב יומני ביקורת ליעדים נתמכים באותו אופן שבו אתם יכולים לנתב סוגים אחרים של יומנים. כמה סיבות לניתוב יומני הביקורת:
אתם יכולים לנתב עותקים של יומני הביקורת ל-Cloud Storage, ל-BigQuery או ל-Pub/Sub, כדי לשמור את יומני הביקורת לפרק זמן ארוך יותר ולהשתמש ביכולות חיפוש מתקדמות יותר. באמצעות Pub/Sub אתם יכולים לנתב יומני ביקורת לאפליקציות אחרות, למאגרים אחרים ולצדדים שלישיים.
כדי לנהל את יומני הביקורת בארגון כולו, אתם יכולים ליצור aggregated sinks שיכולים לנתב יומנים מכל הפרויקטים ב- Google Cloud , או מחלקם.
- אם הכתיבה המופעלת ליומני הביקורת Data Access גורמת לחריגה ממכסת הרישומים שלכם ביומן בפרויקטים ב-Google Cloud , אתם יכולים ליצור אובייקטים מסוג sink שיחריגו את הכתיבה ליומני Data Access מ-Cloud Logging.
הוראות לגבי ניתוב יומנים מופיעות במאמר ניתוב יומנים ליעדים נתמכים.
תמחור
מידע נוסף על התמחור מופיע בקטעים על Cloud Logging בדף תמחור של Google Cloud Observability.
הגדרת מדדים והתראות
כדי להגדיר מדדים על סמך רשומות ביומן, אפשר להשתמש ב-Cloud Monitoring. כדי להגדיר תרשימים והתראות, אפשר להשתמש במדדים מבוססי-יומן.
מדיניות ביקורת
מדיניות הביקורת של Kubernetes קובעת אילו רשומות ביומן מיוצאות על ידי שרת ה-API של Kubernetes. מדיניות הביקורת של Kubernetes Engine קובעת אילו רשומות יועברו ליומן הביקורת Admin Activity ואילו רשומות יועברו ליומן הביקורת Data Access.
מידע נוסף על מדיניות ביקורת ב-Kubernetes Engine זמין במאמר בנושא מדיניות ביקורת ב-Kubernetes Engine.