收集 AWS VPC 流日志
本文档介绍了如何使用 Google Security Operations 转发器收集 AWS VPC 流日志。
如需了解详情,请参阅将数据提取到 Google 安全运营中心。
提取标签用于标识将原始日志数据标准化为结构化 UDM 格式的解析器。本文档中的信息适用于具有 AWS_VPC_FLOW
注入标签的解析器。
准备工作
确保已创建 Amazon S3 存储桶。如需了解详情,请参阅创建您的第一个 S3 存储桶。
确保已创建 Amazon CloudWatch 日志组。如需了解详情,请参阅使用日志组和日志流。
配置 AWS VPC 流
根据您是将日志转发到 Amazon S3 还是 Amazon CloudWatch 来配置 AWS VPC Flow。
如需了解如何将日志转发到 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 真实 IP 功能。
在日志格式列表中,选择所有属性。
在格式预览部分,查看自定义格式。
在日志文件格式部分,选择文本(默认)。
在 Hive 兼容的 S3 前缀部分中,请勿选中 Enable(启用)复选框。
在按时间分区日志部分,选择每 1 小时(60 分钟)。
如需向流日志添加标记,请选择添加新标记,然后指定标记键和值。
选择创建数据流日志。如需了解详情,请参阅将流日志发布到 Amazon S3。
将流日志配置到 Amazon CloudWatch
您可以通过 VPC、子网或网络接口配置流日志。
在过滤条件部分中,指定要记录的 IP 流量类型:
接受:仅记录已接受的流量。
拒绝:仅记录被拒绝的流量。
全部:记录已接受和已拒绝的流量。
在最大汇总间隔部分,选择 1 分钟。
在目标位置部分,选择发送到 CloudWatch 日志。
在目标日志组部分,提供您创建的目标日志组名称。
在 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 Logs 端点和配额。
配置 Google 安全运维转发器和 syslog 以注入 AWS VPC 流日志
- 依次选择 SIEM 设置 > 转发器。
- 点击添加新转发器。
- 为转发器名称输入一个唯一的名称。
- 点击提交,然后点击确认。系统会添加转发器,并显示添加收集器配置窗口。
- 在收集器名称字段中,输入名称。
- 在 Log type 字段中,选择 AWS VPC Flow。
- 在收集器类型字段中,选择 Syslog。
- 配置以下必需的输入参数:
- 协议:指定收集器将用于监听 syslog 数据的连接协议。
- 地址:指定收集器所在的目标 IP 地址或主机名,以及 syslog 数据的地址。
- 端口:指定收集器所在的目标端口,以及收集器监听 syslog 数据的端口。
- 点击提交,然后点击确认。
如需详细了解 Google Security Operations 转发器,请参阅 Google Security Operations 转发器文档。如需了解每种转发器类型的要求,请参阅按类型配置转发器。
如果您在创建转发器时遇到问题,请与 Google 安全运营支持团队联系。
字段映射参考文档
此解析器代码会获取描述 EC2 VPC 事件的 JSON 格式的原始 AWS CloudTrail 日志,并将其转换为结构化 UDM 格式。它会提取相关字段,将其重命名以与 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”字段。 |