收集 AWS EC2 主机日志

支持的平台:

本文档介绍了如何将 AWS EC2 主机日志集成到 Google Security Operations 中以进行监控和分析。集成涉及解析 EC2 主机日志并将其映射到统一数据模型 (UDM)、执行数据转换,以及在 EC2 主机和实例之间建立关系。这些日志提供了有关实例、主机属性、实例类型和性能指标的实用信息,可用于安全监控、审核和合规性检查。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您拥有对 AWS 的特权访问权限。

配置 AWS IAM 和 S3

  1. 按照此用户指南中的说明创建 Amazon S3 存储分区创建存储分区
  2. 保存存储分区的名称区域,以备日后使用。
  3. 按照此用户指南中的说明创建用户:创建 IAM 用户
  4. 选择创建的用户
  5. 选择安全凭据标签页。
  6. 点击访问密钥部分中的创建访问密钥
  7. 选择第三方服务作为用例
  8. 点击下一步
  9. 可选:添加说明标记。
  10. 点击创建访问密钥
  11. 点击下载 CSV 文件,保存访问密钥密钥以供日后使用。
  12. 点击完成
  13. 选择权限标签页。
  14. 权限政策部分中,点击添加权限
  15. 选择添加权限
  16. 选择直接附加政策
  17. 搜索并选择 AmazonS3FullAccess 政策。
  18. 点击下一步
  19. 点击添加权限

为 AWS KMS 配置 CloudTrail

  1. 登录 AWS Management Console
  2. 在搜索栏中输入 CloudTrail,然后从服务列表中选择该服务。
  3. 点击创建小路
  4. 提供轨迹名称;例如 EC2-Activity-Trail
  5. 选中为组织中的所有账号启用复选框。
  6. 输入之前创建的 S3 存储分区 URI(格式应为:s3://your-log-bucket-name/),或创建新的 S3 存储分区。
  7. 如果启用了 SSE-KMS,请为 AWS KMS 别名提供名称,或选择现有的 AWS KMS 密钥
  8. 您可以将其他设置保留为默认设置。
  9. 点击下一步
  10. 事件类型下,选择管理事件数据事件,以捕获 EC2 主机活动。
  11. 点击下一步
  12. 检查并创建中检查设置。
  13. 点击创建小路
  14. 可选:如果您创建了新存储分区,请继续执行以下流程:
    • 前往 S3
    • 找到并选择新创建的日志存储分区。
    • 选择文件夹 AWSLogs
    • 点击复制 S3 URI 并保存。

在 Google SecOps 中配置 Feed 以提取 AWS EC2 主机

  1. 依次前往 SIEM 设置 > Feed
  2. 点击新增
  3. Feed name(Feed 名称)字段中,输入 Feed 的名称;例如,AWS EC2 主机日志
  4. 选择 Amazon S3 作为来源类型
  5. 选择 AWS EC2 主机作为日志类型
  6. 点击下一步
  7. 为以下输入参数指定值:

    • 区域:Amazon S3 存储分区所在的区域。
    • S3 URI:存储分区 URI。
      • s3://your-log-bucket-name/
        • your-log-bucket-name 替换为存储分区的实际名称。
    • URI 是:选择目录包含子目录的目录
    • 来源删除选项:根据您的偏好选择删除选项。

    • 访问密钥 ID:有权访问 S3 存储分区的用户访问密钥。

    • 私有访问密钥:有权访问 S3 存储分区的用户私钥。

    • 资源命名空间资源命名空间

    • 提取标签:要应用于此 Feed 中的事件的标签。

  8. 点击下一步

  9. 最终确定界面中查看新的 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 数组,并将每个标记的 KeyValue 分别用作标签的键和值。解析器会将值 AMAZON_WEB_SERVICES 分配给此字段。原始日志中的 collection_time 会映射到 collected_timestamp 字段。解析器会将值 ASSET 分配给此字段。解析器会将值 AWS EC2 HOSTS 分配给此字段。解析器会将值 AWS 分配给此字段。关系派生自 InstancesOutpostArn 字段,但这些字段本身不会直接映射到 IDM 对象。解析器逻辑会根据这些字段创建关系对象,并将其合并到 relations 数组中。
collection_time entity.metadata.collected_timestamp 日志的 collection_time 用作事件的 collected_timestamp

变化

2024-01-31

  • 添加了对新架构的支持。

2023-12-14

  • 新创建的解析器。

需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。