收集 AWS ECS 指標記錄

剖析器版本:1.0

支援的國家/地區:

本文說明如何使用 Amazon S3,將 AWS ECS 指標記錄檔擷取至 Google Security Operations。

Amazon Elastic Container Service (Amazon ECS) 是全代管的容器自動化調度管理服務,可協助您部署、管理及擴充容器化應用程式。CloudWatch Container Insights 會收集、匯總及摘要 ECS 叢集、服務、工作和容器的指標和記錄,包括 CPU 使用率、記憶體用量、網路流量和儲存空間 I/O。這項整合功能會使用 Amazon Data Firehose,將 Container Insights 效能記錄事件從 CloudWatch Logs 串流至 S3 bucket,然後 Google SecOps 會使用 Amazon S3 V2 擷取這些事件。

事前準備

請確認您符合下列必要條件:

  • Google SecOps 執行個體
  • AWS 管理主控台的特殊權限,可管理:
    • Amazon ECS (叢集、帳戶設定)
    • Amazon CloudWatch Logs (記錄群組、訂閱篩選器)
    • Amazon Data Firehose (傳遞串流)
    • Amazon S3 (儲存桶)
    • AWS IAM (角色、政策、使用者)

在 Amazon ECS 上啟用容器洞察

如要在 ECS 叢集的 CloudWatch Logs 中產生效能記錄事件,必須啟用 Container Insights。

在帳戶層級啟用 Container Insights

  1. 前往 https://console.aws.amazon.com/ecs/v2,登入 Amazon ECS 控制台。
  2. 在導覽窗格中,選取「帳戶設定」。
  3. 按一下「Update」。
  4. 選取「Container Insights with enhanced observability」(具備強化觀測功能的 Container Insights)。
  5. 按一下 [儲存變更]。
  6. 在確認畫面中,按一下「確認」。

在現有叢集啟用 Container Insights

  • 如要更新現有 ECS 叢集,請執行下列 AWS CLI 指令 (將 your-cluster-name 替換成叢集名稱):

    aws ecs update-cluster-settings --cluster your-cluster-name --settings name=containerInsights,value=enhanced
    

驗證 CloudWatch 日誌群組

  • 啟用容器深入分析後,Amazon ECS 會自動建立 CloudWatch Logs 記錄檔群組,並採用下列命名慣例:

    /aws/ecs/containerinsights/your-cluster-name/performance
    

驗證方法:

  1. 在 AWS 控制台中,依序前往「CloudWatch」>「Logs」>「Log groups」。
  2. 搜尋 /aws/ecs/containerinsights/。
  3. 確認已啟用 Container Insights 的每個 ECS 叢集都有記錄群組。

設定 AWS S3 儲存貯體

  1. 按照這份使用手冊建立 Amazon S3 bucket:建立 bucket。
  2. 儲存 bucket 的「名稱」和「區域」,以供日後參考 (例如 ecs-metrics-to-secops)。

設定 Amazon Data Firehose 的 IAM 角色

Amazon Data Firehose 需要 IAM 角色,才能將記錄檔寫入 S3 bucket。

建立 IAM 政策

  1. 在 AWS 控制台中,依序前往「IAM」>「Policies」>「Create policy」。
  2. 選取「JSON」分頁標籤。
  3. 貼上下列政策 (將 ecs-metrics-to-secops 替換成實際值區名稱):

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "S3Delivery",
                "Effect": "Allow",
                "Action": [
                    "s3:AbortMultipartUpload",
                    "s3:GetBucketLocation",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:ListBucketMultipartUploads",
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::ecs-metrics-to-secops",
                    "arn:aws:s3:::ecs-metrics-to-secops/*"
                ]
            },
            {
                "Sid": "CloudWatchLogging",
                "Effect": "Allow",
                "Action": [
                    "logs:PutLogEvents"
                ],
                "Resource": "arn:aws:logs:*:*:log-group:/aws/kinesisfirehose/ecs-metrics-to-secops:log-stream:*"
            }
        ]
    }
    
  4. 點選「下一步」。

  5. 在「Policy name」(政策名稱) 欄位中輸入 ECSMetricsFirehoseS3Policy。

  6. 點選「建立政策」。

