收集 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 行中的正确位置顺序。
准备工作
确保已创建 Amazon S3 存储桶。如需了解详情,请参阅创建您的第一个 S3 存储桶。
确保已创建 Amazon CloudWatch 日志组。如需了解详情,请参阅使用日志组和日志流。
配置 AWS VPC 流
根据您是将日志转发到 Amazon S3 还是 Amazon CloudWatch,配置 AWS VPC 流。
如需了解如何将日志转发到 Amazon S3 存储桶,请参阅本文档的配置流日志以将日志转发到 Amazon S3 部分。
如需了解如何将日志转发到 Amazon CloudWatch,请参阅本文档的将数据流日志配置到 Amazon CloudWatch 部分。
配置流日志以将日志转发到 Amazon S3
创建并配置 Amazon S3 存储桶后,您可以为网络接口、子网和 VPC 网络创建流日志。
为网络接口创建流日志
- 登录 Amazon EC2 控制台。
- 在导航窗格中,选择网络接口。
- 选择一个或多个网络接口。
- 依次选择操作 > 创建流日志。
- 配置流日志设置。如需了解详情,请参阅本文档的配置流日志设置部分。
为子网创建流日志
- 登录 Amazon VPC 控制台。
- 在导航窗格中,选择子网。
- 选择一个或多个子网。
- 依次选择操作 > 创建流日志。
- 配置流日志设置。如需了解详情,请参阅本文档的配置流日志设置部分。
为 VPC 创建流日志
- 登录 Amazon VPC 控制台。
- 在导航窗格中,选择 VPC。
- 选择一个或多个 VPC。
- 依次选择操作 > 创建流日志。
- 配置流日志设置。如需了解详情,请参阅本文档的配置流日志设置部分。
配置流日志设置
在过滤条件部分中,指定要记录的 IP 流量:
接受:仅记录接受的流量。
拒绝:仅记录被拒绝的流量。
全部:记录接受和拒绝的流量。
在最大汇总间隔部分中,选择 1 分钟。
在目标位置部分中,选择发送到 Amazon S3 存储桶。
在 S3 存储桶 ARN 部分中,指定 Amazon S3 存储桶的 ARN。
在日志记录格式部分中,为流日志记录指定以下格式:
- 如需使用默认的流日志记录格式,请选择 AWS 默认格式。
- 如需创建自定义格式,请选择自定义格式。
配置具有自定义 AWS 日志格式的 VPC 日志流,以使用 MSS true IP 功能。
在日志格式列表中,选择所有属性。
在格式预览部分,查看自定义格式。
在日志文件格式部分中,选择文本(默认)。
在 Hive 兼容的 S3 前缀部分,使启用复选框保持未选中状态。
在按时间对日志进行分区部分,选择每 1 小时(60 分钟)。
如需向流日志添加标记,请选择添加新标记,然后指定标记键和值。
选择创建流日志。如需了解详情,请参阅将流日志发布到 Amazon S3。
将流日志配置到 Amazon CloudWatch
您可以从 VPC、子网或网络接口配置流日志。
在过滤条件部分中,指定要记录的 IP 流量类型:
接受:仅记录接受的流量。
拒绝:仅记录被拒绝的流量。
全部:记录接受和拒绝的流量。
在最大汇总间隔部分中,选择 1 分钟。
在目标位置部分,选择发送到 CloudWatch Logs。
在目标日志组部分,提供您创建的目标日志组名称。
在 IAM 角色列表中,选择相应角色名称。所选角色名称具有将日志发布到 CloudWatch 日志的权限。
IAM 角色必须包含以下权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" } ] }
在日志记录格式部分中,为流日志记录选择自定义格式。
如需向流日志添加标记,请选择添加新标记,然后指定标记键和值。
选择创建流日志。如需了解详情,请参阅将流日志发布到 Amazon S3。
您可以将 Amazon S3 配置为向 Amazon SQS 发送事件通知。如需了解详情,请参阅为通知配置存储桶(SNS 主题或 SQS 队列)。
如果使用 Amazon SQS(Amazon S3 使用 Amazon SQS)作为日志收集方法,则必须为 Amazon S3 和 Amazon SQS 设置 IAM 用户政策。如需了解详情,请参阅将 IAM 政策与 AWS KMS 搭配使用。
根据服务和区域,参考以下 AWS 文档确定连接端点:
如需了解任何日志记录来源,请参阅 AWS Identity and Access Management 端点和配额。
如需了解 Amazon S3 日志记录源,请参阅 Amazon Simple Storage Service 端点和配额。
如需了解 Amazon SQS 日志记录来源,请参阅 Amazon Simple Queue Service 端点和配额。
如需了解 Amazon CloudWatch 日志来源,请参阅 Amazon CloudWatch 日志端点和配额。
配置 Google SecOps Forwarder 和 syslog 以注入 AWS VPC 流日志
- 依次选择 SIEM 设置> 转发器。
- 点击添加新转发器。
- 为转发器输入一个唯一的转发器名称。
- 点击提交,然后点击确认。转发器已添加,系统会显示添加收集器配置窗口。
- 在收集器名称字段中,输入一个名称。
- 在日志类型字段中,根据您的日志格式选择 AWS VPC 流或 AWS VPC 流 (CSV)。
- 在收集器类型字段中,选择 Syslog。
- 配置以下必需的输入参数:
- 协议:指定收集器将用于监听 syslog 数据的连接协议。
- 地址:指定收集器所在的 syslog 数据目标 IP 地址或主机名。
- 端口:指定收集器所在的目标端口,并监听 syslog 数据。
- 点击提交,然后点击确认。
如需详细了解 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 专业人士那里获得解答。