收集 AWS EC2 主機記錄

剖析器版本:1.0

支援:

本文說明如何將 AWS EC2 主機記錄整合至 Google Security Operations,以便監控及分析。整合程序包括剖析 EC2 主機記錄並對應至統合式資料模型 (UDM)、執行資料轉換,以及建立 EC2 主機和執行個體之間的關係。記錄檔提供執行個體、主機屬性、執行個體類型和效能指標等實用資訊,可用於安全監控、稽核和法規遵循。

事前準備

  • 確認您擁有 Google SecOps 執行個體。
  • 確認您具備 AWS 的特殊權限。

設定 AWS IAM 和 S3

  1. 按照這份使用手冊的指示建立 Amazon S3 儲存空間:建立儲存空間。
  2. 儲存 bucket 的「名稱」和「區域」,稍後會用到。
  3. 按照這份使用者指南建立使用者:建立 IAM 使用者。
  4. 選取建立的「使用者」。
  5. 選取「安全憑證」分頁標籤。
  6. 在「存取金鑰」部分,按一下「建立存取金鑰」。
  7. 選取「第三方服務」做為「用途」。
  8. 點選「下一步」。
  9. 新增說明標記 (如有需要)。
  10. 按一下「建立存取金鑰」。
  11. 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」以供日後使用。
  12. 按一下「完成」。
  13. 選取 [權限] 分頁標籤。
  14. 在「權限政策」部分,按一下「新增權限」。
  15. 選取「新增權限」。
  16. 選取「直接附加政策」
  17. 搜尋並選取「AmazonS3FullAccess」AmazonS3FullAccess政策。
  18. 點選「下一步」。
  19. 按一下「Add permissions」。

設定 AWS KMS 的 CloudTrail

  1. 登入 AWS 管理主控台。
  2. 在搜尋列中輸入並選取服務清單中的「CloudTrail」CloudTrail。
  3. 按一下「建立路徑」。
  4. 提供追蹤記錄名稱,例如 EC2-Activity-Trail。
  5. 勾選「為機構中的所有帳戶啟用」核取方塊。
  6. 輸入稍早建立的 S3 bucket URI (格式應為 s3://your-log-bucket-name/),或建立新的 S3 bucket。
  7. 如果啟用 SSE-KMS,請提供 AWS KMS 別名的名稱,或選擇現有的 AWS KMS 金鑰。
  8. 其他設定可以保留預設值。
  9. 點選「下一步」。
  10. 在「事件類型」下方選取「管理事件」和「資料事件」,擷取 EC2 主機活動。
  11. 點選「下一步」。
  12. 在「查看並建立」中檢查設定。
  13. 按一下「建立路徑」。
  14. 選用:如果您建立了新的 bucket,請繼續進行下列程序:
    • 前往 S3。
    • 找出並選取新建立的記錄檔 bucket。
    • 選取「AWSLogs」AWSLogs資料夾。
    • 按一下「複製 S3 URI」並儲存。

在 Google SecOps 中設定動態饋給,擷取 AWS EC2 主機

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增」。
  3. 在「動態饋給名稱」欄位中,輸入動態饋給的名稱,例如「AWS EC2 主機記錄」。
  4. 選取「Amazon S3 V2」做為「來源類型」。
  5. 選取「AWS EC2 Hosts」做為「記錄類型」。
  6. 點選「下一步」。
  7. 指定下列輸入參數的值:

    • S3 URI:bucket URI。
      • s3://your-log-bucket-name/
        • 將 your-log-bucket-name 替換為 bucket 的實際名稱。
    • 來源刪除選項:根據偏好選取刪除選項。

    • 檔案存在時間上限:納入在過去天數內修改的檔案。預設為 180 天。

    • 存取金鑰 ID:具有 S3 bucket 存取權的使用者存取金鑰。

    • 私密存取金鑰:具有 S3 bucket 存取權的使用者私密金鑰。

    • Asset namespace:資產命名空間。

    • 擷取標籤:要套用至這個動態饋給事件的標籤。

  8. 點選「下一步」。

  9. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。

支援的 AWS EC2 主機記錄格式

AWS EC2 主機剖析器支援 JSON 格式的記錄。

支援的 AWS EC2 主機範例記錄

  • JSON

      {
        "AllocationTime": "2018-01-23T12:33:31.692Z",
        "AllowsMultipleInstanceTypes": "",
        "AssetID": "",
        "AutoPlacement": "off",
        "AvailabilityZone": "us-east-1a",
        "AvailabilityZoneID": "",
        "AvailableCapacity": {
          "VCPUs": 96,
          "Instance": {
            "Available": 48,
            "Total": 48,
            "Type": "m5.large"
          }
        },
        "ClientToken": "",
        "ID": "h-05abcdd12ee9ca123",
        "Maintenance": "",
        "Properties": {
          "Cores": 48,
          "InstanceFamily": "",
          "InstanceType": "m5.large",
          "Sockets": 2,
          "TotalVCPUs": 96
        },
        "Recovery": "off",
        "ReservationID": "",
        "Instances": null,
        "MemberOfServiceLinkedResourceGroup": false,
        "OutpostARN": "",
        "OwnerID": "",
        "ReleaseTime": "",
        "State": "available",
        "TagSet": null
      }
    

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。

變更記錄

查看這個剖析器的變更記錄

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。