建立 IAM 角色

  1. 依序前往「IAM」>「角色」>「建立角色」。
  2. 選取「Custom trust policy」。
  3. 貼上下列信任政策:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "firehose.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  4. 點選「下一步」。

  5. 搜尋並選取「ECSMetricsFirehoseS3Policy」ECSMetricsFirehoseS3Policy。

  6. 點選「下一步」。

  7. 在「Role name」(角色名稱) 欄位中輸入 ECSMetricsFirehoseToS3Role。

  8. 按一下「建立角色」。

建立 Amazon Data Firehose 串流

  1. 前往 https://console.aws.amazon.com/kinesis 開啟 Kinesis 控制台。
  2. 在導覽窗格中,選取「Amazon Data Firehose」。
  3. 按一下「Create Firehose stream」。
  4. 在「選擇來源和目的地」下方,提供下列設定:
    • 來源:選取「直接 PUT」。
    • Destination:選取「Amazon S3」。
  5. 在「Firehose stream name」欄位中,輸入 ecs-metrics-to-secops。
  6. 在「轉換記錄」下方的「從 Amazon CloudWatch Logs 解壓縮來源記錄」部分中:

    1. 選取「開啟解壓縮功能」。
    2. 請勿選取「開啟訊息擷取功能」。
  7. 在「目的地設定」下方:

    • S3 儲存貯體:選取 S3 儲存貯體 ecs-metrics-to-secops。
    • S3 bucket prefix (選填):輸入 ecs-metrics/。
    • S3 儲存貯體錯誤輸出前置字串 (選用):輸入 firehose-errors/。
  8. 在「緩衝區提示」下方:

    • 緩衝區空間:5 MiB (預設)。
    • 緩衝間隔:300 秒 (預設)。
  9. 在「進階設定」下方:

    • 伺服器端加密:選用。如需加密,請啟用這項設定。
    • 錯誤記錄:選取「已啟用」 (建議)。
    • 權限:選取「選擇現有的 IAM 角色」,然後選取 ECSMetricsFirehoseToS3Role。
  10. 按一下「Create Firehose stream」。

  11. 等待串流「狀態」顯示為「有效」。

設定 CloudWatch Logs 的 IAM 角色

CloudWatch Logs 需要 IAM 角色,才能將記錄資料傳送至 Firehose 串流。

建立 IAM 政策

  1. 依序前往「IAM」>「政策」>「建立政策」。
  2. 選取「JSON」分頁標籤。
  3. 貼上下列政策 (將 <region> 和 <account-id> 替換為您的 AWS 區域和帳戶 ID):

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/ecs-metrics-to-secops"
            }
        ]
    }
    
  4. 點選「下一步」。

  5. 在「Policy name」(政策名稱) 欄位中輸入 ECSMetricsCWLtoFirehosePolicy。

  6. 點選「建立政策」。

建立 IAM 角色

  1. 依序前往「IAM」>「角色」>「建立角色」。
  2. 選取「Custom trust policy」。
  3. 貼上下列信任政策 (將 <region> 替換成您的 AWS 區域):

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<region>.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  4. 點選「下一步」。

  5. 搜尋並選取「ECSMetricsCWLtoFirehosePolicy」ECSMetricsCWLtoFirehosePolicy。

  6. 點選「下一步」。

  7. 在「Role name」(角色名稱) 欄位中輸入 ECSMetricsCWLtoFirehoseRole。

  8. 按一下「建立角色」。

