איסוף יומנים מ-AWS Security Hub

גרסת מנתח: 8.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של AWS Security Hub ב-Google Security Operations. ‫AWS Security Hub מספק תצוגה מקיפה של התראות אבטחה וממצאים בחשבונות AWS. שליחת הממצאים האלה אל Google SecOps מאפשרת לכם להשתמש ביכולות של Google SecOps כדי לשפר את המעקב ואת זיהוי האיומים.

לפני שמתחילים

חשוב לוודא שמתקיימות דרישות הסף הבאות:

  • מופע של Google SecOps
  • גישה מיוחדת ל-AWS

הגדרת AWS IAM ו-S3

  1. יוצרים קטגוריה ב-Amazon S3 לפי המדריך למשתמש בנושא יצירת קטגוריה.
  2. שומרים את שם הקטגוריה ואת האזור שלה לשימוש מאוחר יותר.
  3. יוצרים משתמש לפי מדריך המשתמש הזה: יצירת משתמש IAM.
  4. בוחרים את המשתמש שנוצר.
  5. לוחצים על הכרטיסייה פרטי כניסה לאבטחה.
  6. בקטע Access Keys, לוחצים על Create Access Key.
  7. בוחרים באפשרות שירות של צד שלישי בתור תרחיש השימוש.
  8. לוחצים על הבא.
  9. אופציונלי: מוסיפים תג תיאור.
  10. לוחצים על יצירת מפתח גישה.
  11. לוחצים על הורדת קובץ CSV כדי לשמור את מפתח הגישה ואת מפתח הגישה הסודי לשימוש מאוחר יותר.
  12. לוחצים על סיום.
  13. לוחצים על הכרטיסייה הרשאות.
  14. בקטע Permissions policies, לוחצים על Add permissions.
  15. לוחצים על הוספת הרשאות.
  16. בוחרים באפשרות צירוף מדיניות ישירות.
  17. מחפשים את המדיניות AmazonS3FullAccess ובוחרים בה.
  18. לוחצים על הבא.
  19. לוחצים על הוספת הרשאות.

יצירת פונקציית Lambda

  1. נכנסים ל-AWS Management Console.
  2. עוברים אל Lambda.
  3. לוחצים על Create Function (יצירת פונקציה) ובוחרים באפשרות Author from Scratch (יצירה מאפס).
  4. נותנים שם לפונקציה, לדוגמה, SecurityHubToS3.
  5. בוחרים באפשרות Python 3.x בשביל זמן הריצה.
  6. מזינים את קוד ה-Lambda שמעביר את הממצאים מ-EventBridge וכותב אותם לקטגוריית S3:

    ‫
    import json
    import boto3
    from datetime import datetime
    
    # Initialize the S3 client
    s3_client = boto3.client('s3')
    
    # S3 bucket where findings will be stored
    bucket_name = 'aws-security-hub-findings-stream'
    
    def lambda_handler(event, context):
       # Extract Security Hub findings from the event
       findings = event['detail']['findings']
    
       # Generate a timestamp for the file name to avoid overwriting
       timestamp = datetime.now().strftime('%Y-%m-%dT%H-%M-%S')
    
       # Generate the S3 object key (file name) based on the timestamp
       object_key = f"security_hub_findings_{timestamp}.json"
    
       # Convert findings to JSON format
       findings_json = json.dumps(findings)
    
       # Upload the findings to S3
       try:
          response = s3_client.put_object(
                Bucket=bucket_name,
                Key=object_key,
                Body=findings_json,
                ContentType='application/json'
          )
          print(f"Successfully uploaded findings to S3: {response}")
       except Exception as e:
          print(f"Error uploading findings to S3: {e}")
          raise e
    
       return {
          'statusCode': 200,
          'body': json.dumps('Successfully processed findings')
       }
    
  7. מגדירים הרשאות ל-Lambda על ידי הוספת תפקיד IAM לפונקציית Lambda עם המדיניות הבאה:

    {
       "Version": "2012-10-17",
       "Statement": [
          {
                "Effect": "Allow",
                "Action": [
                   "s3:PutObject"
                ],
                "Resource": "arn:aws:s3:::aws-security-hub-findings-stream/*"
          }
       ]
    }
    

