收集 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)
- 依序前往「AWS Console」>「API Gateway」。
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)。
HTTP API:
- 依序選取「API」>「監控」>「Logging」。
- 依序選取「階段」>「編輯」。
- 啟用「Access logging」(存取記錄)。
- 請使用與上述相同的 JSON 記錄格式。
- CloudWatch Logs log group:選擇或建立記錄群組 (例如
/aws/apigateway/access)。
按一下「儲存」。
在 Google SecOps 設定動態饋給,擷取 Amazon API Gateway 記錄
- 依序前往「設定」>「資料管理」>「動態饋給」。如果使用的是 SIEM 專用平台,請依序前往「設定」>「動態饋給」。
- 按一下「+ 新增動態饋給」。
- 在「Feed name」(動態饋給名稱) 欄位中輸入
Amazon API Gateway - CloudWatch via Firehose。 - 「Source type」(來源類型) 請選取「Amazon Data Firehose」。
- 在「Log type」(記錄類型) 選取「Amazon API Gateway」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符號:選用
n - 資產命名空間:
aws.api_gateway - 擷取標籤:例如
source=apigw_access、aws_region=<your-region>
- 分割分隔符號:選用
- 點選「下一步」。
- 檢查動態饋給設定,然後按一下「提交」。
- 在動態饋給「詳細資料」中,按一下「產生密鑰」,然後複製「密鑰」。
- 從「Endpoint Information」複製「Feed HTTPS endpoint URL」。
- 依序前往「API 和服務」>「憑證」>「建立憑證」>「API 金鑰」,建立 Google Cloud API 金鑰,並將金鑰限制為 Chronicle API。
- 複製 API 金鑰並儲存在安全的位置。
設定 Amazon Kinesis Data Firehose (直接傳送至 Google SecOps)
- 在 AWS 控制台中,依序前往「Kinesis」>「Data Firehose」>「Create delivery stream」。
- 提供下列設定詳細資料:
- 來源:選取「Direct PUT or other sources」(直接 PUT 或其他來源)。
- 目的地:選擇「HTTP 端點」。
- HTTP 端點網址:輸入
ENDPOINT_URL?key=API_KEY(使用上一步的動態饋給 HTTPS 端點網址和 API 金鑰)。 - HTTP 方法:選取「POST」。
- 存取金鑰:貼上在動態饋給中產生的密鑰。
- 緩衝提示:將「緩衝區空間」設為 1 MiB,「緩衝時間間隔」設為 60 秒。
- 壓縮:選取「停用」。
- S3 備份:選取「Disabled」(已停用)。
- 「retry」和「logging」設定保留預設值。
- 按一下「Create delivery stream」(建立傳遞串流)。例如
cwlogs-to-secops。
設定 IAM 權限並訂閱記錄群組
- 在 AWS 控制台中,依序前往「IAM」>「Policies」>「Create policy」>「JSON」。
- 在 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。
將政策命名為
CWLtoFirehoseWrite,然後點選「建立政策」。依序前往 「IAM」 > 「角色」 > 「建立角色」。
選取「Custom trust policy」,然後輸入下列內容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<your-region>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }將政策
CWLtoFirehoseWrite附加至角色。將角色命名為
CWLtoFirehoseRole,然後按一下「Create role」(建立角色)。依序前往「CloudWatch」>「Logs」>「Log groups」。
選取先前建立的 API Gateway 記錄群組。
開啟「訂閱項目篩選器」分頁標籤,然後點選「建立」。
選擇「Create Amazon Kinesis Data Firehose subscription filter」。
設定下列項目:
- 目的地:Delivery stream
cwlogs-to-secops。 - 授予權限:角色
CWLtoFirehoseRole。 - 篩選器名稱:輸入
all-events。 - 篩選器模式:留空即可傳送所有事件。
- 目的地:Delivery stream
按一下「開始串流播放」。
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。