Amazon ECS クラスターのランタイムカバレッジとトラブルシューティング - Amazon GuardDuty

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon ECS クラスターのランタイムカバレッジとトラブルシューティング

Amazon ECS クラスターのランタイムカバレッジには、 AWS Fargate および Amazon ECS コンテナインスタンスで実行されるタスクが含まれます1

Fargate で実行される Amazon ECS クラスターの場合、ランタイムカバレッジはタスクレベルで評価されます。ECS クラスターのランタイムカバレッジには、Fargate (ECS のみ) の Runtime Monitoring と自動エージェント設定を有効にした後に実行を開始した Fargate タスクが含まれます。デフォルトでは、Fargate タスクは変更できません。GuardDuty は、セキュリティエージェントをインストールして、既に実行されているタスクのコンテナをモニタリングすることはできません。このような Fargate タスクを含めるには、タスクを停止して再度開始する必要があります。関連付けられたサービスがサポートされていることを確認します。

Amazon ECS コンテナの詳細については、キャパシティの作成に関するページを参照してください。

カバレッジ統計の確認

自分のアカウントまたはメンバーアカウントに関連付けられた Amazon ECS リソースのカバレッジ統計は、選択した AWS リージョン内のすべての ECS クラスターに対する正常な ECS クラスターの割合です。これには、Fargate インスタンスと Amazon EC2 インスタンスの両方に関連付けられた Amazon 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 インスタンスの「Amazon EC2 ランタイムカバレッジの問題のトラブルシューティング」を参照してください。

いずれかのアクセス方法を選択して、アカウントのカバレッジ統計を確認してください。

