איסוף יומנים של AWS CloudTrail

גרסת המנתח: 30.0

נתמך ב:

במאמר הזה מוסבר איך לאסוף יומני AWS CloudTrail באמצעות הגדרת פיד של Google Security Operations, ואיך השדות ביומן ממופים לשדות של Unified Data Model ‏(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.

  1. במסוף AWS, מחפשים את CloudTrail.
  2. לוחצים על יצירת מסלול.
  3. מזינים שם למסלול.
  4. בוחרים באפשרות Create new S3 bucket. אפשר גם להשתמש בקטגוריית S3 קיימת.
  5. נותנים שם ל-AWS KMS alias או בוחרים AWS KMS Key קיים.
  6. אפשר להשאיר את ההגדרות האחרות כברירת מחדל וללחוץ על הבא.
  7. בוחרים סוג אירוע, מוסיפים אירועי נתונים לפי הצורך ולוחצים על הבא.
  8. בודקים את ההגדרות בקטע Review and create ולוחצים על Create trail.
  9. במסוף AWS, מחפשים את Amazon S3 Buckets.
  10. לוחצים על קטגוריית היומנים החדשה שנוצרה ובוחרים בתיקייה AWSLogs. לוחצים על Copy S3 URI ושומרים אותו לשימוש בשלבים הבאים.

הגדרת תור SQS רגיל ו-SNS

אם משתמשים בתור SQS, הוא חייב להיות תור רגיל ולא תור FIFO.

  1. מפעילים את AWS CloudTrail ומגדירים אותו כך שיעביר יומנים לקטגוריית S3 באמצעות נתיב חדש או קיים.
  2. פותחים את מסוף AWS SNS ויוצרים נושא רגיל חדש. נותנים לו שם, למשל CloudTrail-Notification-Topic.
  3. יוצרים תור 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"}
             }
          }
       ]
    }
    
  4. עוברים אל SNS topic (נושא SNS) ‏← Subscriptions (מינויים) ← Create subscription (יצירת מינוי), מגדירים את Protocol (פרוטוקול) ל-SQS ואת Endpoint (נקודת קצה) ל-ARN של תור ה-SQS.

  5. ‫CloudTrail לא מעביר באופן טבעי יומנים חדשים ל-SNS. כדי להפעיל התראות, אתם יכולים להשתמש ב-CloudTrail Event Selector for Management Events, או להשתמש ב-CloudTrail integration with CloudWatch Logs ואז ליצור CloudWatch Event Rule שמפעיל התראות על ידי הגדרת נושא SNS כיעד. פרטים נוספים זמינים במאמר הגדרת התראות בקטגוריית S3.

    דוגמה לתבנית אירוע:

    {
       "source": ["aws.s3"],
       "detail-type": ["AWS API Call via CloudTrail"],
       "detail": {
          "eventName": ["PutObject"],
          "requestParameters": {
             "bucketName": [`CloudTrail-Notification-Topic`]
          }
       }
    }
    
  6. מוודאים שהתפקידים או כללי המדיניות של IAM מאפשרים לאירועים של CloudWatch לפרסם ב-SNS, ומוודאים של-SNS יש הרשאה לשלוח הודעות ל-SQS.

הגדרת משתמש AWS IAM

