Amazon GuardDuty Runtime Monitoring の ECS の除外タグの挙動を確認してみた
こんにちは!コンサルティング部のくろすけです!
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つのパターンで実際に検証を行いました。
- Runtime Monitoring有効化前 既存リソース × GuardDutyManaged=falseタグあり
- Runtime Monitoring有効化前 既存リソース × GuardDutyManaged=falseタグなし
- Runtime Monitoring有効化後 新規リソース × GuardDutyManaged=falseタグあり
- Runtime Monitoring有効化後 新規リソース × GuardDutyManaged=falseタグなし
検証手順
1. GuardDuty Runtime Monitoring 有効化前 ECS作成
- ECSのコンソールを開く
- 左側のナビゲーションから [ クラスター ] を選択
- [ クラスターの作成 ] を選択
- クラスター名欄に [ test-cluster-GuardDutyManaged-false-RuntimeMonitoring-disable ] を入力
- [ タグ ] セクションを展開
- [ タグの追加 ] にて、キー欄に [ GuardDutyManaged ] を入力し、値欄に [ false ] を入力
- [ 作成 ] を選択
- [ test-cluster-GuardDutyManaged-false-RuntimeMonitoring-disable ] を選択
- サービスセクションの [ 作成 ] を選択
- コンピューティングオプションの [ 起動タイプ ] を選択
- ネットワーキングを入力
- [ 作成 ] を選択
- [ タスク ] タブを選択
- 表示されたタスクIDを選択してタスク詳細画面に移動
- タスクが起動していることを確認
- 上記の1~15と同様の手順で、下記も作成
- test-cluster-GuardDutyManaged-none-RuntimeMonitoring-disable
2. GuardDuty Runtime Monitoring の有効化
- GuardDutyのコンソールを開く
- GuardDutyコンソールの左側ナビゲーションから [ ランタイムモニタリング ] を選択
- ランタイムモニタリングの [ 有効にする ] を選択
- 確認画面で [ 確認 ] を選択
- AWS Fargate (ECS のみ)の [ 有効にする ] を選択
- 確認画面で [ 確認 ] を選択
3. GuardDuty Runtime Monitoring 有効化後 ECS作成
- [ 1. GuardDuty Runtime Monitoring 有効化前 ECS作成 ] と同等の手順で、下記を作成
- test-cluster-GuardDutyManaged-false-RuntimeMonitoring-enable
- test-cluster-GuardDutyManaged-none-RuntimeMonitoring-enable
4. 結果確認
-
Runtime Monitoring有効化前 既存リソース × GuardDutyManaged=falseタグあり
(test-cluster-GuardDutyManaged-false-RuntimeMonitoring-disable)そのままでは自動エージェントが有効化されません。
有効化以前のECSサービスで、自動エージェントを有効化するにはタスクを更新する必要があります。この際、タスクの定義は変更されません。
試しに新しいデプロイの強制を行うと、下記のようにエージェントコンテナが追加されます。
-
Runtime Monitoring有効化前 既存リソース × GuardDutyManaged=falseタグなし
(test-cluster-GuardDutyManaged-none-RuntimeMonitoring-disable)エージェントコンテナは起動していません。
こちらも念の為、新しいデプロイの強制を試してみます。
除外設定をしているためエージェントコンテナは起動しません。
-
Runtime Monitoring有効化後 新規リソース × GuardDutyManaged=falseタグあり
(test-cluster-GuardDutyManaged-false-RuntimeMonitoring-eable)こちらは、除外設定をしているためエージェントコンテナは起動しません。
-
Runtime Monitoring有効化後 新規リソース × GuardDutyManaged=falseタグなし
(test-cluster-GuardDutyManaged-none-RuntimeMonitoring-eable)こちらは、除外設定をしていないため起動時にエージェントコンテナが起動します。
検証結果
検証結果のサマリです。
Runtime Monitoring | GuardDutyManaged=falseタグ | 監視対象 | 備考 |
---|---|---|---|
無効 | あり | 監視対象外 | |
無効 | なし | 監視対象 | Runtime Monitoring 有効化後に再デプロイが必要 |
有効 | あり | 監視対象外 | 起動時にタグの付与が必要 |
有効 | なし | 監視対象 |
あとがき
今回の検証により、Runtime Monitoring有効化後に新規作成されるECSクラスターに対しても、GuardDutyManaged=false
タグによる監視対象からの除外制御が可能であることが確認できました。
想定通りの結果ではありましたが、仕様について確証を得ることができ良かったです。
最後までお読みいただき、ありがとうございました!