Amazon ECS 叢集的執行期涵蓋範圍和疑難排解 - Amazon GuardDuty

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

Amazon ECS 叢集的執行期涵蓋範圍和疑難排解

Amazon ECS 叢集的執行期涵蓋範圍包括在 AWS Fargate 和 Amazon ECS 容器執行個體上執行的任務1

對於在 Fargate 上執行的 Amazon ECS 叢集,執行期涵蓋範圍會在任務層級進行評估。ECS 叢集執行期涵蓋範圍包括在您為 Fargate 啟用執行期監控和自動代理程式組態 (僅限 ECS) 之後開始執行的 Fargate 任務。根據預設,Fargate 任務是不可變的。GuardDuty 將無法安裝安全代理程式來監控已執行任務上的容器。若要包含這類 Fargate 任務,您必須停止並再次啟動任務。請務必檢查是否支援相關聯的服務。

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

檢閱涵蓋範圍統計資料

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

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

考量事項

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

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

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

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

    若要識別相關聯 Amazon EC2 執行個體的涵蓋範圍問題並進行疑難排解,請參閱 Amazon EC2 執行個體對 Amazon EC2 執行期涵蓋範圍問題進行故障診斷的 。

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

Console
  • 登入 AWS Management Console ,並在 https://console.aws.amazon.com/guardduty/:// 開啟 GuardDuty 主控台。

  • 在導覽窗格中,選擇執行期監控

  • 選擇執行期涵蓋範圍索引標籤。

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

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

      • 帳戶 ID

      • 叢集名稱

      • 代理程式管理類型

      • 涵蓋範圍狀態

  • 如果您的任何 Amazon ECS 叢集的涵蓋狀態運作狀態不佳問題欄會包含運作狀態不佳原因的其他資訊。

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

API/CLI
  • 使用您自己的有效偵測器 ID、目前區域和服務端點執行 ListCoverage API。您可以使用此 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/ 主控台中的設定頁面,或執行 ListDetectors API。

    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
  • 執行 GetCoverageStatistics API,以根據 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/ 主控台中的設定頁面,或執行 ListDetectors API。

    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-Fargate 執行期涵蓋範圍問題進行故障診斷

使用 EventBridge 通知變更涵蓋範圍狀態

Amazon ECS 叢集的涵蓋範圍狀態可能顯示為運作狀態不佳。若要了解涵蓋範圍狀態何時變更,建議您定期監控涵蓋範圍狀態,並在狀態變成運作狀態不良時進行故障診斷。或者,您可以建立 Amazon EventBridge 規則,以在涵蓋範圍狀態從運作狀態不佳變更為正常運作或其他狀態時收到通知。GuardDuty 預設在您帳戶的EventBridge 匯流排中發布此通知。

範例通知結構描述

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

此外,您可以使用下列範例通知結構描述來建立自訂事件模式。請務必替換您帳戶的值。若要在 Amazon ECS 叢集的涵蓋範圍狀態從 變更為 Healthy 時收到通知Unhealthydetail-type 應該是 GuardDuty Runtime Protection Unhealthy。若要在涵蓋範圍狀態從 Unhealthy 變更成 Healthy 時收到通知,請使用 GuardDuty 執行期監控運作狀態不良取代 detail-type 的值。

