收集 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 值區,然後 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」(具備強化觀測功能的容器洞察)。
  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. 選取「自訂信任政策」
  3. 貼上下列信任政策:

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

  5. 搜尋並選取「ECSMetricsFirehoseS3Policy」ECSMetricsFirehoseS3Policy

  6. 點選「下一步」

  7. 在「角色名稱」欄位中輸入 ECSMetricsFirehoseToS3Role

  8. 按一下「建立角色」

建立 Amazon Data Firehose 串流

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

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

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

    • 緩衝區大小5 MiB (預設)。
    • 緩衝區間隔300 秒 (預設)。
  9. 在「進階設定」下方,完成下列操作:

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

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

設定 CloudWatch Logs 的 IAM 角色

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

建立 IAM 政策

  1. 依序前往「IAM」>「Policies」>「Create policy」
  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. 選取「自訂信任政策」
  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. 在「角色名稱」欄位中輸入 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. 在「Access Keys」部分中,按一下「Create Access Key」
  5. 選取「第三方服務」做為「用途」
  6. 按一下「下一步」
    • 選用:新增說明標記。
  7. 按一下「建立存取金鑰」
  8. 按一下「Download .csv file」(下載 .csv 檔案),儲存「Access Key」(存取金鑰) 和「Secret Access Key」(私密存取金鑰),以供日後參考。
  9. 按一下 [完成]
  10. 選取「權限」分頁標籤。
  11. 在「Permissions policies」(權限政策) 區段中,按一下「Add permissions」(新增權限)
  12. 選取「新增權限」
  13. 選取「直接附加政策」
  14. 搜尋「AmazonS3FullAccess」AmazonS3FullAccess政策。
  15. 選取政策。
  16. 點選「下一步」
  17. 按一下「Add permissions」。

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

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 在下一個頁面中,按一下「設定單一動態饋給」
  4. 輸入動態饋給名稱的專屬名稱。
  5. 選取「Amazon S3 V2」做為「來源類型」
  6. 選取「AWS ECS Metrics」(AWS ECS 指標) 做為「Log type」(記錄類型)
  7. 依序點按「繼續」和「提交」
  8. 為下列欄位指定值:
    • S3 URIs3://ecs-metrics-to-secops/ecs-metrics/
    • 來源刪除選項:根據偏好設定選取刪除選項
    • 檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)
    • 存取金鑰 ID:具有 S3 值區存取權的使用者存取金鑰
    • 存取密鑰:具有 S3 bucket 存取權的使用者私密金鑰
    • 資產命名空間資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤
  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 已對應:trueSTATUS_UPDATEtrueNETWORK_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"INFORMATIONALDEBUG → `LO...
target_port target.port 直接對應
url target.url 直接對應
不適用 metadata.event_type 常數:STATUS_UPDATE
不適用 security_result.severity 常數:CRITICAL

變更記錄

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

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