收集 AWS API Gateway 存取記錄

支援的國家/地區:

本文說明如何使用 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 控制台 > 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 日誌群組:選擇或建立日誌群組 (例如 /aws/apigateway/access)。

  3. HTTP API

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

在 Google SecOps 中設定動態消息,擷取 Amazon API Gateway 記錄

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「+ 新增動態消息」
  3. 在「動態饋給名稱」欄位中輸入 Amazon API Gateway - CloudWatch via Firehose
  4. 選取「Amazon Data Firehose」做為「來源類型」
  5. 選取「Amazon API Gateway」做為「記錄類型」
  6. 點選「下一步」
  7. 指定下列輸入參數的值:
    • 分割分隔符:選用 n
    • 資產命名空間aws.api_gateway
    • 擷取標籤:例如 source=apigw_accessaws_region=<your-region>
  8. 點選「下一步」
  9. 檢查動態饋給設定,然後按一下「提交」
  10. 在動態消息「詳細資料」中,按一下「產生密鑰」,然後複製「密鑰」
  11. 從「端點資訊」複製「動態消息 HTTPS 端點網址」
  12. 在「API 和服務」>「憑證」>「建立憑證」>「API 金鑰」中建立 Google Cloud API 金鑰,並將其限制為 Google SecOps API
  13. 複製 API 金鑰並儲存在安全地點。

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

  1. AWS 控制台中,依序前往「Kinesis」>「Data Firehose」>「Create delivery stream」
  2. 提供下列設定詳細資料:
    • 來源:選取「直接 PUT 或其他來源」
    • 目的地:選擇「HTTP 端點」
    • HTTP 端點網址:輸入 ENDPOINT_URL?key=API_KEY (使用上一個步驟中的動態消息 HTTPS 端點網址和 API 金鑰)。
    • HTTP 方法:選取「POST」
    • 存取金鑰:貼上動態饋給中產生的私密金鑰。
    • 緩衝區提示:將「緩衝區大小」設為 1 MiB,將「緩衝區間隔」設為 60 秒
    • 壓縮:選取「已停用」
    • S3 備份:選取「已停用」
    • retrylogging 設定保留為預設值。
  3. 按一下「建立傳送串流」。例如 cwlogs-to-secops

設定 IAM 權限並訂閱記錄群組

  1. AWS Console 中,依序前往「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. 選取「自訂信任政策」,然後輸入下列內容:

    {
      "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 專業人員尋求答案。