收集 AWS VPC 流日志

支持的语言:

本文档介绍了如何使用 Google Security Operations 转发器收集 AWS VPC 流日志。

如需了解详情,请参阅将数据提取到 Google SecOps

注入标签用于标识将原始日志数据标准化为结构化 UDM 格式的解析器。本文档中的信息适用于具有 AWS_VPC_FLOW 注入标签的解析器。

支持的 AWS VPC 流日志格式

Google SecOps 支持以两种主要文本格式提取 AWS VPC 流日志:

  • JSON 格式AWS_VPC_FLOW 日志类型以 JSON 格式解析日志。在此格式中,每个日志条目都包含一个键及其对应的值,从而使数据具有自描述性。

  • CSV 格式:Google SecOps 还提供了一个用于解析 CSV 格式的 AWS VPC 流日志的解析器。此格式仅在标题行中列出一次字段键,后续行仅包含以英文逗号分隔的值。

如需以 CSV 格式注入 AWS VPC 流日志,请在配置转发器时将日志类型指定为 AWS_VPC_FLOW_CSV。如需查看设置说明,请参阅配置 Google SecOps Forwarder 和 Syslog 以注入 AWS VPC 流日志

由于 CSV 格式不会在每个日志条目中包含字段键,因此 AWS_VPC_FLOW_CSV 解析器依赖于严格的预定义值顺序。您的 CSV 文件必须遵循以下字段顺序,以便正确解析:

   Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id

以下是 CSV 日志行的示例:

   7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-

对于没有值的字段,应传递空值(例如 , ,),以保持 CSV 行中的正确位置顺序。

准备工作

配置 AWS VPC 流

根据您是将日志转发到 Amazon S3 还是 Amazon CloudWatch,配置 AWS VPC 流。

配置流日志以将日志转发到 Amazon S3

创建并配置 Amazon S3 存储桶后,您可以为网络接口、子网和 VPC 网络创建流日志。

为网络接口创建流日志

  1. 登录 Amazon EC2 控制台。
  2. 在导航窗格中,选择网络接口
  3. 选择一个或多个网络接口。
  4. 依次选择操作 > 创建流日志
  5. 配置流日志设置。如需了解详情,请参阅本文档的配置流日志设置部分。

为子网创建流日志

  1. 登录 Amazon VPC 控制台。
  2. 在导航窗格中,选择子网
  3. 选择一个或多个子网。
  4. 依次选择操作 > 创建流日志
  5. 配置流日志设置。如需了解详情,请参阅本文档的配置流日志设置部分。

为 VPC 创建流日志

  1. 登录 Amazon VPC 控制台。
  2. 在导航窗格中,选择 VPC
  3. 选择一个或多个 VPC。
  4. 依次选择操作 > 创建流日志
  5. 配置流日志设置。如需了解详情,请参阅本文档的配置流日志设置部分。

配置流日志设置

  1. 过滤条件部分中,指定要记录的 IP 流量:

    • 接受:仅记录接受的流量。

    • 拒绝:仅记录被拒绝的流量。

    • 全部:记录接受和拒绝的流量。

  2. 最大汇总间隔部分中,选择 1 分钟

  3. 目标位置部分中,选择发送到 Amazon S3 存储桶

  4. S3 存储桶 ARN 部分中,指定 Amazon S3 存储桶的 ARN。

  5. 日志记录格式部分中,为流日志记录指定以下格式:

    1. 如需使用默认的流日志记录格式,请选择 AWS 默认格式
    2. 如需创建自定义格式,请选择自定义格式
  6. 配置具有自定义 AWS 日志格式的 VPC 日志流,以使用 MSS true IP 功能。

  7. 日志格式列表中,选择所有属性。

  8. 格式预览部分,查看自定义格式。

  9. 日志文件格式部分中,选择文本(默认)

  10. Hive 兼容的 S3 前缀部分,使启用复选框保持未选中状态。

  11. 按时间对日志进行分区部分,选择每 1 小时(60 分钟)

  12. 如需向流日志添加标记,请选择添加新标记,然后指定标记键和值。

  13. 选择创建流日志。如需了解详情,请参阅将流日志发布到 Amazon S3