מגדירים משתמש AWS IAM ש-Google SecOps ישתמש בו כדי לגשת גם לתור SQS (אם משתמשים בו) וגם לקטגוריית S3.

  1. במסוף AWS, מחפשים את IAM.
  2. לוחצים על Users, ובמסך הבא לוחצים על Create Users.
  3. נותנים שם למשתמש, לדוגמה chronicle-feed-user, ובוחרים באפשרות Provide user access to the AWS Management Console.
  4. בוחרים באפשרות Attach existing policies directly (צירוף ישיר של כללי מדיניות קיימים) ובוחרים באפשרות AmazonS3ReadOnlyAccess (גישה לקריאה בלבד ל-AmazonS3) או באפשרות AmazonS3FullAccess (גישה מלאה ל-AmazonS3), לפי הצורך. אם Google SecOps צריך לנקות את הקטגוריות של S3 אחרי קריאת היומנים, כדי לייעל את עלויות האחסון ב-AWS S3, צריך להשתמש ב-AmazonS3FullAccess.
  5. כחלופה מומלצת לשלב הקודם, אתם יכולים להגביל עוד יותר את הגישה רק לקטגוריית S3 שצוינה על ידי יצירת מדיניות בהתאמה אישית. לוחצים על Create policy ופועלים לפי ההוראות של AWS כדי ליצור מדיניות בהתאמה אישית.
  6. כשמחילים מדיניות, חשוב לוודא שכללתם את sqs:DeleteMessage. אם ההרשאה sqs:DeleteMessage לא מצורפת לתור SQS, מערכת Google SecOps לא יכולה למחוק הודעות. כל ההודעות מצטברות בצד של AWS, מה שגורם לעיכוב כי Google SecOps מנסה שוב ושוב להעביר את אותם קבצים.
  7. לוחצים על Next:Tags.
  8. מוסיפים תגים לפי הצורך ולוחצים על Next:Review.
  9. בודקים את ההגדרות ולוחצים על Create user.
  10. אחרי שיוצרים את המשתמש, עוברים לכרטיסייה פרטי כניסה מאובטחים ולוחצים על Create Access Key.
  11. בוחרים באפשרות CLI ולוחצים על Next:Tags.
  12. מוסיפים תגים אם צריך, ואז לוחצים על Create Access Key: Review.
  13. מעתיקים את מזהה מפתח הגישה ואת מפתח הגישה הסודי של המשתמש שנוצר, כדי להשתמש בהם בשלב הבא.

    כדי למצוא את SubjectID, פועלים לפי השלבים הבאים:

    1. מתחילים את תהליך ההגדרה של פיד AWS CloudTrail ב-Google SecOps.
    2. עוברים לקטגוריה הייעודית של Amazon S3 ובודקים אם יש ביומני AWS CloudTrail רשומות שקשורות לניסיון להגדיר את הפיד.
    3. פותחים את רשומת היומן הרלוונטית ומחפשים את הקטע userIdentity בנתוני ה-JSON הגולמיים.
    4. בקטע הזה, מאתרים את השדה principalId או userName. הערך המספרי שמופיע כאן הוא ה-SubjectID הייחודי שלכם.
    5. מעתיקים את ה-SubjectID הזה ומוסיפים אותו למדיניות האמון של תפקיד AWS IAM כדי לתת את הרשאות הגישה הנדרשות.

הגדרת הרשאות למפתחות KMS

כדי לפענח את יומני CloudTrail, שמוצפנים בצד השרת, נדרש מפתח KMS. ‫AWS KMS מספק הצפנה ואבטחה משופרות לנתונים רגישים שמאוחסנים ב-Amazon S3.

  1. במסוף AWS, מחפשים את Key Management Service (KMS).
  2. לוחצים על Create Key:Next.
  3. מוסיפים שם חלופי למפתח. אם רוצים, מוסיפים תיאור ותגים. לוחצים על הבא: בדיקה.
  4. אחרי שבודקים את ההגדרות, לוחצים על הבא.
  5. בוחרים את המשתמשים במפתח שצריכה להיות להם גישה למפתח הזה, ולוחצים על סיום.

הגדרת פידים

יש שתי נקודות כניסה שונות להגדרת פידים בפלטפורמת Google SecOps:

  • הגדרות > ניהול נתונים > פידים > הוספת פיד חדש (בפלטפורמה של SIEM בלבד, הגדרות > פידים > הוספת פיד חדש)
  • מרכז התוכן > חבילות תוכן > מתחילים

איך מגדירים את הפיד של AWS CloudTrail

  1. לוחצים על החבילה Amazon Cloud Platform.
  2. בסוג היומן AWS CloudTrail, מציינים את הערכים הבאים:
  3. מציינים ערכים בשדות הבאים:

    • סוג המקור: Amazon SQS V2
    • ‫Queue Name (שם התור): שם התור ב-SQS שממנו ייקראו הנתונים
    • ‫S3 URI: מזהה ה-URI של הקטגוריה.
      • s3://your-log-bucket-name/
        • מחליפים את your-log-bucket-name בשם האמיתי של קטגוריית S3.
    • אפשרויות מחיקה של מקור: בוחרים את אפשרות המחיקה בהתאם להעדפות ההטמעה שלכם.

    • גיל הקובץ המקסימלי: כולל קבצים ששונו במספר הימים האחרונים. ברירת המחדל היא 180 ימים.

    • מזהה מפתח הגישה לתור SQS: מפתח גישה לחשבון שהוא מחרוזת אלפאנומרית באורך 20 תווים.

    • מפתח גישה סודי לתור SQS: מפתח גישה לחשבון שמורכב ממחרוזת של 40 תווים אלפאנומריים.

    אפשרויות מתקדמות

    • שם הפיד: ערך שמולא מראש ומזהה את הפיד.
    • מרחב השמות של הנכס: מרחב השמות שמשויך לפיד.
    • תוויות הטמעה: תוויות שנוספו לכל האירועים מהפיד הזה.
  4. לוחצים על יצירת פיד.

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

סוגי היומנים הנתמכים של 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.