收集 AWS EC2 主機記錄
支援的國家/地區:
Google SecOps
SIEM
本文說明如何將 AWS EC2 主機記錄整合至 Google Security Operations,以進行監控和分析。整合程序包括剖析 EC2 主機記錄並對應至 Unified Data Model (UDM)、執行資料轉換,以及建立 EC2 主機和執行個體之間的關係。記錄檔提供有關執行個體、主機屬性、執行個體類型和效能指標的寶貴資訊,可用於安全監控、稽核和法規遵循。
事前準備
- 確認您有 Google SecOps 執行個體。
- 確認您具備 AWS 的特殊權限。
設定 AWS IAM 和 S3
- 按照這份使用者指南建立 Amazon S3 bucket:建立 bucket。
- 儲存 bucket 的「名稱」和「區域」,稍後會用到。
- 按照這份使用者指南建立使用者:建立 IAM 使用者。
- 選取建立的「使用者」。
- 選取「安全憑證」分頁標籤。
- 在「Access Keys」部分中,按一下「Create Access Key」。
- 選取「第三方服務」做為「用途」。
- 點選「下一步」。
- 選用:新增說明標記。
- 按一下「建立存取金鑰」。
- 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」以供日後使用。
- 按一下 [完成]。
- 選取 [權限] 分頁標籤。
- 在「Permissions policies」(權限政策) 區段中,按一下「Add permissions」(新增權限)。
- 選取「新增權限」。
- 選取「直接附加政策」
- 搜尋並選取 AmazonS3FullAccess 政策。
- 點選「下一步」。
- 按一下「Add permissions」。
為 AWS KMS 設定 CloudTrail
- 登入 AWS 管理主控台。
- 在搜尋列中輸入並選取服務清單中的 CloudTrail。
- 按一下「建立路徑」。
- 提供「Trail name」(追蹤記錄名稱),例如
EC2-Activity-Trail。 - 勾選「為機構中的所有帳戶啟用」核取方塊。
- 輸入先前建立的 S3 bucket URI (格式應為
s3://your-log-bucket-name/),或建立新的 S3 bucket。 - 如果啟用 SSE-KMS,請提供 AWS KMS 別名的名稱,或選擇現有的 AWS KMS 金鑰。
- 其他設定可維持預設值。
- 點選「下一步」。
- 在「事件類型」下方選取「管理事件」和「資料事件」,擷取 EC2 主機活動。
- 點選「下一步」。
- 在「檢查並建立」中檢查設定。
- 按一下「建立路徑」。
- 選用:如果您建立了新的值區,請繼續進行下列程序:
- 前往 S3。
- 找出並選取新建立的記錄檔值區。
- 選取「AWSLogs」AWSLogs資料夾。
- 按一下「複製 S3 URI」並儲存。
在 Google SecOps 中設定動態饋給,以便擷取 AWS EC2 主機
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱,例如「AWS EC2 主機記錄」。
- 選取「Amazon S3 V2」做為「來源類型」。
- 選取「AWS EC2 Hosts」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- S3 URI:值區 URI。
s3://your-log-bucket-name/- 請將
your-log-bucket-name替換為實際值區名稱。
- 請將
來源刪除選項:根據偏好選取刪除選項。
檔案存在時間上限:包含在過去天數內修改的檔案。預設值為 180 天。
存取金鑰 ID:具有 S3 值區存取權的使用者存取金鑰。
存取密鑰:具有 S3 bucket 存取權的使用者私密金鑰。
資產命名空間:資產命名空間。
擷取標籤:要套用至這個動態饋給事件的標籤。
- S3 URI:值區 URI。
點選「下一步」。
在「完成」畫面中檢查新的動態饋給設定,然後按一下「提交」。
支援的 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 專業人員尋求答案。