こんにちは、Bellです。
今回は初学者から初心者までAWSユーザなら知っておくべきアカウントの保護方法についてです。
アカウント保護って?
基本的にAWSアカウントは個人や組織のために存在するわけなのですが、ときに悪意ある外部のユーザに利用されてしまう懸念があります。
サーバへの不正アクセスだったり、IAMユーザの不正利用だったり不正アクセスの方法は様々であり、そういった悪意ある第三者からアカウントを保護する必要があるわけですね。
GuardDuty を使ってアカウントを保護する
アカウント保護の手法はいくつかあるわけなのですが、今回は GuardDuty を使って不正なアクセスを検知してみましょう。
AWS コンソールにサインインして GuardDuty のページを開きます。

利用が初めての場合は 今すぐ始める ボタンから設定しましょう

GuardDuty 用に権限を作成します。GuardDuty では各種ログを分析することで不正アクセスを検知するため、ログの読み取り権限が必要になります。
付与される権限は サービスロールのアクセス権限の表示 ボタンから確認しましょう。
GuardDuty を有効化する ボタンから有効化しましょう。

これですべてではありませんがAWS側が用意している検査対象の不正アクセスを検知することができるようになりました。
ですが、このままでは検知できても利用者が気がつくことができませんので通知の設定をしていきましょう。
流れとしては
- GuardDuty で不正アクセスを検知
- EventBridge でイベントを発火
- SNS で通知
の3段階です。
1つ目の GuardDuty で不正アクセスを検知 はすでに設定しているのでイベント発火の設定をします。
がしかし、先に SNS トピックを作成しておきましょう。 EventBridge のルール作成時に必要になるためです。
SNS を検索して SNS の画面に行きましょう。

左メニューのトピックからトピックの一覧を表示して トピックの作成 ボタンから作成していきましょう。
今回は以下の内容で作成しました。
- タイプ
- スタンダード
- 名前
- guard-duty-notification
- 表示名
- guard-duty-notification

作成したトピックにサブスクリプションを登録します。
guard-duty-notification を選んで サブスクリプションの作成 ボタンから登録します。
今回は特定のメールアドレス宛に通知することにしました。設定したメールアドレス宛に送信されてくる確認メールから承認しておきます。

これで通知先の作成ができました。
次に EventBridge のルールを作成していきます。
EventBridge を検索して EventBridge の画面にいきましょう。

初回の場合はルールを作成するボタンから EventBridge のルールを作成します。

内容は以下で作成しました。
- 名前
- guard-duty-notification
- イベントパス
- default
- ルールタイプ
- イベントパターンを持つルール
- イベントソース
- AWS イベントまたは EventBridge パートナーイベント
- サンプルイベントタイプ
- AWS イベント
- サンプルイベント
- GuardDuty Finding
- Creation method
- Use pattern form
- イベントパターン
- イベントソース
- AWS のサービス
- AWS のサービス
- GuardDuty
- イベントタイプ
- GuardDuty Finding
- イベントソース
- ターゲット 1
- ターゲットタイプ
- AWS のサービス
- ターゲットを選択
- SNS トピック
- トピック
- guard-duty-notification ※先程作成したトピックを設定します
- タグ
- 今回は省略
- ターゲットタイプ




これで通知設定ができました。
通知が送られるか試してみましょう。
GuardDuty のページに戻り左メニューの 設定 を開きます。
検出結果サンプルの作成 ボタンからサンプルを作成しましょう。

画面上部に 検出結果サンプルが正常に生成されました のメッセージが出たら左メニューの 検出結果 を開きます。
検出結果タイプに 例 とついた結果がたくさん出力されています。
SNSに設定したメールを見るとたくさん通知されいることが確認できますね。
おわりに
いかがだったでしょうか?
AWSの理解度にかかわらず、不正利用がないようにアカウントを保護する必要があるわけですが、この GuardDuty を利用してみてはいかがでしょうか?
(さらにこのメール通知を見逃さないようなサービスが出るといいのですが・・・ 今後のAWSさんに期待ですね!)
ではまた。