收集 Amazon VPC Transit Gateway 流日志

解析器版本:3.0

支持的平台:

本文档介绍了如何使用 Amazon S3 或 Amazon Kinesis Data Firehose 将 Amazon VPC Transit Gateway 流日志注入到 Google Security Operations 中。Transit Gateway 流日志可捕获 Transit Gateway 附件中的详细网络流量元数据(来源和目标 IP、端口、协议、字节数和数据包数、操作)。这些数据可在 Google SecOps 中实现安全监控、异常检测和合规性审核。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例。
  • 具有以下权限的 AWS 特权访问权限:
    • 创建和管理传输网关流日志
    • 创建 S3 存储分区(对于 S3 导出选项)
    • 创建 IAM 用户、政策和角色
    • 配置 Kinesis Data Firehose 传送数据流(对于 Firehose 选项)
    • 访问 CloudWatch Logs 并创建订阅过滤条件(适用于 Firehose 选项)

选项 - 导出到 Amazon S3

启用传输网关流日志(到 S3)

  1. 访问 https://console.aws.amazon.com/vpc/,打开 Amazon VPC 控制台
  2. 在导航窗格中,选择传输网关
  3. 选中一个或多个传输网关对应的复选框,然后依次选择操作 > 创建流日志
  4. 目标位置部分,选择发送到 Amazon S3 存储桶
  5. S3 存储桶 ARN 字段中,输入现有 S3 存储桶的 ARN(例如 arn:aws:s3:::tgw-flowlogs-bucket)。

  6. 对于日志记录格式,请选择流日志记录的格式:

    • AWS 默认格式 - 包含版本 2 到版本 6 的所有字段。
    • 自定义格式 - 仅选择所需的字段。
  7. 日志文件格式部分,选择文本(默认)或 Parquet

  8. 对于 Hive 兼容的 S3 前缀,您可以选择启用以使用 Hive 兼容的前缀进行分区。

  9. 对于按时间对日志进行分区,请选择每 1 小时 (60 分钟)每 24 小时 (1440 分钟)

  10. (可选)选择添加新标记,以将标记应用于流日志。

  11. 点击创建流日志

