Amazon GuardDuty Runtime Monitoring の ECS の除外タグの挙動を確認してみた

Amazon GuardDuty Runtime Monitoring の ECS の除外タグの挙動を確認してみた

Clock Icon2025.06.09

こんにちは!コンサルティング部のくろすけです!

Amazon GuardDutyのRuntime Monitoringのドキュメントを漁っていて、ECSのみRuntime Monitoring有効化後に新規作成するリソースをGuardDutyManagedタグを使用して監視対象から除外できるのか明記がなかったので、検証してみました。

はじめに

Amazon GuardDutyのRuntime Monitoringは、Amazon EC2、Amazon ECS(Fargate)、Amazon EKSで動作するワークロードのランタイム脅威検出を行う機能です。

Runtime Monitoringを有効化すると、GuardDutyは対象リソースにセキュリティエージェントを自動的にデプロイし、ファイルアクセス、プロセス実行、ネットワーク接続などのランタイム動作を監視します。

Runtime Monitoringでは、リソースを監視対象から除外できる方法があります。
AWSドキュメントでは監視対象からの除外方法として、Runtime Monitoringの有効化前にリソースに GuardDutyManaged=false タグを設定することで、そのリソースを監視対象から除外できることが明記されています。

ドキュメントを調査した結果、Runtime Monitoringの有効化後でも、EC2とEKSに関しては起動時に GuardDutyManaged=false タグを設定することで監視対象から除外できることが明記されています。

しかし、Runtime Monitoring有効化後に新規作成されるECSクラスターに対して、起動時に GuardDutyManaged=false タグを付与することで監視対象から除外できるかどうかについては、明確な記述が見つかりませんでした。

おそらくはEC2とEKSと同様に制御できるのではと思いましたが、曖昧なニュアンスだったため、実際に検証を行うことにしました。

結論

検証結果として、Runtime Monitoring有効化後に新規作成されるECSクラスターに対しても、GuardDutyManaged=falseタグによる監視対象からの除外制御が可能でした。

やってみた

確認項目

今回は有効化以前の挙動も見てみようと思ったので、以下の4つのパターンで実際に検証を行いました。

  1. Runtime Monitoring有効化前 既存リソース × GuardDutyManaged=falseタグあり
  2. Runtime Monitoring有効化前 既存リソース × GuardDutyManaged=falseタグなし
  3. Runtime Monitoring有効化後 新規リソース × GuardDutyManaged=falseタグあり
  4. Runtime Monitoring有効化後 新規リソース × GuardDutyManaged=falseタグなし

検証手順

1. GuardDuty Runtime Monitoring 有効化前 ECS作成

