Amazon GuardDutyの結果をメールで受け取る手順
CI部3課の水本です。
過去にお客様からの依頼で「GuardDutyの結果をメールで通知できるようにしたい」とのリクエストがありましたので手順をお渡ししたのですが、本ブログでも手順を紹介したいと思います。
「GuardDuty、導入してはいるがそのまま放置してる」など、うまく運用に活かせていない方は参考にしてみてください。
※本設定はリージョン毎に必要ですので、複数リージョンでGuardDutyを導入された方は、都度リージョンを切替して設定をしてください。
概要
- Amazon SNSで、トピックとサブスクリプションを設定します。
- CloudWatch Eventsでルールを作成し、ターゲットをSNSにします。
手順
Amazon SNSの準備
トピックを作成する
- Amazon SNS コンソールを開きます。
- 「トピックの作成」セクションで、「トピック名」 に名前 (MyTopic など) を入力します。
- これがメールの送信者名になります。
- 「トピックの作成」を選択すると、トピックが作成されます。
サブスクリプションを作成する
- Amazon SNS コンソールから「サブスクリプション」へ移動します。
- 「サブスクリプションの作成」セクションで、「トピックARN=前手順で作成したトピック」を指定します。
- 「プロトコル」を「Eメール」とし、「エンドポイント」にメールアドレスを指定します。複数アドレスは指定できませんので、メーリングリストなどをご用意ください。
- 「サブスクリプションの作成」を選択します。
- トピック名の送信元でサブスクリプションの承認メールが届きますので、「Confirm subscription」を選択します。
- 準備は以上です。
CloudWatch イベントルールの作成
- CloudWatch コンソールを開きます。
- ナビゲーションペインで、「ルール」、「ルールの作成」 の順に選択します。
- 「サービス名」メニューから、「GuardDuty」 を選択します。
- 「イベントタイプ」 メニューから、「GuardDuty Finding」 を選択します。
- 「イベントパターンのプレビュー」 で、「編集」 をクリックします。
- 取得したいイベントパターンを定義します。
- イベントパターンはjsonでしか定義できない為、サンプルを用意しています。
- 以下の4つから利用したいサンプル1つをコピーして「イベントパターンのプレビュー」 に貼り付け、「保存」 をクリックします。
【サンプル】GuardDutyの「検索」をすべて対象とする
{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ] }
【サンプル】重要度高(7.0~8.9)の検索に限定
{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail" : { "severity": [ 7.0,7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,8.0,8.1,8.2,8.3,8.4,8.5,8.6,8.7,8.8,8.9 ] } }
【サンプル】重要度中(4.0~6.9)の検索に限定
{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail" : { "severity": [ 4.0,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5.0,5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,6.0,6.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9 ] } }
【サンプル】重要度低(0.1~3.9)の検索に限定
{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail" : { "severity": [ 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9 ] } }
- 「ターゲット」 で、「ターゲットの追加」 をクリックします。
- ターゲットの種類は、「SNSトピック」 を選択します。
- 事前に作成したSNSトピックを選択します。
- 「入力の設定」 を展開し、「インプットトランスフォーマー」 を選択します。
- 次のコードをコピーして「入力パス」に貼り付けます。
{ "severity": "$.detail.severity", "Finding_ID": "$.detail.id", "eventFirstSeen": "$.detail.service.eventFirstSeen", "eventLastSeen": "$.detail.service.eventLastSeen", "count": "$.detail.service.count", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
- 次のコードをコピーして 「入力テンプレート」 に貼り付けます。
- このテンプレート内容でメールが届きます。
"重要度 <severity> のGuardDuty結果が発生しました。検索タイプ: <Finding_Type> リージョン: <region> タイプの説明: <Finding_description> 初回発生日時: <eventFirstSeen> 最新発生日時 <eventLastSeen> 発生数 <count> 詳細はGuardDuty コンソール( https://console.aws.amazon.com/guardduty/home?region=#/findings?search=id%3D )を確認してください。"
- 「設定の詳細」 を選択します。
- 「ルールの詳細を設定する」 で、ルールの 「名前」 と 「説明」 を入力した後、「ルールの作成」 をクリックします。
GuardDutyの通知テスト
- GuardDutyコンソールから、「設定」を選択します。
- 「結果のサンプル」セクションで、「結果のサンプルの生成」を選択します。
- サンプル結果が56個挿入されます。
- 最短で5分(GuardDutyからCloudWatch Eventsへの連携上経過)後に、下記のサンプルのようなEメールが届けばOKです。
- 送信者名はトピック名で届きます。
通知メールサンプル
"重要度 5 のGuardDutyイベントです。検索タイプ: Persistence:IAMUser/UserPermis -- If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe: https://sns.ap-northeast-1.ama Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support |
手順は以上です。