Amazon ECS 叢集的涵蓋範圍 - Amazon GuardDuty

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon ECS 叢集的涵蓋範圍

Amazon ECS 叢集的執行階段涵蓋範圍包括在 Amazon ECS 容器執行個 AWS Fargate (Fargate) 體上執行的任務。1

對於在 Fargate 上執行的 Amazon ECS 叢集,會在任務層級評估執行階段涵蓋範圍。ECS 叢集執行階段涵蓋範圍包括在您為 Fargate 啟用執行階段監視和自動化代理程式組態 (僅限 ECS) 之後開始執行的 Fargate 工作。默認情況下,Fargate 任務是不可變的。 GuardDuty 將無法安裝安全代理程式來監視已在執行中工作上的容器。要包含這樣的 Fargate 任務,您必須停止並重新啟動任務。確保檢查是否支持關聯的服務。

如需 Amazon ECS 容器的相關資訊,請參閱容量建立

檢閱涵蓋範圍統計資料

與您自己的帳戶或您的會員帳戶相關聯之 Amazon ECS 資源的涵蓋範圍統計資料是所選 Amazon ECS 叢集中運作良好的 Amazon ECS 叢集的百分比。 AWS 區域這包括與 Fargate 和 Amazon EC2 執行個體相關聯的亞馬遜 ECS 叢集的涵蓋範圍。可以用下列方程式將此表示為:

(運作狀態良好的叢集/所有叢集) * 100

考量事項

  • ECS 叢集的涵蓋範圍統計資料包括與該 ECS 叢集相關聯的 Fargate 工作或 ECS 容器執行個體的涵蓋範圍狀態。Fargate 工作的涵蓋範圍狀態包括處於執行中狀態或最近已完成執行的工作。

  • ECS 叢集執行階段涵蓋範圍索引標籤中,容器執行個體涵蓋欄位會指出與 Amazon ECS 叢集相關聯之容器執行個體的涵蓋範圍狀態。

    如果您的 Amazon ECS 叢集僅包含 Fargate 任務,則計數會顯示為 0/0。

  • 如果您的 Amazon ECS 叢集與沒有安全代理程式的 Amazon EC2 執行個體相關聯,Amazon ECS 叢集也會呈現狀態不良的涵蓋狀態。

    若要識別相關 Amazon EC2 執行個體的涵蓋範圍問題並進行疑難排解,請參閱 對涵蓋範圍問題進行疑難排解 Amazon EC2 執行個體相關資訊。

選擇其中一種存取方法來檢閱您帳戶的涵蓋範圍統計資料。

Console
  • 請登入 AWS Management Console 並開啟 GuardDuty 主控台,網址為 https://console.aws.amazon.com/guardduty/

  • 在功能窗格中,選擇 [執行階段監視]。

  • 選擇「執行時間範圍」標籤。

  • ECS 叢集執行時期涵蓋範圍索引標籤下,您可以檢視「叢集」單表格中可用之每個 Amazon ECS 叢集的涵蓋範圍狀態彙總的涵蓋範圍統計資料。

    • 您可以依下列資料欄篩選「叢集」清單表格:

      • 帳戶 ID

      • 叢集名稱

      • 代理程式管理類型

      • 涵蓋範圍狀態

  • 如果您的任何 Amazon ECS 叢集的「涵蓋範圍」狀態為「不良狀態」,「問題」欄會包含有關狀態良原因的其他資訊。

    如果您的 Amazon ECS 叢集與 Amazon EC2 執行個體相關聯,請導覽至 EC2 執行個體執行個體執行階段涵蓋範圍索引標籤,並按叢集名稱欄位進行篩選,以檢視相關問題

