Amazon GuardDutyの検出結果を随時Slackに送信する (EventBridge、Amazon SNS、AWS Chatbot連携)

Amazon GuardDutyの検出結果を随時Slackに送信する (EventBridge、Amazon SNS、AWS Chatbot連携)

Amazon GuardDutyは、AWSアカウントの脅威を検出するセキュリティサービスです。このブログではその使用方法についてご紹介させていただきます。

こんにちは、クラスメソッドタイランドのPOPです。

構成図と使うサービス

tokyo_region_chatbot_to_slack

Amazon GuardDuty

Amazon GuardDutyは、AWS アカウントとワークロードを継続的にモニタリングして悪意のあるアクティビティがないかを確認し、可視化と修復のための詳細なセキュリティ検出結果を提供する脅威検出サービスです。

Amazon EventBridge

Amazon EventBridgeは、アプリケーションをさまざまなソースからのデータと接続するサーバーレスのイベントバスサービスです。

Amazon SNS

Amazon SNS (Simple Notification Service) は、アプリケーション間でメッセージを配信するためのフルマネージド型のパブリッシュ/サブスクライブメッセージングサービスです。

Amazon SNSについては、以下のリンクを参照してください。
https://dev.classmethod.jp/articles/re-introduction-2022-sns/

AWS Chatbot

AWS Chatbotは、Slack、Amazon Chime、Microsoft Teamsと連携し、AWSリソースの監視や運用を可能にするインタラクティブなチャットボットサービスです。

GuardDutyを有効にする

今後は東京リージョン「東京 ap-northeast-1」のAWSマネジメントコンソール上で実行します。
region_tokyo-select

「GuardDuty」を検索して選択します。
service_guardduty-search

GuardDutyサービス画面に移動後に、「Amazon GuardDuty - すべての機能」を選択し、「今すぐ始める」をクリックします。
service_guardduty-create_bottun

「GuardDutyを有効にする」をクリックします。
create_guardduty_202412-1

有効が完了すると、このような画面が表示されます。
create_guardduty_202412-2

Slackでチャンネルを作成

GuardDutyで検出された脅威を通知するためのSlackチャンネルを作成します。

Slackを開き、「チャンネル」見出しの下にある「チャンネルを追加する」をクリックし、「新しいチャンネルを作成する」を選択します。
create_channel_in_slack_for_guardduty-1

次に「次へ」をクリックします。
create_channel_in_slack_for_guardduty-2

「チャンネル名」欄にお好みの名前を入力し、「作成」をクリックします。

create_channel_in_slack_for_guardduty-3

「✕」または「後でする」をクリックできます。
create_channel_in_slack_for_guardduty-4

作成すると、このようなチャンネルが得られます。
create_channel_in_slack_for_guardduty-5

Amazon SNSを設定

「SNS」を検索し、「Simple Notification Service」を選択します。
service_sns-search

「次のステップ」をクリックします。
service_sns-create_bottun

次に、トピックの作成画面で「詳細」を次のように設定します。
・タイプ:「スタンダード」
・名前:「pop-guardduty-test-topic」(任意の名前を入力してください)
・表示名 - オプション:「pop-guardduty-test-topic」(任意の名前を入力してください)

・一番下までスクロールし、「トピックの作成」をクリックします。
create_sns_for_guardduty-1

AWS Chatbotを設定

「AWS Chatbot」を検索して選択します。
service_aws_chatbot-search

次に「チャットクライアントを設定」を以下のように設定します。
・チャットクライアント:「Slack」
・「クライアントを設定」をクリックします。
service_aws_chatbot-create_button

右上でワークスペースを選択し、リンクが選択したワークスペースに属しているかどうかを確認して、「許可する」をクリックします。
connect_aws_chatbot_to_slack-1

作成すると、このような画面が表示されます。
次に、「設定済みチャネル」トピックの「新しいチャネルを設定」をクリックします。
connect_aws_chatbot_to_slack-2

「Slack チャネルを設定」画面を以下のように設定します。
設定の詳細 のトピック
・設定名:「pop_guardduty_test」(任意の名前を入力してください)

Slack チャネル のトピック
・チャネルタイプ:「⦿ パブリック」(プライベートに設定したい場合は、こちらの記事リンク「AWS Chatbotを使ってSlackのプライベートチャンネルに連携できないときの対処方法」を参照してください)
・パブリックチャネル名:「pop_guardduty_test」など、先ほど作成したSlack でチャンネルを作成を選択します。
connect_aws_chatbot_to_slack-3

アクセス許可 のトピック
ロール名:「pop_guardduty_test_role」(任意のロール名を入力してください)

チャネルガードレールポリシー のトピック
ポリシー名:「AdministratorAccess」を検索し、「✅ AdministratorAccess」にチェックを入れます。
connect_aws_chatbot_to_slack-4

通知 - オプション のトピック
SNS トピック
・リージョン 1:「アジアパシフィック - 東京」
・トピック 1:「✅ pop-guardduty-test-topic」など、先ほどAmazon SNSで作成したトピックを検索してチェックを入れます。

・一番右下に「設定」をクリックします。
connect_aws_chatbot_to_slack-5

