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