API/CLI
  • 使用您自己的有效偵測器 ID、目前區域和服務端點執行 ListCoverageAPI。您可以使用此 API 篩選和排序執行個體清單。

    • 您可以使用 CriterionKey 的下列選項之一變更範例 filter-criteria

      • ACCOUNT_ID

      • ECS_CLUSTER_NAME

      • COVERAGE_STATUS

      • MANAGEMENT_TYPE

    • 您可以使用下列選項變更 sort-criteria 中的範例 AttributeName

      • ACCOUNT_ID

      • COVERAGE_STATUS

      • ISSUE

      • ECS_CLUSTER_NAME

      • UPDATED_AT

        只有在關聯的 Amazon ECS 叢集中建立新任務,或對應的涵蓋範圍狀態發生變更時,此欄位才會更新。

    • 您可以變更 max-results (最多 50 個)。

    • 要查找您detectorId的帳戶和當前區域的,請參閱 https://console.aws.amazon.com/guardduty/ 控制台中的 「設置」 頁面,或運行 ListDetectorsAPI

    aws guardduty --region us-east-1 list-coverage --detector-id 12abc34d567e8fa901bc2d34e56789f0 --sort-criteria '{"AttributeName": "ECS_CLUSTER_NAME", "OrderBy": "DESC"}' --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"111122223333"}}] }' --max-results 5
  • 執行 GetCoverageStatisticsAPI 以擷取涵蓋範圍彙總統計資料statisticsType

    • 您可以將範例 statisticsType 變更成下列選項之一:

      • COUNT_BY_COVERAGE_STATUS— 表示按涵蓋範圍狀態彙總的 ECS 叢集涵蓋率統計資料。

      • COUNT_BY_RESOURCE_TYPE— 根據列表中的 AWS 資源類型匯總覆蓋率統計信息。

      • 您可以在命令中變更範例 filter-criteria。您可將下列選項用於 CriterionKey

        • ACCOUNT_ID

        • ECS_CLUSTER_NAME

        • COVERAGE_STATUS

        • MANAGEMENT_TYPE

        • INSTANCE_ID

    • 要查找您detectorId的帳戶和當前區域的,請參閱 https://console.aws.amazon.com/guardduty/ 控制台中的 「設置」 頁面,或運行 ListDetectorsAPI

    aws guardduty --region us-east-1 get-coverage-statistics --detector-id 12abc34d567e8fa901bc2d34e56789f0 --statistics-type COUNT_BY_COVERAGE_STATUS --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"123456789012"}}] }'

如需涵蓋範圍問題的詳細資訊,請參閱對涵蓋範圍問題進行疑難排解

設定涵蓋範圍狀態變更通知

Amazon ECS 叢集的涵蓋範圍狀態可能會顯示為「狀況良」。若要知道保險狀態變更的時間,我們建議您定期監控保險狀態,並進行疑難排解狀態是否變為「不健康」。或者,您可以建立 Amazon EventBridge 規則,以便在涵蓋範圍狀態從「不良狀態」變更為「狀況良好」或其他狀態時接收通知。默認情況下,將其 GuardDuty 發佈在EventBridge 公共汽車中為您的帳戶。

範例通知結構描述

在 EventBridge 規則中,您可以使用預先定義的範例事件和事件模式來接收涵蓋範圍狀態通知。如需有關建立 EventBridge 規則的詳細資訊,請參閱 Amazon EventBridge 使用者指南中的建立規則

此外,您可以使用下列範例通知結構描述來建立自訂事件模式。請務必替換您帳戶的值。若要在 Amazon ECS 叢集的涵蓋範圍狀態從變更Healthy為時收到通知Unhealthydetail-type應為GuardDuty 執行階段保護狀態不良。若要在涵蓋範圍狀態從變更為時收到通知HealthyUnhealthydetail-type使用 [GuardDuty 執行階段保護正常] 取代的值。