今回の検証においてタスクの定義は、[Amazon ECS のタスク定義の例 - Amazon Elastic Container Service](https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/example_task_definitions.html#example_task_definition-webserver)を使用しています。
  1. ECSのコンソールを開く
  2. 左側のナビゲーションから [ クラスター ] を選択
    CleanShot 2025-06-06 at 14.04.08@2x.png
  3. [ クラスターの作成 ] を選択
    CleanShot 2025-06-06 at 14.04.26@2x.png
  4. クラスター名欄に [ test-cluster-GuardDutyManaged-false-RuntimeMonitoring-disable ] を入力
  5. [ タグ ] セクションを展開
  6. [ タグの追加 ] にて、キー欄に [ GuardDutyManaged ] を入力し、値欄に [ false ] を入力
  7. [ 作成 ] を選択
    CleanShot 2025-06-06 at 14.05.25@2x.png
  8. [ test-cluster-GuardDutyManaged-false-RuntimeMonitoring-disable ] を選択
    CleanShot 2025-06-06 at 14.06.17@2x.png
  9. サービスセクションの [ 作成 ] を選択
    CleanShot 2025-06-06 at 14.06.42@2x.png
  10. コンピューティングオプションの [ 起動タイプ ] を選択
  11. ネットワーキングを入力
  12. [ 作成 ] を選択
    CleanShot 2025-06-06 at 14.30.27@2x.png
  13. [ タスク ] タブを選択
  14. 表示されたタスクIDを選択してタスク詳細画面に移動
  15. タスクが起動していることを確認
    CleanShot 2025-06-06 at 14.33.18@2x.png
  16. 上記の1~15と同様の手順で、下記も作成
    • test-cluster-GuardDutyManaged-none-RuntimeMonitoring-disable

2. GuardDuty Runtime Monitoring の有効化

  1. GuardDutyのコンソールを開く
  2. GuardDutyコンソールの左側ナビゲーションから [ ランタイムモニタリング ] を選択
    CleanShot 2025-06-09 at 20.25.57.png
  3. ランタイムモニタリングの [ 有効にする ] を選択
  4. 確認画面で [ 確認 ] を選択
  5. AWS Fargate (ECS のみ)の [ 有効にする ] を選択
  6. 確認画面で [ 確認 ] を選択
    CleanShot 2025-06-09 at 20.28.42.png

3. GuardDuty Runtime Monitoring 有効化後 ECS作成

  1. [ 1. GuardDuty Runtime Monitoring 有効化前 ECS作成 ] と同等の手順で、下記を作成
    • test-cluster-GuardDutyManaged-false-RuntimeMonitoring-enable
    • test-cluster-GuardDutyManaged-none-RuntimeMonitoring-enable

4. 結果確認

  1. Runtime Monitoring有効化前 既存リソース × GuardDutyManaged=falseタグあり
    (test-cluster-GuardDutyManaged-false-RuntimeMonitoring-disable)

    そのままでは自動エージェントが有効化されません。
    CleanShot 2025-06-09 at 21.17.07.png

    有効化以前のECSサービスで、自動エージェントを有効化するにはタスクを更新する必要があります。この際、タスクの定義は変更されません。
    試しに新しいデプロイの強制を行うと、下記のようにエージェントコンテナが追加されます。
    CleanShot 2025-06-09 at 21.24.22.png

  2. Runtime Monitoring有効化前 既存リソース × GuardDutyManaged=falseタグなし
    (test-cluster-GuardDutyManaged-none-RuntimeMonitoring-disable)

    エージェントコンテナは起動していません。
    CleanShot 2025-06-09 at 21.25.31.png

    こちらも念の為、新しいデプロイの強制を試してみます。
    除外設定をしているためエージェントコンテナは起動しません。
    CleanShot 2025-06-09 at 21.30.20.png

  3. Runtime Monitoring有効化後 新規リソース × GuardDutyManaged=falseタグあり
    (test-cluster-GuardDutyManaged-false-RuntimeMonitoring-eable)

    こちらは、除外設定をしているためエージェントコンテナは起動しません。
    CleanShot 2025-06-09 at 21.32.08.png

  4. Runtime Monitoring有効化後 新規リソース × GuardDutyManaged=falseタグなし
    (test-cluster-GuardDutyManaged-none-RuntimeMonitoring-eable)

    こちらは、除外設定をしていないため起動時にエージェントコンテナが起動します。
    CleanShot 2025-06-09 at 21.32.45.png

検証結果

検証結果のサマリです。

Runtime Monitoring GuardDutyManaged=falseタグ 監視対象 備考
無効 あり 監視対象外
無効 なし 監視対象 Runtime Monitoring 有効化後に再デプロイが必要
有効 あり 監視対象外 起動時にタグの付与が必要
有効 なし 監視対象

あとがき

今回の検証により、Runtime Monitoring有効化後に新規作成されるECSクラスターに対しても、GuardDutyManaged=falseタグによる監視対象からの除外制御が可能であることが確認できました。
想定通りの結果ではありましたが、仕様について確証を得ることができ良かったです。

最後までお読みいただき、ありがとうございました!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.