Console
  • にサインイン AWS Management Console し、https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  • ナビゲーションペインで、[Runtime Monitoring] を選択します。

  • [ランタイムカバレッジ] タブを選択します。

  • [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 から Unhealthy に変更されたときに通知を受け取るには、detail-typeGuardDuty Runtime Protection Unhealthy である必要があります。カバレッジステータスが Unhealthy から Healthy に変更されたときに通知を受け取るには、detail-type の値を GuardDuty Runtime Protection Healthy に置き換えます。

{ "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 の問題の詳細を確認してください。

エージェントが終了した

終了コード: TaskDefinition - 'TASK_DEFINITION' のタスク用 EXIT_CODE

追加情報で問題の詳細を確認してください。

理由: TaskDefinition - 'TASK_DEFINITION' のタスクの [理由]

終了コード: 理由付き EXIT_CODE: TaskDefinition - 'TASK_DEFINITION' のタスクの「EXIT_CODE

エージェントが終了しました: 理由: CannotPullContainerError: プルイメージマニフェストが再試行されました...

タスク実行ロールには、次の Amazon Elastic Container Registry (Amazon ECR) アクセス許可が必要です。

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

詳細については、「ECR アクセス許可とサブネットの詳細を指定する」を参照してください。

Amazon ECR アクセス許可を追加した後、タスクを再起動する必要があります。

問題が解決しない場合は、「AWS Step Functions ワークフローが予期せず失敗する」を参照してください。

VPC エンドポイントの作成に失敗

プライベート DNS を有効にするには、vpcId (サービス: EC2、ステータスコード:400、リクエスト ID: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 trueに対して enableDnsSupportenableDnsHostnames VPC 属性の両方を に設定する必要があります。

次の VPC 属性が true - enableDnsSupport および enableDnsHostnames に設定されていることを確認する必要があります。詳細については、「VPC の DNS 属性」を参照してください。

https://console.aws.amazon.com/vpc/ にある Amazon VPC コンソールを使用して Amazon VPC を作成する場合は、必ず [DNS ホスト名を有効にする] および [解決を有効にする] の両方を選択してください。詳細については、「VPC 設定オプション」を参照してください。

エージェントがプロビジョニングされていない

TaskDefinition - 'TASK_DEFINITION' のタスクに対する SERVICE によるサポートされていない呼び出し

このタスクは、サポートされていない SERVICE によって呼び出されました。

TaskDefinition - 'TASK_DEFINITION' のタスクでサポートされていない CPU アーキテクチャ 'TYPE'

このタスクは、サポートされていない CPU アーキテクチャで実行されています。サポートされる CPU アーキテクチャの詳細については、「アーキテクチャ要件の検証」を参照してください。

TaskDefinition - 'TASK_DEFINITION'TaskExecutionRole がありません

ECS タスク実行ロールがありません。タスク実行ロールと必要なアクセス許可の提供については、「ECR アクセス許可とサブネットの詳細を指定する」を参照してください。

TaskDefinition - 'TASK_DEFINITION' のタスクのネットワーク設定 'CONFIGURATION_DETAILS' がありません

VPC 設定が欠落しているか、サブネットが欠落または空であるため、ネットワーク設定の問題が表示される場合があります。

ネットワーク設定が正しいことを確認します。詳細については、「ECR アクセス許可とサブネットの詳細を指定する」を参照してください。

詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「Amazon ECS タスク定義パラメータ」を参照してください。

クラスターに除外タグがある場合に開始されたタスクは、Runtime Monitoring から除外されます。影響を受けるタスク ID (複数可): 'TASK_ID

事前定義された GuardDuty タグを GuardDutyManaged-true から GuardDutyManaged- に変更するとfalse、GuardDuty はこの Amazon ECS クラスターのランタイムイベントを受信しません。

タグを GuardDutyManaged-true に更新し、タスクを再起動します。

クラスターに除外タグがある場合にデプロイされたサービスは、Runtime Monitoring から除外されます。影響を受けるサービス名 (複数可): 'SERVICE_NAME'

除外タグ GuardDutyManaged- でデプロイされたサービスはfalse、この Amazon ECS クラスターのランタイムイベントを受信 GuardDuty しません。

タグを GuardDutyManaged-true に更新し、サービスを再デプロイします。

自動エージェント設定を有効にする前に開始されたタスクは対象外です。影響を受けるタスク ID (複数可): 'TASK_ID'

クラスターに Amazon ECS の自動エージェント設定を有効にする前に起動されたタスクが含まれている場合、GuardDuty はこれを保護できません。タスクを再起動して、GuardDuty によってモニタリングされるようにします。

自動エージェント設定を有効にする前にデプロイされたサービスは対象外です。影響を受けるサービス名 (複数可): 'SERVICE_NAME'

Amazon ECS の自動エージェント設定を有効にする前にサービスがデプロイされると、GuardDuty は ECS クラスターのランタイムイベントを受信しません。

サービス 'SERVICE_NAME' では、修正/トラブルシューティングに新しいデプロイが必要です。ドキュメントを参照、影響を受けるサービス名 (複数可): 'SERVICE_NAME'

Runtime Monitoring を有効にする前に開始されたサービスはサポートされていません。

「Amazon Elastic Container Service デベロッパーガイド」の「コンソールを使用した Amazon ECS サービスの更新」の手順に従って、サービスを再起動するか、forceNewDeploymentオプションでサービスを更新できます。 または、「Amazon Elastic Container Service API リファレンス」のUpdateService」の手順を使用することもできます。

Runtime Monitoring を有効にする前に開始されたタスクには、再起動が必要です。影響を受けるタスク ID (複数可): 'TASK_ID_1'

Amazon ECS では、タスクは変更できません。ランタイム動作または実行中の AWS Fargate タスクを評価するには、Runtime Monitoring がすでに有効になっていることを確認し、GuardDuty のタスクを再起動してコンテナサイドカーを追加します。

その他

TaskDefinition - 'TASK_DEFINITION' のタスクにおける未確認の問題

次の質問を使用して、問題の根本原因を特定します。

  • タスクは Runtime Monitoring を有効にする前に開始されましたか?

    Amazon ECS では、タスクは変更できません。実行中の Fargate タスクのランタイムの動作を評価するには、Runtime Monitoring がすでに有効になっていることを確認し、GuardDuty のタスクを再起動してコンテナサイドカーを追加します。

  • このタスクは、Runtime Monitoring を有効にする前に開始されたサービスデプロイの一部ですか?

    「はい」の場合は、サービスを再起動するか、「サービスの更新」の手順に従い、forceNewDeployment によってサービスを更新できます。

    [UpdateService] または [AWS CLI] を使用することもできます。

  • タスクは ECS クラスターを Runtime Monitoring から除外してから起動しましたか?

    定義済みの GuardDuty タグを GuardDutyManaged-true から GuardDutyManaged-false に変更すると、GuardDuty は ECS クラスターのランタイムイベントを受信しなくなります。

  • サービスには、古い形式の taskArn のタスクが含まれていますか?

    GuardDuty Runtime Monitoring は、古い形式の taskArn を持つタスクのカバレッジをサポートしていません。

    Amazon ECS リソースの Amazon リソースネーム (ARN) の詳細については、「Amazon リソースネーム (ARN) と ID」を参照してください。