收集 AWS EC2 主机日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何将 AWS EC2 主机日志集成到 Google Security Operations 中以进行监控和分析。集成涉及解析 EC2 主机日志并将其映射到统一数据模型 (UDM)、执行数据转换,以及在 EC2 主机和实例之间建立关系。这些日志提供了有关实例、主机属性、实例类型和性能指标的实用信息,可用于安全监控、审核和合规性检查。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您拥有对 AWS 的特权访问权限。
配置 AWS IAM 和 S3
- 按照此用户指南中的说明创建 Amazon S3 存储分区:创建存储分区。
- 保存存储分区的名称和区域,以备日后使用。
- 按照此用户指南中的说明创建用户:创建 IAM 用户。
- 选择创建的用户。
- 选择安全凭据标签页。
- 点击访问密钥部分中的创建访问密钥。
- 选择第三方服务作为用例。
- 点击下一步。
- 可选:添加说明标记。
- 点击创建访问密钥。
- 点击下载 CSV 文件,保存访问密钥和密钥以供日后使用。
- 点击完成。
- 选择权限标签页。
- 在权限政策部分中,点击添加权限。
- 选择添加权限。
- 选择直接附加政策
- 搜索并选择 AmazonS3FullAccess 政策。
- 点击下一步。
- 点击添加权限。
为 AWS KMS 配置 CloudTrail
- 登录 AWS Management Console。
- 在搜索栏中输入 CloudTrail,然后从服务列表中选择该服务。
- 点击创建小路。
- 提供轨迹名称;例如
EC2-Activity-Trail
。 - 选中为组织中的所有账号启用复选框。
- 输入之前创建的 S3 存储分区 URI(格式应为:
s3://your-log-bucket-name/
),或创建新的 S3 存储分区。 - 如果启用了 SSE-KMS,请为 AWS KMS 别名提供名称,或选择现有的 AWS KMS 密钥。
- 您可以将其他设置保留为默认设置。
- 点击下一步。
- 在事件类型下,选择管理事件和数据事件,以捕获 EC2 主机活动。
- 点击下一步。
- 在检查并创建中检查设置。
- 点击创建小路。
- 可选:如果您创建了新存储分区,请继续执行以下流程:
- 前往 S3。
- 找到并选择新创建的日志存储分区。
- 选择文件夹 AWSLogs。
- 点击复制 S3 URI 并保存。
在 Google SecOps 中配置 Feed 以提取 AWS EC2 主机
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在 Feed name(Feed 名称)字段中,输入 Feed 的名称;例如,AWS EC2 主机日志。
- 选择 Amazon S3 作为来源类型。
- 选择 AWS EC2 主机作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- 区域:Amazon S3 存储分区所在的区域。
- S3 URI:存储分区 URI。
s3://your-log-bucket-name/
- 将
your-log-bucket-name
替换为存储分区的实际名称。
- 将
- URI 是:选择目录或包含子目录的目录。
来源删除选项:根据您的偏好选择删除选项。
访问密钥 ID:有权访问 S3 存储分区的用户访问密钥。
私有访问密钥:有权访问 S3 存储分区的用户私钥。
资源命名空间:资源命名空间。
提取标签:要应用于此 Feed 中的事件的标签。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
AllocationTime |
entity.metadata.creation_timestamp |
AllocationTime 字段会被解析为时间戳,并映射到 creation_timestamp 字段。解析器会尝试各种格式(yyyy-MM-dd HH:mm:ss、RFC 3339、UNIX、ISO8601)。 |
AllowsMultipleInstanceTypes |
entity.entity.asset.attribute.labels.value |
原始日志中的 AllowsMultipleInstanceTypes 值用作标签的值。此标签的键设置为 allows_multiple_instance_types 。 |
AutoPlacement |
entity.entity.asset.attribute.labels.value |
原始日志中的 AutoPlacement 值用作标签的值。此标签的键设置为 auto_placement 。 |
AvailabilityZone |
entity.entity.asset.attribute.cloud.availability_zone |
AvailabilityZone 字段会直接映射到 availability_zone 字段。 |
AvailabilityZoneID |
entity.entity.asset.attribute.labels.value |
原始日志中的 AvailabilityZoneID 值用作标签的值。此标签的键设置为 availability_zone_id 。 |
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity |
entity.entity.asset.attribute.labels.value |
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (或重命名后的 AvailableCapacity.Instance.Available )的值会转换为字符串,并用作标签的值。该键设置为 available_instance_capacity_available_capacity 。 |
AvailableCapacity.AvailableInstanceCapacity.InstanceType |
entity.entity.asset.attribute.labels.value |
AvailableCapacity.AvailableInstanceCapacity.InstanceType (或重命名后的 AvailableCapacity.Instance.Type )的值用作标签的值。该键设置为 available_instance_capacity_instance_type 。 |
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity |
entity.entity.asset.attribute.labels.value |
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (或重命名后的 AvailableCapacity.Instance.Total )的值会转换为字符串,并用作标签的值。该键设置为 total_capacity 。 |
AvailableCapacity.AvailableVCpus |
entity.entity.asset.attribute.labels.value |
AvailableCapacity.AvailableVCpus (或重命名后的 AvailableCapacity.VCPUs )的值会转换为字符串,并用作标签的值。该键设置为 available_v_cpus 。 |
ClientToken |
entity.entity.asset.attribute.labels.value |
原始日志中的 ClientToken 值用作标签的值。此标签的键设置为 client_token 。 |
HostID |
entity.metadata.product_entity_id |
HostID (重命名后为 ID )字段会直接映射到 product_entity_id 字段。 |
HostID |
entity.entity.asset.asset_id |
HostID (重命名后为 ID )字段会直接映射到 asset_id 字段。 |
HostMaintenance |
entity.entity.asset.attribute.labels.value |
原始日志中的 HostMaintenance (重命名后为 Maintenance )的值用作标签的值。此标签的键设置为 host_maintenance 。 |
HostProperties.Cores |
entity.entity.asset.hardware.cpu_number_cores |
HostProperties.Cores 的值会转换为无符号整数并映射到 cpu_number_cores 。 |
HostProperties.InstanceFamily |
entity.entity.asset.attribute.labels.value |
原始日志中的 HostProperties.InstanceFamily 值用作标签的值。此标签的键设置为 host_properties_instance_family 。 |
HostProperties.InstanceType |
entity.entity.asset.attribute.labels.value |
原始日志中的 HostProperties.InstanceType 值用作标签的值。此标签的键设置为 host_properties_instance_type 。 |
HostProperties.Sockets |
entity.entity.asset.attribute.labels.value |
HostProperties.Sockets 的值会转换为字符串,并用作标签的值。该键设置为 host_properties_sockets 。 |
HostProperties.TotalVCpus |
entity.entity.asset.attribute.labels.value |
HostProperties.TotalVCpus (或重命名后的 HostProperties.TotalVCPUs )的值会转换为字符串,并用作标签的值。该键设置为 host_properties_total_v_cpus 。 |
HostRecovery |
entity.entity.asset.attribute.labels.value |
原始日志中的 HostRecovery (重命名后为 Recovery )的值用作标签的值。此标签的键设置为 host_recovery 。 |
HostReservationID |
entity.entity.asset.attribute.labels.value |
原始日志中的 HostReservationID (重命名后为 ReservationID )的值用作标签的值。此标签的键设置为 host_reservation_id 。 |
MemberOfServiceLinkedResourceGroup |
entity.entity.asset.attribute.labels.value |
MemberOfServiceLinkedResourceGroup 的值会转换为字符串,并用作标签的值。该键设置为 member_of_service_linked_resource_group 。 |
OwnerID |
entity.entity.asset.attribute.labels.value |
原始日志中的 OwnerID 值用作标签的值。此标签的键设置为 owner_id 。 |
ReleaseTime |
entity.entity.asset.attribute.labels.value |
原始日志中的 ReleaseTime 值用作标签的值。此标签的键设置为 release_time 。 |
State |
entity.entity.asset.attribute.labels.value |
原始日志中的 State 值用作标签的值。此标签的键设置为 state 。 |
TagSet |
entity.entity.asset.attribute.labels |
系统会迭代 TagSet 数组,并将每个标记的 Key 和 Value 分别用作标签的键和值。解析器会将值 AMAZON_WEB_SERVICES 分配给此字段。原始日志中的 collection_time 会映射到 collected_timestamp 字段。解析器会将值 ASSET 分配给此字段。解析器会将值 AWS EC2 HOSTS 分配给此字段。解析器会将值 AWS 分配给此字段。关系派生自 Instances 和 OutpostArn 字段,但这些字段本身不会直接映射到 IDM 对象。解析器逻辑会根据这些字段创建关系对象,并将其合并到 relations 数组中。 |
collection_time |
entity.metadata.collected_timestamp |
日志的 collection_time 用作事件的 collected_timestamp 。 |
变化
2024-01-31
- 添加了对新架构的支持。
2023-12-14
- 新创建的解析器。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。