איסוף יומני גישה לשרת AWS S3
גרסת כלי הניתוח: 4.0
במאמר הזה מוסבר איך לאסוף יומני גישה לשרת AWS S3 על ידי הגדרת פיד של Google Security Operations. המנתח מחלץ שדות באמצעות תבניות grok, מטפל בקלט JSON פוטנציאלי וממפה את השדות שחולצו ל-UDM. הוא מבצע טרנספורמציות של נתונים, המרות של סוגים ולוגיקה מותנית על סמך הנוכחות והערכים של שדות ספציפיים כדי להבטיח ייצוג מדויק של UDM.
לפני שמתחילים
ודאו שהדרישות המוקדמות הבאות מתקיימות:
- מופע של Google SecOps
- גישה מיוחדת ל-AWS
איך מגדירים רישום ביומן של גישה לשרת AWS S3
ב-Google SecOps אפשר לאסוף יומנים באמצעות Amazon S3 דרך Amazon SQS.
- נכנסים למסוף AWS Management.
- נכנסים למסוף Amazon S3.
- עוברים אל Amazon S3 > Buckets (מאגרי מידע).
- בוחרים דלי קיים או יוצרים דלי חדש.
- לוחצים על מאפיינים.
- בקטע Server access logging, לוחצים על Edit.
- לוחצים על הפעלה.
- בשדה Target bucket, מזינים שם לקטגוריה החדשה שאליה יישלחו אובייקטים של רשומות יומן, או בוחרים קטגוריה קיימת כיעד.
- לוחצים על שמירת השינויים.
- כדי ליצור את תור ה-SQS לקטגוריית S3, מגדירים מכונה של Amazon SQS עם אחסון S3. מידע נוסף זמין במאמר הגדרת קטגוריה לקבלת התראות (נושא SNS או תור SQS).
על סמך השירות והאזור, אפשר לזהות את נקודות הקצה לקישוריות בעזרת מסמכי התיעוד הבאים של AWS:
- למידע על מקורות רישום ביומן, אפשר לעיין במאמר נקודות קצה ומכסות של AWS ניהול זהויות והרשאות גישה (IAM).
- למידע על מקורות יומנים של S3, קראו את המאמר נקודות קצה ומכסות של Amazon Simple Storage Service.
- מידע על מקורות רישום ביומן של SQS זמין במאמר נקודות קצה ומכסות של Amazon Simple Queue Service.
הגדרת פידים
יש שתי נקודות כניסה שונות להגדרת פידים בפלטפורמת Google SecOps:
- הגדרות SIEM > פידים > הוספת פיד חדש
- מרכז התוכן > חבילות תוכן > מתחילים
איך מגדירים את הפיד של AWS S3 Service Access
- לוחצים על החבילה Amazon Cloud Platform.
- מאתרים את סוג היומן AWS S3 Service Access.
- Google SecOps תומך באיסוף יומנים באמצעות מזהה מפתח גישה ושיטה סודית. כדי ליצור את מזהה מפתח הגישה והסוד, אפשר לעיין במאמר הגדרת אימות כלי באמצעות AWS.
מציינים את הערכים בשדות הבאים.
- סוג המקור: Amazon SQS V2
- Queue Name (שם התור): השם של תור ה-SQS שממנו ייקראו הנתונים
- S3 URI: ה-URI של הקטגוריה.
s3://your-log-bucket-name/- מחליפים את
your-log-bucket-nameבשם בפועל של קטגוריית ה-S3.
- מחליפים את
אפשרויות מחיקה של מקור: בוחרים את אפשרות המחיקה בהתאם להעדפות ההטמעה שלכם.
הגיל המקסימלי של הקובץ: כולל קבצים שעברו שינוי במספר הימים האחרון. ברירת המחדל היא 180 ימים.
מזהה מפתח הגישה לתור SQS: מפתח גישה לחשבון שהוא מחרוזת אלפאנומרית באורך 20 תווים.
מפתח גישה סודי לתור SQS: מפתח גישה לחשבון שהוא מחרוזת אלפאנומרית באורך 40 תווים.
אפשרויות מתקדמות
- שם הפיד: ערך שמאכלס מראש את השדה ומזהה את הפיד.
- מרחב שמות של נכס: מרחב השמות שמשויך לפיד.
- תוויות להעברה: תוויות שמוחלות על כל האירועים מהפיד הזה.
לוחצים על יצירת פיד.
למידע נוסף על הגדרת כמה פידים לסוגים שונים של יומנים בתוך משפחת המוצרים הזו, אפשר לעיין במאמר בנושא הגדרת פידים לפי מוצר.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
aclRequired |
target.resource.attribute.labels.key: "aclRequired"target.resource.attribute.labels.value: הערך של aclRequired |
ממופה ישירות משדה היומן הגולמי aclRequired. |
authenticationtype |
extensions.auth.auth_details |
ממופה ישירות משדה היומן הגולמי authenticationtype. |
bucket |
target.resource.name |
ממופה ישירות משדה היומן הגולמי bucket. |
bucket |
target.resource.resource_type: "STORAGE_BUCKET" |
אם השדה bucket קיים, מנתח התוכן מגדיר את resource_type כ-STORAGE_BUCKET. |
bucketowner |
target.resource.product_object_id |
ממופה ישירות משדה היומן הגולמי bucketowner. |
bytes_sent |
network.sent_bytes |
ממופה ישירות מהשדה bytes_sent ביומן הגולמי אחרי המרה למספר שלם ללא סימן והחלפת "-" ב-"0". |
ciphersuite |
network.application_protocol: "HTTPS" |
אם השדה ciphersuite קיים, מנתח התוכן מגדיר את application_protocol כ-'HTTPS'. |
ciphersuite |
network.tls.cipher |
ממופה ישירות משדה היומן הגולמי ciphersuite. |
errorcode |
security_result.action_details |
ממופה ישירות משדה היומן הגולמי errorcode. |
errorcode |
security_result.action: "BLOCK" |
אם השדה errorcode מכיל את הערך AccessDenied (לא תלוי באותיות רישיות), מנתח התוכן מגדיר את הערך של action כ-BLOCK. |
hostheader |
target.hostname |
הערך חולץ משדה היומן הגולמי hostheader, ויכול להיות שמספר היציאה הוסר. |
hostheader |
target.port |
הערך מחולץ משדה היומן הגולמי hostheader אם קיים מספר יציאה. |
hostid |
target.resource.attribute.labels.key: "מזהה בקשה מורחב של S3"target.resource.attribute.labels.value: הערך של hostid |
ממופה ישירות משדה היומן הגולמי hostid. |
http_capture |
network.http.method |
ה-method של ה-HTTP מחולץ מהשדה http_capture. |
http_capture |
network.http.version |
גרסת ה-HTTP מחולצת מהשדה http_capture. |
http_capture |
target.url |
כתובת ה-URL של היעד מורכבת מ-hostheader ומ-http_request_uri (שחולצו מ-http_capture), עם הקידומת http:// או https:// בהתאם לנוכחות של ciphersuite. |
httpstatus |
network.http.response_code |
ממופה ישירות מהשדה httpstatus ביומן הגולמי אחרי המרה למספר שלם. |
object_version_id |
target.resource.product_object_id |
ממופה ישירות משדה היומן הגולמי object_version_id. |
objectsize |
target.file.size |
מופה ישירות משדה היומן הגולמי objectsize אחרי המרה למספר שלם לא מסומן והחלפה של '-' ב-'0'. |
operation |
metadata.product_event_type |
ממופה ישירות משדה היומן הגולמי operation. |
referrer |
network.http.referral_url |
ממופה ישירות משדה היומן הגולמי referrer אחרי הסרת המירכאות. |
remoteip |
metadata.event_type: "USER_RESOURCE_ACCESS" |
המנתח מגדיר את event_type לערך USER_RESOURCE_ACCESS אם השדה remoteip ריק. |
remoteip |
principal.ip |
ממופה ישירות משדה היומן הגולמי remoteip. |
requester |
target.resource.attribute.labels.key: "Access Point ARN"target.resource.attribute.labels.value: הערך של requester |
ממופה ישירות משדה היומן הגולמי requester. |
requester_user |
principal.user.userid |
ממופה ישירות משדה היומן הגולמי requester_user. |
requestid |
network.session_id |
ממופה ישירות משדה היומן הגולמי requestid. |
request_time_ms |
network.session_duration.nanos |
מופה ישירות משדה היומן הגולמי request_time_ms אחרי המרה למספר שלם, החלפת המקף ב-0 וריפוד באפסים כדי לייצג ננו-שניות. |
signatureversion |
target.resource.attribute.labels.key: "Signature Version"target.resource.attribute.labels.value: הערך של signatureversion |
ממופה ישירות משדה היומן הגולמי signatureversion. |
time |
metadata.event_timestamp |
הערך הזה מנותח משדה היומן הגולמי time ומומר לחותמת זמן. |
tlsVersion |
network.tls.version |
ממופה ישירות משדה היומן הגולמי tlsVersion. |
useragent |
network.http.user_agent |
ממופה ישירות משדה היומן הגולמי useragent אחרי הסרת המירכאות. |
| (לוגיקת הניתוח) | metadata.event_type: 'NETWORK_HTTP' |
המנתח מגדיר את ברירת המחדל של event_type ל-"NETWORK_HTTP". |
| (לוגיקת הניתוח) | metadata.log_type: "AWS_S3_SERVER_ACCESS" |
הכלי לניתוח מגדיר את הערך log_type כ-AWS_S3_SERVER_ACCESS. |
| (Parser Logic) | metadata.product_name: 'גישה לשרת AWS S3' |
הכלי לניתוח מגדיר את הערך product_name כ-AWS S3 Server Access. |
| (Parser Logic) | metadata.product_version: 'HTTP/http_version' |
המנתח מגדיר את product_version באמצעות http_version שחולץ. |
| (לוגיקת הניתוח) | metadata.vendor_name: "AMAZON" |
הכלי לניתוח מחרוזות מגדיר את הערך vendor_name כ-AMAZON. |
| (לוגיקת הניתוח) | network.application_protocol: "HTTP" |
אם השדה ciphersuite לא קיים, מנתח התוכן מגדיר את application_protocol כ-'HTTP'. |
| (Parser Logic) | timestamp |
הכלי לניתוח מחרוזות מגדיר את האירוע timestamp לשעה הנוכחית כשמעבדים את האירוע. |
יומן שינויים
צפייה ביומן השינויים של המנתח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.