{ "version": "0", "id": "event ID", "detail-type": "GuardDuty Runtime Protection Unhealthy", "source": "aws.guardduty", "account": "AWS 帳戶 ID", "time": "event timestamp (string)", "region": "AWS 區域", "resources": [ ], "detail": { "schemaVersion": "1.0", "resourceAccountId": "string", "currentStatus": "string", "previousStatus": "string", "resourceDetails": { "resourceType": "ECS", "ecsClusterDetails": { "clusterName":"", "fargateDetails":{ "issues":[], "managementType":"" }, "containerInstanceDetails":{ "coveredContainerInstances":int, "compatibleContainerInstances":int } } }, "issue": "string", "lastUpdatedAt": "timestamp" } }

對涵蓋範圍問題進行疑難排解

如果 Amazon ECS 叢集的涵蓋範圍狀態為「狀況不良」,您可以在「問題」欄下檢視原因。

下表提供 Fargate (僅限 Amazon ECS) 問題的建議疑難排解步驟。如需 Amazon EC2 執行個體涵蓋範圍問題的相關資訊,請參閱 對涵蓋範圍問題進行疑難排解 Amazon EC2 執行個體相關資訊

問題類型 額外資訊 建議的疑難排解步驟

代理程式未報告

代理程式未針對中的工作報告 TaskDefinition - 'TASK_DEFINITION'

驗證您的 VPC 端點組態是否正確。

如果您的組織有服務控制原則 (SCP),請確定它不會拒絕guardduty:SendSecurityTelemetry權限。如需詳細資訊,請參閱 驗證您的組織服務控制政策

VPC_ISSUE; for task in TaskDefinition - 'TASK_DEFINITION'

在額外資訊中檢視 VPC 問題詳細資訊。

代理程式已退出

ExitCode:EXIT_CODE針對工作 TaskDefinition - 'TASK_DEFINITION'

在額外資訊中檢視問題詳細資訊。

因:任務的原因 TaskDefinition - 'TASK_DEFINITION'

ExitCode:EXIT_CODE有原因:用於任務的「退出代碼TaskDefinition - 'TASK_DEFINITION'

代理退出:原因:CannotPullContainerError: 拉圖像清單已被重試...

任務執行角色必須具有以下亞馬遜彈性容器登錄 (Amazon ECR) 許可:

... "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ...

如需詳細資訊,請參閱 提供 ECR 權限和子網路詳細資料

新增 Amazon ECR 許可後,您必須重新啟動任務。

如果問題仍然存在,請參閱我的 AWS Step Functions 工作流程意外失敗

未佈建的其他或代理程式

無法辨識的問題, 適用於工作 TaskDefinition - 'TASK_DEFINITION'

請使用下列問題找出問題的根本原因:

  • 在啟用執行階段監視之前,工作是否已啟動?

    在 Amazon ECS 中,任務是不可變的。若要評估執行中 Fargate 工作的執行階段行為,請確定已啟用執行階段監控,然後重新啟動工作, GuardDuty 以新增容器附屬。

  • 這項工作是在您啟用執行階段監視之前啟動的服務部署的一部分嗎?

    如果是,您可以使用更新服務中的步驟forceNewDeployment來重新啟動服務或更新服務

    您也可以使用UpdateServiceAWS CLI

  • 從執行階段監視排除 ECS 叢集後,工作是否啟動?

    當您將預先定義的 GuardDuty 標籤從 GuardDutyManaged-變更trueGuardDutyManaged-時false, GuardDuty 將不會接收 ECS 叢集的執行階段事件。

  • 您的任務缺少了TaskExecutionRole嗎?

    必須新增,TaskExecutionRole因為 GuardDuty 需要從 ECR 存放庫下載 GuardDuty 容器的權限。如需詳細資訊,請參閱 提供 ECR 權限和子網路詳細資料

  • 您的服務是否包含舊格式的任務taskArn

    GuardDuty 運行時監視不支持具有舊格式的任務的覆蓋範圍taskArn

    有關 Amazon ECS 資源的 Amazon 資源名稱 (ARN) 的資訊,請參閱 Amazon 資源名稱 (ARN) 和 ID。