建立 CloudWatch Logs 訂閱篩選器

  1. 在 AWS 控制台中,依序前往「CloudWatch」>「Logs」>「Log groups」。
  2. 選取記錄群組 /aws/ecs/containerinsights/your-cluster-name/performance。
  3. 選取「訂閱篩選條件」分頁標籤。
  4. 依序點選「建立」>「建立 Amazon Data Firehose 訂閱篩選器」。
  5. 提供下列設定詳細資料:
    • 目的地:選取 Firehose 串流 ecs-metrics-to-secops。
    • 授予權限:選取角色 ECSMetricsCWLtoFirehoseRole。
    • 訂閱篩選器名稱:輸入描述性名稱 (例如 ecs-metrics-to-secops-filter)。
    • 記錄格式:選取「其他」。
    • 訂閱篩選器模式:留空即可傳送所有 Container Insights 效能事件。
  6. 按一下「開始串流播放」。

為 Google SecOps 設定 IAM 使用者

Google SecOps 需要有權存取 S3 儲存空間的 IAM 使用者,才能擷取傳送的記錄。

  1. 按照這份使用者指南建立使用者:建立 IAM 使用者。
  2. 選取建立的「使用者」。
  3. 選取「安全憑證」分頁標籤。
  4. 在「存取金鑰」部分中,按一下「建立存取金鑰」。
  5. 選取「第三方服務」做為「用途」。
  6. 點選「下一步」。
    • 選用:新增說明標記。
  7. 按一下「建立存取金鑰」。
  8. 按一下「下載 .csv 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後參考。
  9. 按一下「完成」。
  10. 選取「權限」分頁標籤。
  11. 在「權限政策」部分,按一下「新增權限」。
  12. 選取「新增權限」。
  13. 選取「直接附加政策」。
  14. 搜尋 AmazonS3FullAccess 政策。
  15. 選取政策。
  16. 點選「下一步」。
  17. 按一下「Add permissions」。

在 Google SecOps 中設定資訊提供,擷取 AWS ECS 指標記錄

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在下一頁,點按「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 中輸入不重複的名稱。
  5. 選取「Amazon S3 V2」做為「來源類型」。
  6. 選取「AWS ECS Metrics」做為「記錄類型」。
  7. 依序點按「繼續」和「提交」。
  8. 為下列欄位指定值:
    • S3 URI:s3://ecs-metrics-to-secops/ecs-metrics/
    • 來源刪除選項:根據偏好選取刪除選項
    • 檔案存在時間上限:納入在過去天數內修改的檔案 (預設為 180 天)
    • 存取金鑰 ID:具有 S3 儲存貯體存取權的使用者存取金鑰
    • 私密存取金鑰:具有 S3 儲存空間存取權的使用者私密金鑰
    • 資產命名空間:資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤
  9. 依序點按「繼續」和「提交」。

UDM 對應表

記錄欄位 UDM 對應 邏輯
cluster_rtt_ClusterId_label additional.fields 已合併
cluster_rtt_description_label additional.fields 已合併
compressed_label additional.fields 已合併
connectionID_localvalue_label additional.fields 已合併
connectionID_serverValue_label additional.fields 已合併
request_id_label additional.fields 已合併
source_label additional.fields 已合併
Time metadata.event_timestamp 剖析為 RFC 3339
has_principal metadata.event_type 已對應:true → STATUS_UPDATE、true → NETWORK_CONNECTION
connection metadata.product_event_type 直接對應
sent_bytes network.sent_bytes 直接對應
hostname principal.asset.hostname 直接對應
principal_ip principal.asset.ip 已合併
hostname principal.hostname 直接對應
principal_ip principal.ip 已合併
principal_port principal.port 直接對應
action security_result.action 已合併
severity security_result.severity 已對應:"ALERT", "EMERGENCY" → HIGH、"INFO", "NOTICE" → INFORMATIONAL、DEBUG → `LO...
target_port target.port 直接對應
url target.url 直接對應
不適用 metadata.event_type 常數:STATUS_UPDATE
不適用 security_result.severity 常數:CRITICAL

變更記錄

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

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