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

גרסת מנתח הנתונים: 30.0

נתמך ב:

במאמר הזה מוסבר איך אוספים יומנים של AWS CloudTrail על ידי הגדרת פיד של Google Security Operations, ואיך שדות היומן ממופים לשדות של Google SecOps Unified Data Model (UDM).

מידע נוסף זמין במאמר בנושא העברת נתונים ל-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. בוחרים באפשרות יצירת קטגוריה חדשה של S3. אפשר גם להשתמש בקטגוריה קיימת של S3.
  5. מזינים שם לכינוי של AWS KMS או בוחרים מפתח AWS KMS קיים.
  6. אפשר להשאיר את שאר ההגדרות כברירת מחדל וללחוץ על הבא.
  7. בוחרים באפשרות סוג האירוע, מוסיפים אירועי נתונים לפי הצורך ולוחצים על הבא.
  8. בודקים את ההגדרות בקטע בדיקה ויצירה ולוחצים על יצירת נתיב.
  9. במסוף AWS, מחפשים את Amazon S3 Buckets.
  10. לוחצים על קטגוריה ביומן החדשה שנוצרה ובוחרים בתיקייה AWSLogs. לאחר מכן לוחצים על העתקת URI של S3 ושומרים אותו לשימוש בשלבים הבאים.

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

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

  1. מפעילים את AWS CloudTrail ומגדירים אותו כך שיעביר יומנים לקטגוריית S3 באמצעות עקבות חדשים או קיימים.
  2. פותחים את מסוף AWS SNS ויוצרים נושא חדש מסוג Standard. נותנים לו שם, למשל 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מינוייםיצירת מינוי, מגדירים את הפרוטוקול ל-SQS ואת נקודת הקצה ל-ARN של תור SQS.

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

    דוגמה לדפוס אירוע:

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

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

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

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

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

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

הגדרת הרשאות למפתחות 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 Queue Access Key ID (מזהה מפתח גישה לתור 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.