目次
はじめに
サーバ・ネットワーク監視運用業務において、AWSを利用している企業も多いのではないでしょうか。
AWSでは、セキュリティへの権威を検出するAmazon GuardDutyというサービスが提供されています。
しかし、Amazon GuardDutyからのイベント通知にこんな悩みを感じることはありませんか?
- どのアカウントからのイベント通知なのかがわからない
- 通知が英語なので翻訳しないといけない
- イベントの詳細ログをいちいち確認するのが面倒
今回はこのような
「GuardDutyからのイベント通知がわかりにくい!」
という問題を解決するために、本メディア運営企業である株式会社コムスクエアのIT運用自動化ツール「ロボシュタイン」を利用した解決方法を紹介いたします。
目次
Amazon GuardDutyとは?
Amazon GuardDutyは、AWS環境全体を継続的に監視するマネージド型権威検出サービスで、AWS環境を利用している方には欠かせないセキュリティサービスとなっています。GuardDutyは、イベントを検知後早急にイベントの解析や脅威の有無を確認し、可視化と修復のための詳細なセキュリティ検出結果を提供しています。
「Amazon GuardDuty」公式サイトはこちら
Amazon GuardDuty利用における課題
Amazon GuardDutyはAWSを利用する上でとても便利なセキュリティサービスです。しかしイベントの通知内容には、最初に挙げたような
- どのアカウントからのイベント通知なのかがわからない
- 通知が英語なので翻訳しないといけない
- イベントの詳細ログをいちいち確認するのが面倒
という課題があり、私たちにとって「わかりにくい」通知が届くこともしばしばあります。それぞれの課題の具体例を見てみましょう。
- どのアカウントからのイベント通知なのかがわからない
例)Slackの一つのチャンネルに約50アカウント分のGuardDuty通知を集約している。このとき、届く通知の中でどのアカウントかを判別する情報が「アカウントID(12桁の数字)」のみで、一目見ただけではどのアカウントからの通知かの判別が付けづらい。結果として各アカウントの担当者が対応できず、AWSインフラ担当が随時各プロダクト担当者へ確認している。
- 通知が英語なので翻訳しないといけない
例)イベント通知が英語で届くため、内容を把握するためには毎回手動で翻訳しなければならない。
- イベントの詳細ログをいちいち確認するのが面倒
例)一次調査で必要な情報である「誰によって」や「どんなことが行われた」がイベント通知からだとわからず、AWSアカウントにログイン後、詳細ログを確認する必要がある。
ロボシュタインで解決
これらの問題を、IT運用自動化ツール「ロボシュタイン」を利用して解決していきたいと思います!今回は、一度自動化を設定すれば整理された通知がSlackへ自動で送信されるフローを作成しました。
IT運用自動化ツール「ロボシュタイン」とは何なのかというところから、解決フローの例と解説、解決後の通知例も紹介しておりますので、ぜひ参考にしてください!
ロボシュタインとは
ロボシュタインとは、監視・インシデント管理・チャットなどのIT運用で利用するツールを「つなぎ」、システム運用における一連のプロセスを簡単に自動化・管理できるサービスです。
ロボシュタインはSaaS型のサービスで、クラウド・オンプレミス問わず対応していることや、各種機器やサービスとの親和性が高いことで知られています。
それにより、今回紹介するAmazon GuardDutyやSlackはもちろん、それ以外のサービスとの連携も簡単に行うことができます。
また自動化のためのフローの構築は、ドラッグアンドドロップで直感的に操作することでもJavascriptプログラムを記述することでも実現できるため、オペレーターからプロフェッショナルエンジニアまで、幅広いニーズに応えることが可能です。
IT運用自動化ツール「ロボシュタイン」公式サイトはこちら
さらに詳しく知りたい方はこちら(ページ下部へ移動します)
解決フローの例と解説
それでは、実際にロボシュタインを利用して課題を解決する手順を見てみましょう。
GuardDutyのイベント通知のわかりにくい部分を解決するフローを、ロボシュタインのフローエディターで作成します。サンプルフローは以下の通りです。
こちらのサンプルフローでは次のようなことが行われています。
1.GuardDutyから通知を取得します。
2.通知されたAWSアカウントのIDを参照し、自社管理アカウント一覧ファイルからアカウントエイリアスを取得して、誰の操作に対する通知かをわかりやすく改善します。
3.ChatGPTを使用して、インフラ担当者にとって通知内容がわかりやすいようにSlack文を作成します。この時、以下の点がわかりやすくなるようにします。
・英語の通知内容を日本語訳へ変更
・発生した事象について「いつ」、「誰によって」、「何が行われた」かがわかるように事象の説明を追記
・発生した事象への対策があればその事象を追記
4.作成したSlack文を実際にSlackへ通知します。
フロー内でのChatGPTへのリクエストプロンプトは以下のように設定しました。
{
"model": "gpt-4o",
"messages":
[
{
"role": "system",
"content": "あなたはAWSとセキュリティ対策に詳しい日本人のエンジニアです。"
},
{
"role": "system",
"content": "以下のGuardDutyの検出結果について、以下の点を考慮して説明を提示してください。\n - 発生した事象\n - いつ、誰によって、何がされたかが分かるようにしてください\n - 日付はUTC、JST両方のタイムゾーンで出力してください\n - Resourceの中身を元にしたユーザーの情報(AccessKeyDetailsが出力されている場合は、PrincipalIdにユーザーIDが含まれている。)\n - 取りうる対策\n"
},
{
"role": "system",
"content": "アカウントID:{{{notify.accountId}}}のエイリアスは{{{notify.accountAlias}}}です。この情報も出力結果に含むようにしてください。"
},
{
"role": "user",
"content": "{{chatgpt}}"
},
{
"role": "system",
"content": "出力内容はmarkdownの記号を利用せずに、plain_textにしてください。それでも読みやすくなるように整形してください。"
},
{
"role": "system",
"content": "また、HTMLエスケープが必要な特殊文字・記号は、結果が読みづらくなるため出力結果に含めないでください。"
}
]
}
この自動化フローとプロンプトをロボシュタインに適用すると、先ほどの3つの課題を次のように改善することができます。
- どのアカウントからのイベント通知なのかがわからない
→ロボシュタインからのSlackメッセージでアカウントエイリアス(アカウントの別名)がわかるように!これにより、各プロダクトの担当者が直接担当のアカウントのイベント調査を行えるようになります。
- 通知が英語なので翻訳しないといけない
→ChatGPTが自動で翻訳を行うように設定することで、Slackに届くメッセージが日本語になるように!これにより、翻訳を毎回行う手間を省けるようになります。
- イベントの詳細ログをいちいち確認するのが面倒
→通知本文に一次調査で必要な情報を盛り込むようにし、AWSアカウントにログインせずとも内容の確認を可能に!これにより、1イベント10分程度かかってしまっていた対応工数を削減することができます。
解決後の変化
先ほどのフローをデプロイし実行可能な状態にすると、Slackにイベント通知が届くようになりました。
届いた通知を見てみると、わかりにくかった通知が一目で理解できるようになっています。
ロボシュタインを利用してこれらの自動化を行うことで、AIによるイベント内容の分析だけではなく、管理資料のスプレッドシートを参照することや、出力内容の細かな調整をすることができます。
また一度設定をしてしまえばその後の一次調査を自動化できるため、運用が大幅に楽になり、作業の効率化を図ることができます。
ロボシュタインについてさらに詳しく
ロボシュタインには以下のように、自動化をより効率的にする機能が多く備わっています。
今回はAmazon GuardDutyから直接イベント通知を取得しSlackへ通知しましたが、このほかにも様々な方法やツールでの情報の受け渡しが可能です。
ほかにも、ロボシュタインでは以下のような自動化を行うことができます。
- アラートメールの自動振り分けと一次対応
- エスカレーション電話・チャット通知自動化
- SSL証明書の管理の自動化
ロボシュタインによるIT運用自動化についてより詳しく知りたい方は、資料のダウンロードをお忘れなく!
ロボシュタインの資料ダウンロードはこちらから!
今回の記事が貴社のお役に立てれば幸いです。