CloudTrail Insightsとは
アカウント内のAPIアクティビティを記録し、通常と異なる動作を検知しログ出力からSNSなどと連携して通知を行える。
グローバルではなく1つのリージョンで発生するイベントを分析する。
通常と異なるとは
過去データを通常とし、現在発生したAPIイベントと比較する。
GuardDutyとの違い
目的:
CloudTrail Insights:クラウド環境における異常なAPIアクティビティの検出
GuardDuty:クラウド環境における脅威検出
機能:
CloudTrail Insights:CloudTrailのデータを分析し、通常の動作から外れる異常なAPIコールパターンを特定する。これには、異常に高いリソース作成や削除、急激な権限変更などが含まれる。
GuardDuty:機械学習や異常検出技術を用いて、AWSアカウント内の潜在的な脅威をリアルタイムで検出する。ネットワークアクティビティ、AWS管理コンソールへの不正アクセス、IAM権限の不正使用などの異常を検出する。
データソース:
CloudTrail Insights:AWS CloudTrailログ
GuardDuty:VPC Flow Logs、AWS CloudTrail、DNSログなど
主な用途:
CloudTrail Insights:異常なAPIアクティビティの検出、運用上の問題のトラブルシューティング、セキュリティインシデントの発見
GuardDuty:自動脅威検出、セキュリティイベントの監視、異常行動の分析
やること
CloudTrail Insightsを有効化し、EventBridgeでログを検知し、SNSでメールを通知する。
前提
CloudTrailの証跡が作成されていること。
※作成されていない場合下記を実施する。
AWS CloudTrail 証跡を有効化してみた - あめがえるのITブログ
通知用SNSトピックを作成していること。
実践!
1.CloudTrail Insights有効化
1-1.[AWS] - [CloudTrail]
1-2.[証跡] - 証跡を選択
1-3.Insightsイベントの[編集]
1-4.下記をチェック
Insights イベント:✅
API コールレート:✅
API エラー率:✅
1-5.[変更の保存]
2.EventBridge設定
2-1.[AWS] - [EventBridge] - [ルール]
2-2.[ルールを作成]
2-3.下記を選択
名前:ルール名
説明 - オプション:任意
イベントパス:default
選択したイベントパスでルールを有効にする:✅
ルールタイプ:イベントパターンを持つルール:✅
2-4.[次へ]
2-5.下記を選択
イベントソース:その他
メソッド:カスタムパターン(JSONエディタ)
イベントパターン:
{ "detail": { "eventType": ["AwsCloudTrailInsight"] } }
2-6.[次へ]
2-7.下記を選択
ターゲットタイプ:AWSのサービス
ターゲットを選択:SNS トピック
トピック:事前に作成しているSNSトピック
2-8.[次へ]
2-9.[次へ]
2-10.[ルールの作成]
3.動作確認
3-1.CloudShellで通常では発生しないAPIを発生させる
3-1-1.[CloudShell]
3-1-2.下記を実行
※存在しないEC2インスタンスの詳細を10回確認する
for i in {1..10}; do aws ec2 describe-instances --instance-ids i-xxxxxxxxxx; done
3-1-3.APIレート異常のメールを受信すること
※設定を有効にしてから通知されるまで最大36時間かかるので気長に待ちましょう。
※下記が受信するメール。分かりづらいので後でカスタマイズします。
3-2.CloudTrail Insightsイベント確認
※詳細はこちらのほうが見やすい
3-2-1.[AWS] - [CloudTrail] - [Insights]
感想
よほど安定している本番環境などにはよさどうだが検証・開発環境などのよく操作される環境では誤検知が多そう。