איסוף יומנים של AWS CloudTrail
גרסת כלי הניתוח: 30.0
במאמר הזה מוסבר איך להגדיר פיד של Google Security Operations כדי לאסוף יומנים של AWS CloudTrail, ואיך השדות ביומנים ממופים לשדות של מודל הנתונים המאוחד (UDM) של Google SecOps.
מידע נוסף זמין במאמר הטמעת נתונים ב-Google SecOps.
פריסה טיפוסית כוללת את AWS CloudTrail ואת הפיד של Google SecOps שמוגדר לשליחת יומנים אל Google SecOps. יכול להיות שהפריסה שלכם תהיה שונה מהפריסה הרגילה שמתוארת במסמך הזה. הפריסה כוללת את הרכיבים הבאים:
AWS CloudTrail: הפלטפורמה שבה נאספים היומנים.
AWS S3: הפלטפורמה שבה נשמרים היומנים.
פיד Google SecOps: פיד Google SecOps שאחראי לאחזור יומנים מ-AWS S3 ולכתיבת יומנים ב-Google SecOps.
Google SecOps: הפלטפורמה ששומרת ומנתחת את היומנים מ-AWS CloudTrail.
תווית הטמעה מזהה את מנתח התוכן שמנרמל נתוני יומן גולמיים לפורמט UDM מובנה. המידע במסמך הזה רלוונטי למנתח התוכן עם תווית ההטמעה AWS_CLOUDTRAIL.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- חשבון AWS
- עומדים בדרישות המוקדמות לשימוש ב-AWS CloudTrail. מידע נוסף מופיע במאמר בנושא הגדרת AWS CloudTrail.
- כל המערכות בארכיטקטורת הפריסה משתמשות באזור הזמן UTC
השלבים הבסיסיים להעברת יומנים מ-S3 באמצעות SQS
בקטע הזה מוסבר איך להטמיע יומנים של AWS CloudTrail במכונה של Google SecOps. השלבים מתארים איך לעשות את זה באמצעות Amazon S3 עם Amazon SQS כסוג המקור של הפיד.
הגדרת AWS CloudTrail ו-S3
בתהליך הזה, מגדירים שיומני AWS CloudTrail ייכתבו לקטגוריית S3.
- במסוף AWS, מחפשים את CloudTrail.
- לוחצים על יצירת מסלול.
- מזינים שם לניסיון.
- בוחרים באפשרות יצירת קטגוריה חדשה של S3. אפשר גם להשתמש בקטגוריית S3 קיימת.
- מזינים שם לכינוי של AWS KMS או בוחרים מפתח AWS KMS קיים.
- אפשר להשאיר את שאר ההגדרות כברירת מחדל וללחוץ על הבא.
- בוחרים סוג אירוע, מוסיפים אירועי נתונים לפי הצורך ולוחצים על הבא.
- בודקים את ההגדרות בקטע בדיקה ויצירה ולוחצים על יצירת נתיב.
- במסוף AWS, מחפשים את Amazon S3 Buckets.
- לוחצים על קטגוריית היומנים החדשה שנוצרה ובוחרים את התיקייה AWSLogs. לוחצים על Copy S3 URI ושומרים אותו לשימוש בשלבים הבאים.
הגדרה של תור SQS רגיל ו-SNS
אם אתם משתמשים בתור SQS, הוא צריך להיות תור Standard ולא תור FIFO.
- מפעילים את AWS CloudTrail ומגדירים אותו כך שיעביר יומנים לקטגוריית S3 באמצעות Trail חדש או קיים.
- פותחים את מסוף AWS SNS ויוצרים נושא חדש מסוג Standard. נותנים לו שם, למשל CloudTrail-Notification-Topic.
יוצרים תור SQS באמצעות מסוף AWS SQS, למשל CloudTrail-Notification-Queue, ומעדכנים את מדיניות הגישה שלו כדי לאפשר ל-ARN של נושא SNS לשלוח הודעות. למידע נוסף על יצירת תורים ב-SQS, קראו את המאמר תחילת העבודה עם Amazon SQS.
קטע מדיניות לדוגמה ב-SQS:
{ "Version": "2012-10-17", "Id": `PolicyForSNS`, "Statement": [ { "Sid": "AllowSNS", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:REGION:ACCOUNT_ID:CloudTrail-Notification-Queue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:REGION:ACCOUNT_ID:CloudTrail-Notification-Topic"} } } ] }עוברים אל SNS topic (נושא SNS) ← Subscriptions (מינויים) ← Create subscription (יצירת מינוי), מגדירים את Protocol (פרוטוקול) ל-SQS ואת Endpoint (נקודת קצה) ל-ARN של תור ה-SQS.
CloudTrail לא דוחף באופן טבעי יומנים חדשים ל-SNS. כדי להפעיל התראות, אפשר להשתמש בבורר אירועים של CloudTrail לאירועי ניהול, או להשתמש בשילוב של CloudTrail עם CloudWatch Logs ואז ליצור כלל אירועים של CloudWatch שמפעיל התראות על ידי הגדרת נושא SNS כיעד. פרטים נוספים זמינים במאמר בנושא הגדרת התראות בקטגוריית S3.
דוגמה לדפוס אירוע:
{ "source": ["aws.s3"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventName": ["PutObject"], "requestParameters": { "bucketName": [`CloudTrail-Notification-Topic`] } } }מוודאים שהרשאות או מדיניות IAM מאפשרות ל-CloudWatch Events לפרסם ב-SNS, ומוודאים של-SNS יש הרשאה לשלוח הודעות ל-SQS.
הגדרת משתמש AWS IAM
מגדירים משתמש AWS IAM ש-Google SecOps ישתמש בו כדי לגשת לתור SQS (אם נעשה בו שימוש) ולמאגר S3.
- במסוף AWS, מחפשים IAM.
- לוחצים על משתמשים ואז במסך הבא לוחצים על יצירת משתמשים.
- מזינים שם למשתמש, לדוגמה, chronicle-feed-user, ובוחרים באפשרות Provide user access to the AWS Management Console (מתן גישת משתמש ל-AWS Management Console).
- בוחרים באפשרות Attach existing policies directly (צירוף מדיניות קיימת ישירות) ובוחרים באפשרות AmazonS3ReadOnlyAccess (גישת קריאה בלבד ל-Amazon S3) או AmazonS3FullAccess (גישה מלאה ל-Amazon S3), לפי הצורך. ההרשאה AmazonS3FullAccess תשמש אם Google SecOps צריך לנקות את קטגוריות S3 אחרי קריאת היומנים, כדי לבצע אופטימיזציה של עלויות האחסון ב-AWS S3.
- כחלופה מומלצת לשלב הקודם, אפשר ליצור מדיניות בהתאמה אישית כדי להגביל את הגישה רק לקטגוריית ה-S3 שצוינה. לוחצים על Create policy ופועלים לפי ההוראות של AWS כדי ליצור מדיניות בהתאמה אישית.
- כשמחילים מדיניות, חשוב לוודא שכוללים את
sqs:DeleteMessage. Google SecOps לא יכול למחוק הודעות אםsqs:DeleteMessageההרשאה לא מצורפת לתור SQS. כל ההודעות מצטברות בצד של AWS, וזה גורם לעיכוב כי Google SecOps מנסה שוב ושוב להעביר את אותם קבצים. - לוחצים על Next:Tags.
- מוסיפים תגים לפי הצורך ולוחצים על הבא:בדיקה.
- בודקים את ההגדרות ולוחצים על Create user.
- אחרי שיוצרים את המשתמש, עוברים לכרטיסייה Security Credentials (פרטי כניסה מאובטחים) ולוחצים על Create Access Key (יצירת מפתח גישה).
- בוחרים באפשרות CLI ולוחצים על Next:Tags.
- מוסיפים תגים לפי הצורך ולוחצים על יצירת מפתח גישה: בדיקה.
מעתיקים את מזהה מפתח הגישה ואת מפתח הגישה הסודי של המשתמש שנוצר, כדי להשתמש בהם בשלב הבא.
כדי למצוא את
SubjectID, פועלים לפי השלבים הבאים:- מתחילים בתהליך ההגדרה של פיד AWS CloudTrail ב-Google SecOps.
- עוברים לקטגוריית Amazon S3 הייעודית ובודקים אם יש ביומני AWS CloudTrail רשומות שקשורות לניסיון להגדיר את הפיד.
- פותחים את רשומת היומן הרלוונטית ומחפשים את הקטע
userIdentityבנתוני ה-JSON הגולמיים. - בקטע הזה, מאתרים את השדה
principalIdאוuserName. הערך המספרי שמופיע כאן הוא ה-SubjectID הייחודי שלכם. - מעתיקים את SubjectID ומוסיפים אותו למדיניות ההרשאות של תפקיד ה-IAM ב-AWS כדי להעניק את הרשאות הגישה הנדרשות.
הגדרת הרשאות למפתחות KMS
כדי לפענח את יומני CloudTrail, שמוצפנים בצד השרת, נדרש מפתח KMS. שירות AWS KMS מספק הצפנה ואבטחה משופרות לנתונים רגישים שמאוחסנים ב-Amazon S3.
- במסוף AWS, מחפשים את Key Management Service (KMS).
- לוחצים על Create Key:Next.
- מוסיפים כינוי למפתח. אפשר גם להוסיף תיאור ותגים אם צריך. לוחצים על הבא: בדיקה.
- אחרי שבודקים את ההגדרות, לוחצים על הבא.
- בוחרים את המשתמשים המרכזיים שצריכה להיות להם גישה למפתח הזה, ואז לוחצים על סיום.
הגדרת פידים
יש שתי נקודות כניסה שונות להגדרת פידים בפלטפורמת Google SecOps:
- הגדרות SIEM > פידים > הוספה
- מרכז התוכן > חבילות תוכן > מתחילים
איך מגדירים את הפיד של AWS CloudTrail
- לוחצים על חבילת Amazon Cloud Platform.
- בסוג היומן AWS CloudTrail, מציינים את הערכים הבאים:
מציינים ערכים בשדות הבאים:
- סוג המקור: Amazon SQS V2
- Queue Name (שם התור): השם של תור ה-SQS שממנו ייקראו הנתונים
- S3 URI: מזהה ה-URI של הקטגוריה.
s3://your-log-bucket-name/- מחליפים את
your-log-bucket-nameבשם בפועל של קטגוריית ה-S3.
- מחליפים את
אפשרויות מחיקה של מקור: בוחרים את אפשרות המחיקה בהתאם להעדפות ההטמעה שלכם.
גיל מקסימלי של קובץ: כולל קבצים ששונו במספר הימים האחרונים. ברירת המחדל היא 180 ימים.
מזהה מפתח הגישה לתור SQS: מפתח גישה לחשבון שהוא מחרוזת אלפאנומרית באורך 20 תווים.
מפתח גישה סודי לתור SQS: מפתח גישה לחשבון שהוא מחרוזת אלפאנומרית באורך 40 תווים.
אפשרויות מתקדמות
- שם הפיד: ערך שמאכלס מראש את השדה ומזהה את הפיד.
- מרחב השמות של הנכס: מרחב השמות שמשויך לפיד.
- תוויות להעברה: תוויות שמוחלות על כל האירועים מהפיד הזה.
לוחצים על יצירת פיד.
למידע נוסף על הגדרת כמה פידים לסוגים שונים של יומנים בתוך משפחת המוצרים הזו, אפשר לעיין במאמר בנושא הגדרת פידים לפי מוצר.
סוגי היומנים הנתמכים של AWS CloudTrail
מנתח הנתונים של AWS CloudTrail תומך בשירותים הבאים:
- apigateway.amazonaws.com
- appconfig.amazonaws.com
- autoscaling.amazonaws.com
- cloud9.amazonaws.com
- cloudsearch.amazonaws.com
- cloudshell.amazonaws.com
- cloudtrail.amazonaws.com
- config.amazonaws.com
- devicefarm.amazonaws.com
- ds.amazonaws.com
- dynamodb.amazonaws.com
- ec2-instance-connect.amazonaws.com
- ec2.amazonaws.com
- ecr-public.amazonaws.com
- ecr.amazonaws.com
- ecs.amazonaws.com
- eks.amazonaws.com
- elasticache.amazonaws.com
- elasticloadbalancing.amazonaws.com
- firehose.amazonaws.com
- guardduty.amazonaws.com
- health.amazonaws.com
- iam.amazonaws.com
- imagebuilder.amazonaws.com
- kinesis.amazonaws.com
- kinesisanalytics.amazonaws.com
- kinesisvideo.amazonaws.com
- kms.amazonaws.com
- lambda.amazonaws.com
- logs.amazonaws.com
- macie2.amazonaws.com
- monitoring.amazonaws.com
- network-firewall.amazonaws.com
- organizations.amazonaws.com
- quicksight.amazonaws.com
- ram.amazonaws.com
- rds.amazonaws.com
- resource-explorer-2.amazonaws.com
- resource-groups.amazonaws.com
- route53-recovery-readiness.amazonaws.com
- route53.amazonaws.com
- route53domains.amazonaws.com
- route53resolver.amazonaws.com
- s3-outposts.amazonaws.com
- s3.amazonaws.com
- s3express.amazonaws.com
- secretsmanager.amazonaws.com
- securityhub.amazonaws.com
- ses.amazonaws.com
- signin.amazonaws.com
- ssm.amazonaws.com
- sts.amazonaws.com
- waf-regional.amazonaws.com
- waf.amazonaws.com
- wafv2.amazonaws.com
פורמטים נתמכים של יומנים ב-AWS CloudTrail
המנתח של AWS CloudTrail תומך ביומנים בפורמט JSON.
יומני דוגמה נתמכים של AWS CloudTrail
JSON:
{ "Records": [{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAXELJRGZMPHEYTK4Q4:redlock", "arn": "arn:aws:sts::111111111111:assumed-role/PrismaCloudReadOnlyRole/redlock", "accountId": "111111111111", "accessKeyId": "ASIAXELJRGZMNUCV3DC4", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAXELJRGZMPHEYTK4Q4", "arn": "arn:aws:iam::111111111111:role/PrismaCloudReadOnlyRole", "accountId": "111111111111", "userName": "PrismaCloudReadOnlyRole" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-07-01T03:20:01Z", "mfaAuthenticated": "false" } } }, "eventTime": "2021-07-01T03:35:42Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "eu-west-1", "sourceIPAddress": "198.51.100.0", "userAgent": "aws-sdk-java/1.11.1025Linux/4.14.232-176.381.amzn2.x86_64OpenJDK_64-Bit_Server_VM/11.0.10+9java/11.0.10groovy/2.5.12vendor/AdoptOpenJDKcfg/retry-mode/legacy", "requestParameters": { "keyId": "11a011a1-1010-11a1-a0aa-c4e1a9367642" }, "responseElements": null, "requestID": "11a011a1-1010-11a1-a0aa-604ac86fc50e", "eventID": "11a011a1-1010-11a1-a0aa-17ef2bdeb889", "readOnly": true, "resources": [{ "accountId": "111111111111", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:111111111111:key/11a011a1-1010-11a1-a0aa-c4e1a9367642" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111111111111", "eventCategory": "Management" }] }
מידע נוסף על מיפוי שדות ומיפוי UDM זמין במאמר מיפוי שדות ב-AWS Cloudtrail.
יומן שינויים
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.