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

גרסת כלי הניתוח: 7.0

נתמך ב:

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

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

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

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

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

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

    • פותחים את Stage > Logs/Tracing > enable Access logging.
    • פורמט היומן: בוחרים באפשרות 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 (מעקב אחרי קריאות ל-API > מעקב > רישום ביומן).
    • בוחרים באפשרות שלב > עריכה.
    • מפעילים את האפשרות רישום ביומן של גישה.
    • משתמשים באותו פורמט יומן JSON כמו למעלה.
    • קבוצת יומנים של CloudWatch Logs: בוחרים או יוצרים קבוצת יומנים (לדוגמה, /aws/apigateway/access).
  4. לוחצים על Save.

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

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על + הוספת פיד חדש.
  3. בשדה Feed name, מזינים Amazon API Gateway - CloudWatch via Firehose.
  4. בוחרים באפשרות Amazon Data Firehose בתור סוג המקור.
  5. בוחרים באפשרות Amazon API Gateway בתור סוג היומן.
  6. לוחצים על הבא.
  7. מציינים ערכים לפרמטרים הבאים של הקלט:
    • תו מפריד לפיצול: אופציונלי n
    • מרחב שמות של נכס: aws.api_gateway
    • תוויות של הטמעת נתונים: לדוגמה, source=apigw_access, aws_region=<your-region>
  8. לוחצים על הבא.
  9. בודקים את הגדרות הפיד ולוחצים על שליחה.
  10. בפרטים של הפיד, לוחצים על יצירת מפתח סודי ומעתיקים את המפתח הסודי.
  11. מעתיקים את כתובת ה-URL של נקודת הקצה של הפיד ב-HTTPS מפרטי נקודת הקצה.
  12. יוצרים מפתח Google Cloud API ב-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 ישירה או מקורות אחרים.
    • יעד: בוחרים באפשרות נקודת קצה (endpoint) מסוג HTTP.
    • כתובת ה-URL של נקודת הקצה (endpoint) בפרוטוקול HTTP: מזינים ENDPOINT_URL?key=API_KEY (משתמשים בכתובת ה-URL של נקודת הקצה (endpoint) של הפיד בפרוטוקול HTTPS ובמפתח ה-API מהשלב הקודם).
    • שיטת HTTP: בוחרים באפשרות POST.
    • מפתח גישה: מדביקים את המפתח הסודי שנוצר בפיד.
    • הצעות לאגירת נתונים: מגדירים את שטח אחסון זמני = 1 MiB, מרווח אגירה = 60 שניות.
    • דחיסה: בוחרים באפשרות מושבת.
    • גיבוי S3: בוחרים באפשרות מושבת.
    • משאירים את ההגדרות של ניסיון חוזר ורישום ביומן כברירת מחדל.
  3. לוחצים על יצירת מקור נתונים. (לדוגמה, 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 ולוחצים על יצירת מדיניות.

  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. פותחים את הכרטיסייה מסנני מינוי ולוחצים על יצירה.

  10. בוחרים באפשרות יצירת מסנן מינוי ל-Amazon Kinesis Data Firehose.

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

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

יומן שינויים

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

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