收集 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 控制台 > API Gateway。
  2. 对于 REST API:

    • 打开您的阶段 > 日志/跟踪 > 启用访问日志记录。
    • 日志格式:选择 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 中配置 Feed 以注入 Amazon API Gateway 日志

  1. 前往 SIEM 设置 > Feed。
  2. 点击 + 添加新 Feed。
  3. 在Feed 名称字段中,输入 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. 检查 Feed 配置,然后点击提交。
  10. 在 Feed 的详细信息中,点击生成 Secret 密钥,然后复制 Secret 密钥。
  11. 从端点信息中复制 Feed HTTPS 端点网址。
  12. 在 API 和服务 > 凭据 > 创建凭据 > API 密钥中创建 Google Cloud API 密钥,并将其限制为 Chronicle API。
  13. 复制 API 密钥并将其保存在安全的位置。

配置 Amazon Kinesis Data Firehose(直接连接到 Google SecOps)

  1. 在 AWS 控制台中,依次前往 Kinesis > Data Firehose > 创建交付流。
  2. 提供以下配置详细信息:
    • 来源:选择直接 PUT 或其他来源。
    • 目的地:选择 HTTP 端点。
    • HTTP 端点网址:输入 ENDPOINT_URL?key=API_KEY(使用上一步中的 Feed HTTPS 端点网址和 API 密钥)。
    • HTTP 方法:选择 POST。
    • 访问密钥:粘贴 Feed 中生成的密钥。
    • 缓冲提示:将缓冲区空间设置为 1 MiB,将缓冲间隔设置为 60 秒。
    • 压缩:选择已停用。
    • S3 备份:选择已停用。
    • 将重试和日志记录设置保留为默认值。
  3. 点击创建传送数据流。(例如 cwlogs-to-secops。)

配置 IAM 权限并订阅日志组

  1. 在 AWS 控制台中,依次前往 IAM > 政策 > 创建政策 > 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 > 日志 > 日志组。

  8. 选择您之前创建的 API Gateway 日志组。

  9. 打开订阅过滤条件标签页,然后点击创建。

  10. 选择创建 Amazon Kinesis Data Firehose 订阅过滤器。

  11. 配置以下内容:

    • 目标:交付数据流 cwlogs-to-secops。
    • 授予权限:角色 CWLtoFirehoseRole。
    • 过滤条件名称:输入 all-events。
    • 过滤模式:留空可发送所有事件。
  12. 点击开始直播。

更新日志

查看相应解析器的更新日志

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。