Slack チャネルの設定が完了すると、次のような画面が表示されます。
connect_aws_chatbot_to_slack-6

メッセージ送信のテスト

AWS ChatbotをSlackのチャネルに接続できたので、メッセージ送信をテストしてみましょう。

作成した「設定名」をクリックします。(例: "tinnakorn_guardduty_test")
connect_aws_chatbot_to_slack-7

「テストメッセージを送信」をクリックすると、上部のタブに次のような通知が表示されます。次に、Slackのチャンネルで通知を確認します。
connect_aws_chatbot_to_slack-8

このように「! AWS Chatbot Notification | Test Message | Account: xxxxxxxxxx」という通知が届いたら、AWS ChatbotからSlackへの接続設定は完了です。
connect_aws_chatbot_to_slack-9

Amazon SNSの設定を確認

サブスクリプションでの登録結果を確認します。

「Amazon SNS」>「トピック」>「Your topic name (例: "pop-guardduty-test-topic"」に移動します。
次に「サブスクリプション」タブを見ると、サブスクリプションが自動的に作成されていることがわかります。
以上、AWS ChatbotはAmazon SNSと連携して対応することができました。
connect_aws_chatbot_to_slack-10

Amazon EventBridgeを設定

この設定により、Amazon EventBridgeにルールが作成します。

「Amazon EventBridge」を検索して選択します。
service_amazon_eventbridge-search

「イベントブリッジルール」を選択し、「ルールを作成」をクリックします。
service_amazon_eventbridge-create_button

ステップ 1
ルールの詳細を定義
ルールの詳細
・名前:「pop_guardduty_test_rule」(任意の名前を入力してください)
・説明 - オプション:「pop_guardduty_test_rule」(任意の説明を入力してください)
・ルールタイプ:「◎ イベントパターンを持つルール」
・「次へ」をクリックします。
create_amazon_eventBridge_for_guardduty-1

ステップ 2
イベントパターンを構築
イベントパターン」セクションまで下にスクロールし、次のように設定します。
・イベントソース:「AWS のサービス」
・AWS のサービス:「GuardDuty」(選択すると、イベントタイプのオプションが以下に表示されます)
・イベントタイプ:「GuardDuty Finding」(選択すると、イベントパターンにコードが自動的に表示されます)
・「次へ」をクリックします。
create_amazon_eventBridge_for_guardduty-2

ステップ 3
ターゲットを選択
ターゲット1
・ターゲットタイプ:「AWS のサービス」
・ターゲットを選択:「SNS トピック」(選択すると、トピックが以下に表示されます)
・トピック:「pop-guardduty-test-topic」など、Amazon SNSで作成したトピックを検索して選択します。
・「次へ」をクリックします。
create_amazon_eventBridge_for_guardduty-3

ステップ 4 - オプション
タグを設定
・「次へ」をクリックします。

ステップ 5
レビューと作成
・ステップ 1 ~ ステップ 4 の設定情報を確認し、「ルールの作成」をクリックします。

作成するとこのような画面が表示されます。
次に、作成した「ルール」を検索してクリックします。
create_amazon_eventBridge_for_guardduty-4

この画面に移動後に、このような画面が表示されます。
以上で、すべての設定が完了しました。次のステップでは、GuardDutyの検出結果をSlackに送信するテストを行います。
create_amazon_eventBridge_for_guardduty-5

Amazon GuardDutyの検出結果のサンプルをSlackに送信するテスト

Amazon GuardDutyサービス画面に移動し、左メニューから「設定」をクリックします。
そして、「検出結果のサンプル」セクションまで下にスクロールし、「検出結果サンプルの生成」をクリックします。
test_sent_message_to_slack-1

Amazon GuardDuty で検出結果を確認する

検出結果がSlackに送信されるのを待っている間に、まずAmazon GuardDutyの検出結果を確認してみましょう。

Amazon GuardDutyサービス画面に移動し、左側のメニューから「検出結果」を選択します。
この画面にはいくつかの検出結果のサンプルがあることがわかります。前のステップで、これらの検出結果サンプルをSlackに作成しました。次のステップで検出結果を確認します。
test_sent_message_to_slack-2

Slackに送信された検出結果を確認する

Slackを開き、作成したチャネル (例:「# pop_guardduty_test」) に移動します。検出結果が送信されたことがわかります。
check_sent_message_to_slack-1
check_sent_message_to_slack-2
check_sent_message_to_slack-3

これで検出結果のSlackへの送信が完了しました。

検出結果タイプ

検出結果タイプについては、以下のリンクを参照してください。

まとめ

Amazon GuardDutyは、セキュリティという重要な位置づけにあるサービスとして、継続的にアップデートされています。
お客様のビジネスセキュリティを確保するため、少なくともメインで利用しているリージョンでの有効化をお勧めします。
また、可能であれば、すべてのリージョンで有効にすることで、さらなるセキュリティ強化を実現することができます。

この記事がどなたかのお役に立てば幸いです。
以上、クラスメソッドタイランドのPOP(Tinnakorn Maneewong)でしたっ!

関連記事

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.