איך מגדירים את AWS Security Hub להעברת ממצאים באמצעות EventBridge

  1. נכנסים ל-AWS Management Console.
  2. בסרגל החיפוש, מקלידים Security Hub ובוחרים אותו מרשימת השירותים.
  3. לוחצים על הגדרות.
  4. בקטע Integrations (שילובים), מוצאים את EventBridge ולוחצים על Enable (הפעלה).
  5. בסרגל החיפוש, מקלידים EventBridge ובוחרים אותו מרשימת השירותים.
  6. במסוף EventBridge, לוחצים על Rules > Create rule.
  7. מזינים את הגדרת הכלל הבאה:
    1. שם הכלל: נותנים לכלל שם תיאורי, לדוגמה, SendSecurityHubFindingsToS3.
    2. מקור האירוע: בוחרים באפשרות שירותי AWS.
    3. Service Name: בוחרים באפשרות מרכז הבטיחות.
    4. סוג האירוע: בוחרים באפשרות ממצאים של מרכז הבטיחות.
    5. הגדרת היעד: בוחרים באפשרות פונקציית Lambda.
    6. בוחרים את פונקציית Lambda שיצרתם (SecurityHubToS3).
  8. לוחצים על יצירה.

הגדרת פידים

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

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

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

  1. לוחצים על החבילה Amazon Cloud Platform.
  2. מחפשים את סוג היומן AWS Security Hub.
  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. לוחצים על יצירת פיד.

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

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
account principal.group.product_object_id מזהה החשבון ב-AWS שמשויך לממצא.
configurationItem.ARN target.resource.id שם משאב אמזון‏ (ARN) של פריט ההגדרה.
configurationItem.awsAccountId principal.user.userid מזהה החשבון ב-AWS של פריט ההגדרה.
configurationItem.awsRegion target.asset.location.country_or_region האזור ב-AWS של פריט ההגדרה.
configurationItem.configuration.complianceType security_result.summary סוג התאימות של פריט ההגדרה.
configurationItem.configuration.configRuleList[].complianceType security_result.summary סטטוס התאימות של כל כלל הגדרה.
configurationItem.configuration.configRuleList[].configRuleArn security_result.rule_id מספר ה-ARN של כלל AWS Config.
configurationItem.configuration.configRuleList[].configRuleId security_result.about.labels.configRuleId המזהה של כלל AWS Config.
configurationItem.configuration.configRuleList[].configRuleName security_result.rule_name השם של הכלל ב-AWS Config.
configurationItem.configuration.privateIpAddress target.ip כתובת ה-IP הפרטית של פריט ההגדרה.
configurationItem.configuration.publicIpAddress target.ip כתובת ה-IP הציבורית של פריט ההגדרה.
configurationItem.configurationItemCaptureTime target.asset.attribute.creation_time זמן הלכידה של פריט ההגדרה, שהומר לחותמת זמן.
configurationItem.configurationItemStatus target.asset.attribute.labels.Configuration Item Status הסטטוס של פריט ההגדרה.
configurationItem.relationships[].resourceId target.asset.attribute.cloud.vpc.id מזהה המשאב הקשור, שמשמש כמזהה VPC אם הוא תואם ל-vpc.
configurationItem.resourceId target.resource.id מזהה המשאב של פריט ההגדרות האישיות.
configurationItem.resourceName target.resource.name שם המשאב.
configurationItem.resourceType target.resource.resource_subtype סוג המשאב של פריט ההגדרה.
configurationItem.tags.Contact principal.user.user_display_name או principal.user.email_addresses פרטים ליצירת קשר שחולצו מתגים, נותחו לאימייל ולשם משתמש.
configurationItem.tags.OS / configurationItem.tags.Os target.asset.platform_software.platform מערכת ההפעלה מהתגים, ממופה לפלטפורמה אם היא Windows או Linux.
configurationItemDiff.changeType metadata.event_type סוג השינוי, שממופה ל-RESOURCE_WRITTEN או ל-RESOURCE_CREATION.
detail.accountId principal.group.product_object_id מזהה החשבון ב-AWS שמשויך לממצא.
detail.actionDescription detail.actionName detail.description sec_result.description תיאור הממצא.
detail.findings[].AwsAccountId principal.group.product_object_id מזהה החשבון ב-AWS שמשויך לממצא.
detail.findings[].CompanyName detail.findings[].CreatedAt detail.findings[].Description sec_result.description תיאור הממצא.
detail.findings[].FindingProviderFields.Severity.Label sec_result.severity תווית החומרה של הממצא, באותיות רישיות.
detail.findings[].FindingProviderFields.Types[] detail.findings[].FirstObservedAt detail.findings[].GeneratorId detail.findings[].Id detail.findings[].LastObservedAt detail.findings[].ProductArn detail.findings[].ProductFields. פרטים נוספים בהמשך שדות שונים שמשמשים למידע על שדות נוספים, על המנהל ועל היעד.
detail.findings[].ProductName detail.findings[].RecordState detail.findings[].Region target.location.name אזור AWS שבו נמצאה הממצא.
detail.findings[].Resources[].Details. פרטים נוספים בהמשך פרטים על המשאבים שקשורים לממצא.
detail.findings[].Resources[].Id target.resource.product_object_id המזהה של המשאב.
detail.findings[].Resources[].Partition detail.findings[].Resources[].Region target.location.name האזור של המשאב ב-AWS.
detail.findings[].Resources[].Tags detail.findings[].Resources[].Type target.resource.resource_type, target.resource.resource_subtype, metadata.event_type סוג המשאב, שמשמש למיפוי של סוג המשאב, סוג המשנה וסוג האירוע.
detail.findings[].Sample detail.findings[].SchemaVersion detail.findings[].Severity.Label detail.findings[].SourceUrl detail.findings[].Title sec_result.summary שם הממצא.
detail.findings[].Types[] detail.findings[].UpdatedAt detail.findings[].Workflow.Status detail.findings[].WorkflowState detail-type metadata.product_event_type סוג הפרטים של האירוע.
id metadata.product_log_id המזהה של האירוע.
region target.location.name האזור של AWS שבו התרחש האירוע.
resources[] source time version (היגיון של מנתח) metadata.event_timestamp זמן היצירה מרשומת היומן המקורית, שמשמש כחותמת הזמן של האירוע.
(Parser Logic) metadata.log_type הערך שהוגדר הוא AWS_SECURITY_HUB.
(Parser Logic) metadata.product_name הערך שהוגדר הוא AWS Security Hub.
(Parser Logic) metadata.vendor_name הגדרת הערך AMAZON.
(Parser Logic) target.asset.attribute.cloud.environment הערך שהוגדר הוא AMAZON_WEB_SERVICES.
(Parser Logic) metadata.event_type הערך מוגדר ל-USER_RESOURCE_ACCESS כברירת מחדל אם הוא לא ממופה מ-Resources[].Type או מ-configurationItemDiff.changeType. הערך שמוגדר הוא STATUS_UPDATE אם configurationItems קיים ולא מוגדר סוג אירוע אחר. הערך צריך להיות RESOURCE_READ אם יש configurationItem או configurationItems והסטטוס הוא OK או ResourceDiscovered. מגדירים את הערך RESOURCE_DELETION אם configurationItem או configurationItems קיימים והסטטוס הוא ResourceDeleted.
(Parser Logic) metadata.description אם detail.findings[].ProductFields.aws/guardduty/service/serviceName קיים, מגדירים את guardduty.
(Parser Logic) target.asset.attribute.cloud.vpc.resource_type מגדירים את הערך VPC_NETWORK אם configurationItems.relationships[].resourceId תואם ל-vpc.
(Parser Logic) target.resource.resource_type צריך להגדיר את הערך VIRTUAL_MACHINE אם קיים הערך configurationItem או configurationItems. אם לא מוגדר סוג משאב אחר, צריך להגדיר את הערך UNSPECIFIED.
(Parser Logic) target.asset.platform_software.platform ההגדרה היא WINDOWS או LINUX, בהתאם לנוכחות של Windows או (Linux|LINUX) בהודעה של configurationItem. במקרה של configurationItems, ההגדרה נקבעת על סמך configItem.tags.OS או configItem.tags.Os.
(Parser Logic) disambiguation_key השדה הזה מתווסף כשכמה אירועים נוצרים מרישום אחד ביומן.

יומן שינויים

צפייה ביומן השינויים של כלי הניתוח הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.