{ "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 叢集的涵蓋範圍狀態為狀況不良,您可以在問題欄下檢視原因。

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

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

客服人員未報告

客服人員未報告 中的任務 TaskDefinition - 'TASK_DEFINITION'

驗證 Amazon ECS 叢集任務的 VPC 端點是否已正確設定。如需詳細資訊,請參閱驗證 VPC 端點組態

如果您的組織有服務控制政策 (SCP),請驗證許可界限未限制guardduty:SendSecurityTelemetry許可。如需詳細資訊,請參閱在多帳戶環境中驗證您的組織服務控制政策

VPC_ISSUE; for task in TaskDefinition - 'TASK_DEFINITION'

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

代理程式已結束

ExitCode:EXIT_CODE適用於 中的任務 TaskDefinition - 'TASK_DEFINITION'

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

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

ExitCode:EXIT_CODE原因為 中的任務為 'EXIT_CODE' TaskDefinition - 'TASK_DEFINITION'

代理程式已結束:原因CannotPullContainerError::已重試提取映像資訊清單...

在此案例中,GuardDuty 可能無法提取附屬容器映像。您的任務將繼續執行,但 GuardDuty 無法偵測潛在威脅。一次執行下列故障診斷步驟一,以檢查其是否有助於解決涵蓋範圍問題:

這三個元件 (許可、網路連線和安全群組組態) 是獨立的,但對於從 Amazon ECR 成功下載 GuardDuty 容器映像都是必要的。

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

VPC 端點建立失敗

啟用私有 DNS 需要將 true vpcIdenableDnsSupportenableDnsHostnames VPC 屬性都設為 (服務:EC2、狀態碼:400、請求 ID:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111)。

請確保將下列 VPC 屬性設定為 trueenableDnsSupportenableDnsHostnames。如需詳細資訊,請參閱 VPC 中的 DNS 屬性

如果您造訪 https://console.aws.amazon.com/vpc/ 以使用 Amazon VPC 主控台建立 Amazon VPC,請務必選擇啟用 DNS 主機名稱啟用 DNS 解析。如需詳細資訊,請參閱 VPC 組態選項

未佈建代理程式

SERVICE task(s) 的 不支援叫用 TaskDefinition - 'TASK_DEFINITION'

不支援SERVICE的 調用此任務。

中任務不支援的 CPU 架構 (「TYPE」) TaskDefinition - 'TASK_DEFINITION'

此任務正在不支援的 CPU 架構上執行。如需支援的 CPU 架構相關資訊,請參閱 驗證架構需求

TaskExecutionRole 從 缺少 TaskDefinition - 'TASK_DEFINITION'

ECS 任務執行角色遺失。如需提供任務執行角色和必要許可的資訊,請參閱 容器映像存取的先決條件

中的 task (s) 缺少網路組態 'CONFIGURATION_DETAILS' TaskDefinition - 'TASK_DEFINITION'

網路組態問題可能會因為缺少 VPC 組態,或子網路遺失或空白而出現。

驗證您的網路組態是否正確。如需詳細資訊,請參閱容器映像存取的先決條件

如需詳細資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 任務定義參數

叢集具有排除標籤時啟動的任務會從執行期監控中排除。受影響的任務 ID (s):'TASK_ID

當您將預先定義的 GuardDuty 標籤從 GuardDutyManaged-true 變更為 GuardDutyManaged- 時false,GuardDuty 將不會收到此 Amazon ECS 叢集的執行期事件。

將標籤更新為 GuardDutyManaged-true,然後重新啟動任務。

當叢集具有排除標籤時部署的服務會從執行期監控中排除。受影響的服務名稱 ():'SERVICE_NAME'

使用排除標籤 GuardDutyManaged- 部署的服務時false,GuardDuty 不會收到此 Amazon ECS 叢集的執行期事件。

將標籤更新為 GuardDutyManaged-true,然後重新部署服務。

不涵蓋啟用自動代理程式組態之前啟動的任務。受影響的任務 ID (s):'TASK_ID'

當叢集包含啟用 Amazon ECS 自動化代理程式組態之前啟動的任務時,GuardDuty 將無法保護此項目。重新啟動任務以供 GuardDuty 監控。

不涵蓋啟用自動化代理程式組態之前部署的服務。受影響的服務名稱 (s):'SERVICE_NAME'

在為 Amazon ECS 啟用自動化代理程式組態之前部署服務時,GuardDuty 將不會收到 ECS 叢集的執行期事件。

服務「SERVICE_NAME」需要新的部署才能修正/疑難排解。請參閱文件 (受影響的服務名稱):'SERVICE_NAME'

不支援在啟用執行期監控之前啟動的服務。

您可以依照《Amazon Elastic Container Service 開發人員指南》中的使用主控台更新 Amazon ECS 服務的步驟,重新啟動服務或使用 forceNewDeployment 選項更新服務。 或者,您也可以使用 Amazon Elastic Container Service API 參考UpdateService 下的步驟。

啟用執行期監控之前啟動的任務需要重新啟動。受影響的任務 ID (s):'TASK_ID_1'

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

其他

無法識別的問題,適用於 中的任務 TaskDefinition - 'TASK_DEFINITION'

使用下列問題來識別問題的根本原因:

  • 在您啟用執行期監控之前,任務是否開始?

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

  • 在您啟用執行期監控之前,此任務是否屬於已開始的服務部署?

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

    您也可以使用 UpdateServiceAWS CLI

  • 從執行期監控中排除 ECS 叢集之後,任務是否啟動?

    當您將預先定義的 GuardDuty 標籤從 GuardDutyManaged-true 變更為 GuardDutyManaged- 時false,GuardDuty 將不會收到 ECS 叢集的執行期事件。

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

    GuardDuty 執行期監控不支援舊格式為 的任務涵蓋範圍taskArn

    如需 Amazon ECS 資源的 Amazon Resource Name ARNs) 相關資訊,請參閱 Amazon Resource Name (ARNs和 IDs