איסוף יומני גישה של AWS API Gateway

גרסת המנתח: 7.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני גישה של Amazon API Gateway ב-Google Security Operations באמצעות AWS CloudWatch Logs ו-Kinesis Data Firehose. ‫Amazon API Gateway מספק ממשקי API מסוג REST ו-HTTP כדי ליצור ולנהל ממשקי API בקנה מידה נרחב. יומני הגישה עוזרים לעקוב אחרי השימוש ב-API ולפתור בעיות. השילוב הזה מעביר את היומנים האלה ל-Google SecOps לצורך ניתוח ומעקב.

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

חשוב לוודא שיש לכם את הדברים הבאים:

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

הפעלת רישום ביומן של גישה ל-Amazon API Gateway (ל-CloudWatch Logs)

  1. עוברים אל AWS Console > API Gateway.
  2. בממשקי API בארכיטקטורת REST:

    • פותחים את Stage > Logs/Tracing > enable Access logging.
    • Log format: בוחרים באפשרות JSON.

      {
        "requestId":"$context.requestId",
        "ip":"$context.identity.sourceIp",
        "requestTime":"$context.requestTime",
        "httpMethod":"$context.httpMethod",
        "routeKey":"$context.routeKey",
        "status":"$context.status",
        "protocol":"$context.protocol",
        "responseLength":"$context.responseLength",
        "integrationLatency":"$context.integrationLatency",
        "error":"$context.error.message"
      }
      
    • קבוצת יומנים של CloudWatch Logs: בוחרים או יוצרים קבוצת יומנים (לדוגמה, /aws/apigateway/access).

  3. ב-HTTP APIs:

    • בוחרים את ה-API > Monitor > Logging.
    • לוחצים על שלב > עריכה.
    • מפעילים את האפשרות רישום גישה ביומן.
    • משתמשים באותו פורמט של יומן JSON כמו למעלה.
    • קבוצת יומנים של CloudWatch Logs: בוחרים או יוצרים קבוצת יומנים (לדוגמה, /aws/apigateway/access).
  4. לוחצים על Save.

הגדרת פיד ב-Google SecOps להטמעת יומנים של Amazon API Gateway

  1. עוברים אל הגדרות > ניהול נתונים > פידים. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פידים.
  2. לוחצים על + הוספת פיד חדש.
  3. בשדה שם הפיד, מזינים Amazon API Gateway - CloudWatch via Firehose.
  4. בוחרים באפשרות Amazon Data Firehose בתור Source type.
  5. בוחרים באפשרות Amazon API Gateway בתור Log type.
  6. לוחצים על הבא.
  7. מציינים ערכים לפרמטרים הבאים של הקלט:
    • תו מפריד לפיצול: אופציונלי n
    • מרחב השמות של הנכס: aws.api_gateway
    • תוויות הטמעת נתונים: לדוגמה, source=apigw_access, aws_region=<your-region>
  8. לוחצים על הבא.
  9. בודקים את הגדרות הפיד ולוחצים על שליחה.
  10. בפרטי הפיד, לוחצים על יצירת מפתח סודי ומעתיקים את המפתח הסודי.
  11. מעתיקים את כתובת ה-URL של נקודת הקצה (endpoint) של הפיד ב-HTTPS מהקטע פרטי נקודת הקצה.
  12. יוצרים מפתח API של Google Cloud ב-APIs & Services > Credentials > Create credentials > API key, ומגבילים אותו ל-Chronicle API.
  13. מעתיקים את מפתח ה-API ושומרים אותו במקום מאובטח.

הגדרת Amazon Kinesis Data Firehose (ישירות ל-Google SecOps)

  1. ב-AWS Console, עוברים אל Kinesis > Data Firehose > Create delivery stream.
  2. מזינים את פרטי ההגדרה הבאים:
    • מקור: בוחרים באפשרות PUT ישיר או מקורות אחרים.
    • Destination: בוחרים באפשרות HTTP endpoint.
    • כתובת ה-URL של נקודת הקצה מסוג HTTP: מזינים את ENDPOINT_URL?key=API_KEY (משתמשים בכתובת ה-URL של נקודת הקצה מסוג HTTPS של הפיד ובמפתח ה-API מהשלב הקודם).
    • שיטת HTTP: בוחרים באפשרות POST.
    • מפתח גישה: מדביקים את המפתח הסודי שנוצר בפיד.
    • הנחיות לאגירת נתונים: מגדירים שטח אחסון זמני = ‎1 MiB, מרווח מאגר נתונים = 60 שניות.
    • דחיסה: בוחרים באפשרות מושבת.
    • גיבוי S3: בוחרים באפשרות מושבת.
    • משאירים את ההגדרות של retry ו-logging כברירת מחדל.
  3. לוחצים על Create delivery stream. (לדוגמה, cwlogs-to-secops.)

הגדרת הרשאות IAM והרשמה לקבוצת היומנים

  1. במסוף AWS, עוברים אל IAM > Policies > Create policy > JSON.
    1. בעורך ה-JSON, מזינים את המדיניות הבאה:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "firehose:PutRecord",
            "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
        }
      ]
    }
    
    • מחליפים את <region> ואת <account-id> באזור ובמזהה החשבון ב-AWS.
  2. נותנים למדיניות את השם CWLtoFirehoseWrite ולוחצים על Create policy.

  3. עוברים אל IAM > Roles > Create role.

  4. בוחרים באפשרות Custom trust policy ומזינים את הפרטים הבאים:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "logs.<your-region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  5. מצרפים את המדיניות CWLtoFirehoseWrite לתפקיד.

  6. נותנים לתפקיד את השם CWLtoFirehoseRole ולוחצים על יצירת תפקיד.

  7. עוברים אל CloudWatch > Logs > Log groups.

  8. בוחרים את קבוצת היומנים של API Gateway שיצרתם קודם.

  9. פותחים את הכרטיסייה Subscription filters ולוחצים על Create.

  10. בוחרים באפשרות Create Amazon Kinesis Data Firehose subscription filter.

  11. קובעים את ההגדרות הבאות:

    • יעד: מקור הנתונים cwlogs-to-secops.
    • מתן הרשאה: תפקיד CWLtoFirehoseRole.
    • שם המסנן: מזינים all-events.
    • תבנית סינון: משאירים את השדה ריק כדי לשלוח את כל האירועים.
  12. לוחצים על התחלת השידור.

יומן שינויים

הצגת יומן השינויים של המנתח הזה

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