创建 Amazon S3 存储桶

  1. 打开 Amazon S3 控制台
  2. 点击创建存储分区
  3. 提供以下配置详细信息:
    • 存储分区名称:输入一个唯一名称(例如 tgw-flowlogs-bucket
    • AWS 区域:选择您的 Transit Gateway 所在的同一区域
  4. 点击创建存储分区

创建可访问 Amazon S3 的 IAM 用户

  1. 打开 IAM 控制台
  2. 依次点击用户> 添加用户
  3. 输入用户名(例如 chronicle-tgw-s3-reader)。
  4. 选择以编程方式访问
  5. 点击 Next: Permissions
  6. 选择 Attach existing policies directly
  7. 搜索并选择 AmazonS3ReadOnlyAccess 政策。
  8. 依次点击 Next: Tags > Next: Review > Create user
  9. 复制 Access Key IDSecret Access Key 以用于 Google SecOps Feed 配置。

在 Google SecOps 中配置 Feed 以注入 Amazon VPC Transit Gateway 流日志 (S3)

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. Feed 名称字段中,输入 Feed 的名称(例如 AWS Transit Gateway Flow Logs - S3)。
  4. 选择 Amazon S3 作为来源类型
  5. 选择 Amazon VPC 传输网关流日志作为日志类型
  6. 点击下一步
  7. 为以下输入参数指定值:

    • S3 URI:存储桶 URI(例如 s3://tgw-flowlogs-bucket/flow-logs/
    • 来源删除选项:根据您的偏好选择删除选项:
      • 永不:转移后永不删除任何文件。
      • 删除已转移的文件:在成功转移后删除文件。
      • 删除已转移的文件和空目录:成功转移后删除文件和空目录。
    • 文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)
    • 访问密钥 ID:具有 S3 存储桶访问权限的 IAM 用户访问密钥
    • Secret Access Key:具有 S3 存储桶访问权限的 IAM 用户密钥
    • 资产命名空间资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  8. 点击下一步

  9. 检查 Feed 配置,然后点击提交

选项 - 通过 Amazon Kinesis Data Firehose 进行流式传输

启用 Transit Gateway 流日志(到 CloudWatch Logs)

  1. 访问 https://console.aws.amazon.com/vpc/,打开 Amazon VPC 控制台
  2. 在导航窗格中,选择传输网关
  3. 选中一个或多个传输网关对应的复选框,然后依次选择操作 > 创建流日志
  4. 对于目标,选择发送到 CloudWatch Logs
  5. 对于目标日志组,请选择现有日志组或输入新名称以创建日志组(例如 /aws/tgw/flowlogs)。

  6. 对于 IAM 角色,请指定具有将日志发布到 CloudWatch Logs 的权限的角色。

  7. 对于日志记录格式,请选择流日志记录的格式:

    • AWS 默认格式 - 包含版本 2 到版本 6 的所有字段。
    • 自定义格式 - 仅选择所需的字段。
  8. (可选)选择添加新标记,以将标记应用于流日志。

  9. 点击创建流日志

在 Google SecOps 中创建 Feed 以注入 Amazon VPC Transit Gateway 流日志 (Firehose)

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. Feed 名称字段中,输入 Feed 的名称(例如 AWS Transit Gateway Flow Logs - Firehose)。
  4. 选择 Amazon Data Firehose 作为来源类型
  5. 选择 Amazon VPC 传输网关流日志作为日志类型
  6. 点击下一步
  7. 为以下输入参数指定值:
    • 拆分分隔符:输入 \n
    • 资产命名空间资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  8. 点击下一步
  9. 检查 Feed 配置,然后点击提交
  10. 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
  11. 复制保存密钥。您将无法再查看此密钥。
  12. 点击详细信息标签页。
  13. 端点信息字段复制 Feed 端点网址。
  14. 点击完成

为 Amazon Data Firehose Feed 创建 API 密钥

  1. 前往 https://console.cloud.google.com/apis/credentials,进入 Google Cloud 控制台凭据页面。
  2. 点击创建凭据,然后选择 API 密钥
  3. 点击修改 API 密钥以限制密钥。
  4. API 限制下,选择限制密钥
  5. 搜索并选择 Google SecOps API
  6. 点击保存
  7. 复制保存 API 密钥。

构建端点网址

  • 以以下格式将 API 密钥附加到 Feed 端点网址:

    <FEED_ENDPOINT_URL>?key=<API_KEY>
    

替换以下内容:

  • <FEED_ENDPOINT_URL>:Feed 端点网址
  • <API_KEY>:API 密钥

  • 示例:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

保存此完整网址以供在下一步中使用。

为 Firehose 创建 IAM 政策

  1. AWS 控制台中,依次前往 IAM > 政策 > 创建政策 > JSON 标签页
  2. 粘贴以下政策 JSON:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/<DELIVERY_STREAM_NAME>"
            }
        ]
    }
    
  3. 替换以下内容:

    • <REGION>:您的 AWS 区域(例如 us-east-1
    • <ACCOUNT_ID>:您的 AWS 账号 ID(12 位数字)
    • <DELIVERY_STREAM_NAME>:您的 Firehose 传送流名称(您将在下一步中创建此名称)
  4. 为政策命名 TGWFlowLogsToFirehosePolicy(例如),然后点击创建政策

为 CloudWatch Logs 创建 IAM 角色

  1. 依次前往 IAM > 角色 > 创建角色
  2. 选择自定义信任政策,然后粘贴以下内容:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<REGION>.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  3. <REGION> 替换为您的 AWS 区域。

  4. 点击下一步

  5. 搜索并选择政策 TGWFlowLogsToFirehosePolicy

  6. 点击下一步

  7. 将角色命名为 TGWFlowLogsToFirehoseRole(例如),然后点击创建角色

创建 Kinesis Data Firehose 传送数据流

  1. AWS 控制台中,依次前往 Kinesis > Data Firehose > 创建交付流
  2. 提供以下配置详细信息:

    • 来源和目的地

      • 来源:选择直接 PUT 或其他来源
      • 目的地:选择 HTTP 端点
    • 交付数据流名称

      • 交付数据流名称:输入一个名称(例如 tgw-flowlogs-to-secops
    • HTTP 端点目标

      • HTTP 端点网址:输入您构建的完整端点网址(Feed 端点 + API 密钥)
      • 内容编码:选择 GZIP
    • 自定义 HTTP 标头

      • 点击添加自定义 HTTP 标头
      • 标头名称:输入 X-Goog-Chronicle-Auth
      • 标头值:输入您在 Feed 创建步骤中保存的密钥
    • 备份设置

      • Amazon S3 中的源记录备份:选择仅备份失败的数据
      • S3 存储桶:选择现有存储桶或创建新存储桶来存储失败的记录
    • 缓冲提示

      • 缓冲区大小:输入 1 MiB
      • 缓冲间隔:输入 60
  3. 点击创建交付数据流

  4. 等待交付流状态变为有效

将 CloudWatch 日志组订阅到 Firehose

  1. AWS 管理控制台中,依次前往 CloudWatch > 日志 > 日志组
  2. 选择 Transit Gateway 流日志组(例如 /aws/tgw/flowlogs)。
  3. 点击订阅过滤条件标签页。
  4. 依次点击创建 > 创建 Amazon Kinesis Data Firehose 订阅过滤器
  5. 提供以下配置详细信息:
    • 目标:选择交付数据流 tgw-flowlogs-to-secops
    • 授予权限:选择角色 TGWFlowLogsToFirehoseRole
    • 订阅过滤条件名称:输入一个名称(例如 tgw-flowlogs-to-chronicle
    • 日志格式:选择其他
    • 订阅过滤模式:留空可发送所有事件
  6. 点击开始直播

UDM 映射表

日志字段 UDM 映射 逻辑
packets_lost_blackhole_label additional.fields 已合并
packets_lost_mtu_exceeded_label additional.fields 已合并
packets_lost_no_route_label additional.fields 已合并
packets_lost_ttl_expired_label additional.fields 已合并
start_time_label additional.fields 已合并
tcp_flags_label additional.fields 已合并
tgw_attachment_id_label additional.fields 已合并
tgw_id_label additional.fields 已合并
tgw_pair_attachment_id_label additional.fields 已合并
type_label additional.fields 已合并
end_time metadata.event_timestamp 解析为 UNIX
event_type metadata.event_type 直接映射
account_id metadata.product_log_id 直接映射
version metadata.product_version 直接映射
flow_direction network.direction 已映射:(?i)ingressINBOUND(?i)egressOUTBOUND
bytes network.sent_bytes 直接映射
packets network.sent_packets 直接映射
tgw_src_eni principal.asset.asset_id 直接映射
srcaddr principal.asset.ip 已合并
srcaddr principal.ip 已合并
region principal.location.country_or_region 直接映射
tgw_src_az_id principal.location.country_or_region 直接映射
srcport principal.port 直接映射
pkt_src_aws_service_label principal.resource.attribute.labels 已合并
tgw_src_az_id_label principal.resource.attribute.labels 已合并
tgw_src_subnet_id principal.resource.name 直接映射
tgw_src_vpc_id principal.resource.product_object_id 直接映射
resource_type principal.resource.resource_subtype 直接映射
tgw_src_vpc_account_id principal.user.userid 直接映射
security_result_action security_result.action 已合并
protocol_label security_result.detection_fields 已合并
tgw_dst_eni target.asset.asset_id 直接映射
dstaddr target.asset.ip 已合并
dstaddr target.ip 已合并
tgw_dst_az_id target.location.country_or_region 直接映射
dstport target.port 直接映射
pkt_dst_aws_service_label target.resource.attribute.labels 已合并
tgw_dst_subnet_id target.resource.name 直接映射
tgw_dst_vpc_id target.resource.product_object_id 直接映射
tgw_dst_vpc_account_id target.user.userid 直接映射
不适用 metadata.product_name 常量:AWS VPC Transit Gateway
不适用 metadata.vendor_name 常量:AWS
不适用 network.direction 常量:INBOUND

更新日志

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

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