איסוף יומני ההקשר של Google Cloud Compute
גרסת כלי הניתוח: 3.0
במאמר הזה מוסבר איך לייצא יומני הקשר של Google Cloud Compute ולהטמיע אותם ב-Google Security Operations באמצעות Cloud Storage. הכלי לניתוח מחלץ מידע מהיומנים בפורמט JSON. לאחר מכן, המערכת מבצעת נרמול ומבנה של הנתונים שחולצו בפורמט UDM של Google SecOps, תוך התמקדות בפרטים על מכונות וירטואליות כמו מפרטי חומרה, הגדרות רשת, הגדרות אבטחה ויחסים לישויות אחרות.
לפני שמתחילים
חשוב לוודא שמתקיימות דרישות הסף הבאות:
- מופע של Google SecOps.
- השירות Compute מוגדר ופעיל בסביבה שלכם Google Cloud .
- גישת אדמין ל- Google Cloud והרשאות מתאימות.
יצירת קטגוריה של Cloud Storage
- נכנסים לGoogle Cloud מסוף.
נכנסים לדף Cloud Storage Buckets.
לוחצים על Create.
ממלאים את פרטי הקטגוריה בדף Create a bucket. אחרי כל אחד מהשלבים הבאים, לוחצים על המשך כדי לעבור לשלב הבא:
בקטע Get started (תחילת העבודה), מבצעים את הפעולות הבאות:
- מזינים שם ייחודי שעומד בדרישות לשמות של קטגוריות. לדוגמה, compute-context-logs.
כדי להפעיל את מרחב השמות ההיררכי, לוחצים על החץ להרחבה כדי להרחיב את הקטע Optimize for file oriented and data-intensive workloads (אופטימיזציה לעומסי עבודה שמתמקדים בקבצים ובנתונים), ואז בוחרים באפשרות Enable Hierarchical namespace on this bucket (הפעלת מרחב שמות היררכי בדלי הזה).
כדי להוסיף תווית של מאגר, לוחצים על החץ להרחבה כדי להרחיב את הקטע תוויות.
לוחצים על הוספת תווית ומציינים מפתח וערך לתווית.
בקטע Choose where to store your data, מבצעים את הפעולות הבאות:
- בוחרים סוג מיקום.
בתפריט של סוג המיקום, בוחרים מיקום שבו נתוני האובייקטים בקטגוריה יאוחסנו באופן קבוע.
כדי להגדיר שכפול בין מאגרי מידע, מרחיבים את הקטע הגדרת שכפול בין מאגרי מידע.
בקטע Choose a storage class for your data, בוחרים default storage class לקטגוריה, או בוחרים ב-Autoclass לניהול אוטומטי של סוג האחסון (storage class) של נתוני הקטגוריה.
בקטע Choose how to control access to objects, בוחרים באפשרות not כדי לא לאכוף public access prevention, ובוחרים access control model לאובייקטים של הקטגוריה.
בקטע Choose how to protect object data:
- בוחרים באחת מהאפשרויות בקטע Data protection (הגנה על נתונים) שרוצים להגדיר לקטגוריה.
- כדי לבחור איך להצפין את נתוני האובייקט, לוחצים על החץ להרחבה של Data encryption ובוחרים Data encryption method.
לוחצים על יצירה.
הגדרה של Google Cloud ייצוא יומני מחשוב
- נכנסים לGoogle Cloud מסוף.
- עוברים אל Logging > Log Router.
- לוחצים על Create Sink.
מציינים את פרמטרי ההגדרה הבאים:
- שם יעד: מזינים שם בעל משמעות, לדוגמה,
Compute-Context-Sink. - יעד של Sink: בוחרים באפשרות Cloud Storage Storage ומזינים את ה-URI של הקטגוריה, לדוגמה,
gs://compute-context-logs/. מסנן יומן:
logName="*compute*" resource.type="gce_instance"
- שם יעד: מזינים שם בעל משמעות, לדוגמה,
לוחצים על יצירה.
הגדרת הרשאות ל-Cloud Storage
- נכנסים אל IAM & Admin > IAM.
- מאתרים את חשבון השירות של Cloud Logging.
- מקצים את התפקיד roles/storage.admin בקטגוריה.
הגדרת פידים
יש שתי נקודות כניסה שונות להגדרת פידים בפלטפורמת Google SecOps:
- הגדרות SIEM > פידים > הוספת פיד חדש
- מרכז התוכן > חבילות תוכן > להתחלה
איך מגדירים את הפיד Google Cloud Compute Context
- לוחצים על חבילת פלטפורמת Google Cloud Compute.
- מאתרים את סוג היומן GCP Compute Context.
מציינים את הערכים הבאים:
- סוג המקור: Google Cloud Storage V2.
- URI של קטגוריית אחסון: כתובת URL של קטגוריית Cloud Storage, לדוגמה,
gs://compute-context-logs/. כתובת ה-URL צריכה להסתיים בקו נטוי (/). אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה בהתאם להעדפה.
הגיל המקסימלי של הקובץ: קבצים שעברו שינוי במהלך מספר הימים האחרון. ברירת המחדל היא 180 ימים.
Chronicle Service Account: מעתיקים את חשבון השירות. תצטרכו אותו כדי להוסיף הרשאות לקטגוריה עבור חשבון השירות הזה, כדי לאפשר ל-Google SecOps לקרוא או למחוק נתונים בקטגוריה.
אפשרויות מתקדמות
- שם הפיד: ערך שמאכלס מראש את השדה ומזהה את הפיד.
- מרחב שמות של נכס: מרחב השמות שמשויך לפיד.
- תוויות להעברה: תוויות שמוחלות על כל האירועים מהפיד הזה.
לוחצים על יצירת פיד.
למידע נוסף על הגדרת כמה פידים לסוגים שונים של יומנים בתוך משפחת המוצרים הזו, אפשר לעיין במאמר בנושא הגדרת פידים לפי מוצר.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| ancestors | event.idm.entity.entity.asset.attribute.labels.value | כל ערך של ישות אם במערך הישויות האם ממופה לתווית נפרדת עם המפתח ancestors. |
| assetType | event.idm.entity.entity.asset.category | ממופה ישירות מהשדה assetType. |
| asset_type | event.idm.entity.entity.asset.category | ממופה ישירות מהשדה asset_type. |
| name | event.idm.entity.entity.resource.name | ממופה ישירות משדה השם. |
| resource.data.cpuPlatform | event.idm.entity.entity.asset.hardware.cpu_platform | ממופה ישירות מהשדה resource.data.cpuPlatform. |
| resource.data.creationTimestamp | event.idm.entity.entity.asset.attribute.creation_time | הערך מנותח לפורמט של חותמת זמן מהשדה resource.data.creationTimestamp. |
| resource.data.id | event.idm.entity.entity.asset.product_object_id | ממופה ישירות מהשדה resource.data.id. |
| resource.data.labels.business_function | event.idm.entity.entity.asset.attribute.labels.value | ממופה ישירות מהשדה resource.data.labels.business_function, כשהמפתח מוגדר ל-business_function. |
| resource.data.labels.environment | event.idm.entity.entity.asset.attribute.labels.value | ממופה ישירות מהשדה resource.data.labels.environment, כשהמפתח מוגדר ל-environment. |
| resource.data.labels.infra_location | event.idm.entity.entity.asset.attribute.labels.value | ממופה ישירות מהשדה resource.data.labels.infra_location, כשהמפתח מוגדר ל-infra_location. |
| resource.data.labels.instance_group | event.idm.entity.user.group_identifiers | ממופה ישירות מהשדה resource.data.labels.instance_group. |
| resource.data.labels.os | event.idm.entity.entity.asset.platform_software.platform_version | ממופה ישירות מהשדה resource.data.labels.os. |
| resource.data.labels.primary_application | event.idm.entity.entity.asset.attribute.labels.value | ממופה ישירות מהשדה resource.data.labels.primary_application, כשהמפתח מוגדר ל-primary_application. |
| resource.data.labels.project_code | event.idm.entity.entity.asset.attribute.labels.value | ממופה ישירות מהשדה resource.data.labels.project_code, כשהמפתח מוגדר ל-project_code. |
| resource.data.lastStartTimestamp | event.idm.entity.entity.asset.last_boot_time | הערך מנותח לפורמט של חותמת זמן מהשדה resource.data.lastStartTimestamp. |
| resource.data.machineType | event.idm.entity.entity.asset.hardware.model | סוג המכונה מחולץ מהשדה resource.data.machineType באמצעות ביטוי רגולרי. |
| resource.data.name | event.idm.entity.entity.asset.hostname | ממופה ישירות מהשדה resource.data.name. |
| resource.data.networkInterfaces.0.accessConfigs.0.natIP | event.idm.entity.entity.asset.nat_ip | כתובת ה-IP הראשונה של ה-NAT מממשק הרשת הראשון ממופה. |
| resource.data.networkInterfaces.0.network | event.idm.entity.entity.asset.attribute.cloud.vpc.name | מזהה הרשת מחולץ מהשדה resource.data.networkInterfaces.0.network באמצעות ביטוי רגולרי. |
| resource.data.networkInterfaces.0.networkIP | event.idm.entity.entity.asset.ip | כתובת ה-IP של ממשק הרשת הראשון ממופה. |
| resource.data.networkInterfaces.1.networkIP | event.idm.entity.entity.asset.ip | כתובת ה-IP של ממשק הרשת השני ממופה. |
| resource.data.selfLink | event.idm.entity.entity.url | מופה ישירות מהשדה resource.data.selfLink. |
| resource.data.serviceAccounts.0.email | event.idm.entity.relations.entity.user.email_addresses | כתובת האימייל של חשבון השירות הראשון ממופה. |
| resource.data.status | event.idm.entity.entity.asset.deployment_status | הערך ACTIVE ממופה אם הסטטוס הוא אחד מהערכים הבאים: RUNNING, PROVISIONING, STAGING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING, TERMINATED. אחרת, המיפוי הוא ל-DEPLOYMENT_STATUS_UNSPECIFIED. |
| event.idm.entity.entity.asset.attribute.cloud.availability_zone | אזור הזמינות נוצר משילוב של השדות region ו-zone_suffix. | |
| event.idm.entity.entity.asset.attribute.cloud.environment | הערך שהוגדר הוא GOOGLE_CLOUD_PLATFORM. |
|
| event.idm.entity.entity.asset.attribute.cloud.project.name | מזהה הפרויקט מחולץ משדה השם באמצעות ביטוי רגולרי. | |
| event.idm.entity.entity.asset.attribute.cloud.project.resource_type | הערך שהוגדר הוא CLOUD_PROJECT. |
|
| event.idm.entity.entity.asset.attribute.cloud.vpc.resource_type | הערך שהוגדר הוא VPC_NETWORK. |
|
| event.idm.entity.entity.resource.resource_type | מגדירים את הערך VIRTUAL_MACHINE אם asset_type או assetType מכילים את הערך Instance. |
|
| event.idm.entity.entity.resource.type | מגדירים את הערך VIRTUAL_MACHINE אם asset_type או assetType מכילים את הערך Instance. |
|
| event.idm.entity.metadata.collected_timestamp | מוגדר לחותמת הזמן של האירוע ב-Logstash. | |
| event.idm.entity.metadata.entity_type | הערך שהוגדר הוא ASSET. |
|
| event.idm.entity.metadata.product_name | הערך שהוגדר הוא GCP Compute Context. |
|
| event.idm.entity.metadata.vendor_name | הערך שהוגדר הוא Google Cloud Platform. |
|
| event.idm.entity.relations.entity.user.attribute.cloud.environment | הערך שהוגדר הוא GOOGLE_CLOUD_PLATFORM. |
|
| event.idm.entity.relations.entity_type | הערך שהוגדר הוא USER. |
|
| event.idm.entity.relations.relationship | הערך שהוגדר הוא ADMINISTERS. |
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.