收集 AWS API Gateway 存取記錄

剖析器版本:7.0

支援的服務:

本文說明如何使用 AWS CloudWatch Logs 和 Kinesis Data Firehose,將 Amazon API Gateway 存取記錄擷取至 Google Security Operations。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」> 啟用「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 log group:選擇或建立記錄群組 (例如 /aws/apigateway/access)。

  3. HTTP API:

    • 依序選取「API」>「監控」>「Logging」。
    • 依序選取「階段」>「編輯」。
    • 啟用「Access logging」(存取記錄)。
    • 請使用與上述相同的 JSON 記錄格式。
    • CloudWatch Logs log group:選擇或建立記錄群組 (例如 /aws/apigateway/access)。
  4. 按一下「儲存」。

在 Google SecOps 設定動態饋給,擷取 Amazon API Gateway 記錄

  1. 依序前往「設定」>「資料管理」>「動態饋給」。如果使用的是 SIEM 專用平台,請依序前往「設定」>「動態饋給」。
  2. 按一下「+ 新增動態饋給」。
  3. 在「Feed name」(動態饋給名稱) 欄位中輸入 Amazon API Gateway - CloudWatch via Firehose。
  4. 「Source type」(來源類型) 請選取「Amazon Data Firehose」。
  5. 在「Log type」(記錄類型) 選取「Amazon API Gateway」。
  6. 點選「下一步」。
  7. 指定下列輸入參數的值:
    • 分割分隔符號:選用 n
    • 資產命名空間:aws.api_gateway
    • 擷取標籤:例如 source=apigw_access、aws_region=<your-region>
  8. 點選「下一步」。
  9. 檢查動態饋給設定,然後按一下「提交」。
  10. 在動態饋給「詳細資料」中,按一下「產生密鑰」,然後複製「密鑰」。
  11. 從「Endpoint Information」複製「Feed HTTPS endpoint URL」。
  12. 依序前往「API 和服務」>「憑證」>「建立憑證」>「API 金鑰」,建立 Google Cloud API 金鑰,並將金鑰限制為 Chronicle API。
  13. 複製 API 金鑰並儲存在安全的位置。

設定 Amazon Kinesis Data Firehose (直接傳送至 Google SecOps)

  1. 在 AWS 控制台中,依序前往「Kinesis」>「Data Firehose」>「Create delivery stream」。
  2. 提供下列設定詳細資料:
    • 來源:選取「Direct PUT or other sources」(直接 PUT 或其他來源)。
    • 目的地:選擇「HTTP 端點」。
    • HTTP 端點網址:輸入 ENDPOINT_URL?key=API_KEY (使用上一步的動態饋給 HTTPS 端點網址和 API 金鑰)。
    • HTTP 方法:選取「POST」。
    • 存取金鑰:貼上在動態饋給中產生的密鑰。
    • 緩衝提示:將「緩衝區空間」設為 1 MiB,「緩衝時間間隔」設為 60 秒。
    • 壓縮:選取「停用」。
    • S3 備份:選取「Disabled」(已停用)。
    • 「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 區域和帳戶 ID。
  2. 將政策命名為 CWLtoFirehoseWrite,然後點選「建立政策」。

  3. 依序前往 「IAM」 > 「角色」 > 「建立角色」。

  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,然後按一下「Create role」(建立角色)。

  7. 依序前往「CloudWatch」>「Logs」>「Log groups」。

  8. 選取先前建立的 API Gateway 記錄群組。

  9. 開啟「訂閱項目篩選器」分頁標籤,然後點選「建立」。

  10. 選擇「Create Amazon Kinesis Data Firehose subscription filter」。

  11. 設定下列項目:

    • 目的地:Delivery stream cwlogs-to-secops。
    • 授予權限:角色 CWLtoFirehoseRole。
    • 篩選器名稱:輸入 all-events。
    • 篩選器模式:留空即可傳送所有事件。
  12. 按一下「開始串流播放」。

變更記錄

查看這個剖析器的變更記錄

還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。