将流日志配置到 Amazon CloudWatch

您可以从 VPC、子网或网络接口配置流日志。

  1. 过滤条件部分中,指定要记录的 IP 流量类型:

    • 接受:仅记录接受的流量。

    • 拒绝:仅记录被拒绝的流量。

    • 全部:记录接受和拒绝的流量。

  2. 最大汇总间隔部分中,选择 1 分钟

  3. 目标位置部分,选择发送到 CloudWatch Logs

  4. 目标日志组部分,提供您创建的目标日志组名称。

  5. IAM 角色列表中,选择相应角色名称。所选角色名称具有将日志发布到 CloudWatch 日志的权限。

    IAM 角色必须包含以下权限:

       {
         "Version": "2012-10-17",
         "Statement": [
           {
             "Effect": "Allow",
             "Action": [
               "logs:CreateLogGroup",
               "logs:CreateLogStream",
               "logs:PutLogEvents",
               "logs:DescribeLogGroups",
               "logs:DescribeLogStreams"
           ],
           "Resource": "*"
         }
        ]
       }
    
  6. 日志记录格式部分中,为流日志记录选择自定义格式

  7. 如需向流日志添加标记,请选择添加新标记,然后指定标记键和值。

  8. 选择创建流日志。如需了解详情,请参阅将流日志发布到 Amazon S3

您可以将 Amazon S3 配置为向 Amazon SQS 发送事件通知。如需了解详情,请参阅为通知配置存储桶(SNS 主题或 SQS 队列)

如果使用 Amazon SQS(Amazon S3 使用 Amazon SQS)作为日志收集方法,则必须为 Amazon S3 和 Amazon SQS 设置 IAM 用户政策。如需了解详情,请参阅将 IAM 政策与 AWS KMS 搭配使用

根据服务和区域,参考以下 AWS 文档确定连接端点:

配置 Google SecOps Forwarder 和 syslog 以注入 AWS VPC 流日志

  1. 依次选择 SIEM 设置> 转发器
  2. 点击添加新转发器
  3. 为转发器输入一个唯一的转发器名称
  4. 点击提交,然后点击确认。转发器已添加,系统会显示添加收集器配置窗口。
  5. 收集器名称字段中,输入一个名称。
  6. 日志类型字段中,根据您的日志格式选择 AWS VPC 流AWS VPC 流 (CSV)
  7. 收集器类型字段中,选择 Syslog
  8. 配置以下必需的输入参数:
    • 协议:指定收集器将用于监听 syslog 数据的连接协议。
    • 地址:指定收集器所在的 syslog 数据目标 IP 地址或主机名。
    • 端口:指定收集器所在的目标端口,并监听 syslog 数据。
  9. 点击提交,然后点击确认

如需详细了解 Google SecOps 转发器,请参阅 Google Security Operations 转发器文档。如需了解每种转发器类型的要求,请参阅按类型划分的转发器配置

如果您在创建转发器时遇到问题,请与 Google 安全运营支持团队联系

字段映射参考

此解析器可将原始 AWS VPC 流日志(JSON 或 CSV 格式)转换为结构化 UDM 格式。它会提取相关字段,将这些字段映射为与 UDM 架构相匹配,并使用资源类型、云提供商和标签等其他上下文信息来丰富数据,以支持更深入的分析。这两种格式的映射逻辑是一致的:CSV 解析器依赖于预定义的字段顺序,以将值与 JSON 格式中使用的相同 UDM 字段对齐。

适用于 AWS EC2 VPC 解析器的 UDM 映射表

日志字段(升序) UDM 映射 逻辑
CidrBlock event.idm.entity.entity.resource.attribute.labels.cidr_block 直接从原始日志中的“CidrBlock”字段映射。
CidrBlock event.idm.entity.entity.network.ip_subnet_range 直接从原始日志中的“CidrBlock”字段映射。
CidrBlockAssociation.AssociationID event.idm.entity.entity.resource.attribute.labels.cidr_block_association_association_id 直接从原始日志中“CidrBlockAssociation”数组内的“AssociationID”字段映射。
CidrBlockAssociation.CidrBlockState.State event.idm.entity.entity.resource.attribute.labels.cidr_block_association_cidr_block_state_state 直接从原始日志中“CidrBlockAssociation”数组的“CidrBlockState”对象内的“State”字段映射而来。
CidrBlockAssociation.CidrBlockState.StatusMessage event.idm.entity.entity.resource.attribute.labels.cidr_block_association_cidr_block_state_status_message 直接从原始日志中“CidrBlockAssociation”数组的“CidrBlockState”对象内的“StatusMessage”字段映射。
DhcpOptionsID event.idm.entity.entity.resource.attribute.labels.dhcp_options_id 直接从原始日志中的“DhcpOptionsID”字段映射。
ID event.idm.entity.entity.resource.product_object_id 直接从原始日志中的“ID”字段映射,该字段在解析器中重命名为“VpcID”。
ID event.idm.entity.metadata.product_entity_id 直接从原始日志中的“ID”字段映射,该字段在解析器中重命名为“VpcID”。
InstanceTenancy event.idm.entity.entity.resource.attribute.labels.instance_tenancy 直接从原始日志中的“InstanceTenancy”字段映射。
IsDefault event.idm.entity.entity.resource.attribute.labels.is_default 直接从原始日志中的“IsDefault”字段映射。
Ipv6CidrBlockAssociationSet.AssociationID event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_association_id 直接从原始日志中“Ipv6CidrBlockAssociationSet”数组内的“AssociationID”字段映射。
Ipv6CidrBlockAssociationSet.Ipv6CidrBlock event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block 直接从原始日志中“Ipv6CidrBlockAssociationSet”数组内的“Ipv6CidrBlock”字段映射。
Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.State event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block_state_state 直接从原始日志中“Ipv6CidrBlockAssociationSet”数组的“Ipv6CidrBlockState”对象内的“State”字段映射。
Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.StatusMessage event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block_state_status_message 直接从原始日志中“Ipv6CidrBlockAssociationSet”数组的“Ipv6CidrBlockState”对象内的“StatusMessage”字段映射。
Ipv6CidrBlockAssociationSet.Ipv6Pool event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_pool 直接从原始日志中“Ipv6CidrBlockAssociationSet”数组内的“Ipv6Pool”字段映射。
Ipv6CidrBlockAssociationSet.NetworkBorderGroup event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_network_border_group 直接从原始日志中“Ipv6CidrBlockAssociationSet”数组内的“NetworkBorderGroup”字段映射。
OwnerID event.idm.entity.entity.resource.attribute.labels.owner_id 直接从原始日志中的“OwnerID”字段映射。
event.idm.entity.entity.resource.attribute.labels.state 直接从原始日志中的“State”字段映射。
TagSet.Key event.idm.entity.entity.resource.attribute.labels.key 直接从原始日志中“TagSet”数组内的“Key”字段映射。这会为“TagSet”中的每个标记创建一个新标签。
TagSet.Value event.idm.entity.entity.resource.attribute.labels.value 直接从原始日志中“TagSet”数组内的“Value”字段映射。这会填充根据“键”字段创建的每个相应标签的值。
不适用 event.idm.entity.entity.resource.attribute.cloud.environment 在解析器代码中硬编码为“AMAZON_WEB_SERVICES”。
不适用 event.idm.entity.entity.resource.resource_type 在解析器代码中硬编码为“VPC_NETWORK”。
不适用 event.idm.entity.metadata.collected_timestamp 填充的是事件时间戳,该时间戳源自原始日志中的“collection_time”字段。
不适用 event.idm.entity.metadata.entity_type 在解析器代码中硬编码为“RESOURCE”。
不适用 event.idm.entity.metadata.product_name 在解析器代码中硬编码为“Amazon VPC”。
不适用 event.idm.entity.metadata.vendor_name 在解析器代码中硬编码为“AWS”。
不适用 events.timestamp 填充的是事件时间戳,该时间戳源自原始日志中的“collection_time”字段。

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